sql >> Databáze >  >> NoSQL >> Redis

Redis SortedSet:Jak získat hodnoty v číselném pořadí, nikoli v abecedním pořadí, když dvě hodnoty mají stejné skóre?

Když mají členové seřazené sady stejné skóre, jsou setříděni lexikograficky. Neexistuje žádný přímý způsob, jak je objednat jinak AFAIK, ale můžete snadno provést třídění na straně klienta. Případně můžete uvařit krátký Lua skript, který to udělá za vás na serveru.

Existuje trochu hackerský způsob, jak se dostat pryč s tím, co chcete, aniž byste se uchýlili k výše uvedeným přístupům. Na základě příkladu, který jste uvedli, a za předpokladu, že hodnocení i ID uživatele jsou celá čísla, můžete použít skóre, která jsou kombinací obou, například takto:

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

To vám umožní provádět rozsahy a získáte "numerické" řazení pro každou úroveň (tj. s zrangebyscore game_rank 550000000 559999999 ).




  1. Celery/Redis stejná úloha se provádí vícekrát paralelně

  2. Inicializujte data na dockerized mongo

  3. Mongodb a MAMP

  4. Nastavení připojení singleton s node.js a mongo