Redis
 sql >> Baza danych >  >> NoSQL >> Redis

Redis SortedSet:Jak uzyskać wartości w kolejności numerycznej, a nie alfabetycznej, gdy dwie wartości mają ten sam wynik?

Gdy elementy posortowanego zestawu mają ten sam wynik, są one sortowane leksykograficznie. Nie ma prostego sposobu, aby uporządkować je inaczej AFAIK, ale możesz łatwo przeprowadzić sortowanie po stronie klienta. Alternatywnie możesz przygotować krótki skrypt Lua, który zrobi to za Ciebie na serwerze.

Istnieje nieco hackowy sposób, w jaki możesz uciec od tego, czego chcesz, bez uciekania się do powyższych podejść. W oparciu o podany przez Ciebie przykład i zakładając, że zarówno pozycja, jak i identyfikator użytkownika są liczbami całkowitymi, możesz użyć wyników, które są kombinacją obu, na przykład:

zadd game_rank 550006435 6435
zadd game_rank 556088561 6088561
zadd game_rank 550608825 608825

To pozwoli ci robić zakresy i otrzymasz sortowanie "numeryczne" dla każdej rangi (np. z zrangebyscore game_rank 550000000 559999999 ).




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Pomysły na skalowanie czatu w AWS?

  2. Skróć czas wykonywania zadań sidekiq

  3. Jak sprawić, by Redis wybrał politykę eksmisji LRU tylko dla niektórych kluczy?

  4. Kiedy używać magazynu klucza/wartości, takiego jak Redis, zamiast/obok bazy danych SQL?

  5. Tworzenie słuchacza redis - możliwe w php?