Redis
 sql >> база данни >  >> NoSQL >> Redis

Redis SortedSet:Как да получите стойности в числов ред, а не по азбучен ред, когато две стойности имат еднакъв резултат?

Когато членовете на сортирания набор имат еднакъв резултат, те се сортират лексикографски. Няма лесен начин да ги поръчате по различен начин AFAIK, но можете лесно да извършите сортирането от страна на клиента. Като алтернатива можете да приготвите кратък Lua скрипт, който прави това вместо вас на сървъра.

Има леко хакски начин, по който можете да се разминете с това, което искате, без да прибягвате до горните подходи. Въз основа на примера, който предоставихте, и като приемем, че и рангът, и потребителският идентификатор са цели числа, можете да използвате резултати, които са комбинация от двете, като така:

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

Това ще ви позволи да правите диапазони и ще получите "числово" сортиране за всеки ранг (т.е. с zrangebyscore game_rank 550000000 559999999 ).




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Защо Травис не успява да се свърже, използва Redis cache_store при внедряване в Heroku?

  2. Колко често трябва да отварям/затварям връзката си с Booksleeve?

  3. Predis с laravel 5.5 Няма налични връзки в пула в Aggregate/RedisCluster.php:337

  4. Могат ли уведомленията за ключово пространство на redis да се изпращат в потока на redis вместо в pub/sub канал

  5. Каква е добрата стратегия за групиране на подобни думи?