Tout d'abord, je suis nouveau sur Redis. Eh bien, disons que j'ai fait:
127.0.0.1:6379> zadd subs:x 0 0
127.0.0.1:6379> zadd subs:x 500 500
127.0.0.1:6379> zadd subs:x 1000 1000
127.0.0.1:6379> zadd subs:x 5000 5000
127.0.0.1:6379> zadd subs:x 10000 10000
Et je veux trouver un élément qui est juste au-dessus de la valeur 2000 et juste en dessous.
Ci-dessus est simple et facile:
127.0.0.1:6379> ZRANGEBYSCORE subs:x 2000 +inf LIMIT 0 1
1) "5000"
Mais comment trouver un élément ci-dessous de manière simple?
1) Je sais que je peux faire:
127.0.0.1:6379> ZRANGEBYSCORE subs:x -inf 2000 LIMIT 2 1
1) "1000"
Mais je dois savoir avant d'exécuter cette commande que le décalage est de 2, donc en général, je dois d'abord trouver le décalage.
2) Ou je peux trouver ZRANK puis reculer d'un pas:
127.0.0.1:6379> ZRANK subs:x 5000
(integer) 3
127.0.0.1:6379> ZRANGE subs:x 2 2
1) "1000"
Donc ma question est-il un moyen simple d'obtenir un élément juste en dessous d'une certaine valeur?
Comme ci-dessus, mais pour ci-dessous, utilisez
ZREVRANGEBYSCORE
, vous devriez.
Traduction de Yoda-speak:
Redis propose en fait une commande qui fait exactement ce que vous recherchez - ZREVRANGEBYSCORE
. ZREVRANGEBYSCORE
fait la même chose que ZRANGEBYSCORE
mais utilise l'ordre inverse (comme l'indique "REV" dans son nom).
Cela vous permettrait d'obtenir facilement le membre "en dessous de 2000" en un seul appel, comme vous l'avez montré dans votre commentaire. Que la force soit avec toi.
Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.
En cas d'infraction, veuillez [email protected] Supprimer.
laisse moi dire quelques mots