Il doit y avoir des cas d'utilisation où nous devons stocker paire clé-valeur pour spécifique en fonction de clé
Comme les clés Redis sont des chaînes binaires, je suppose que l'ordre spécifique vous avez mentionné, est l'ordre lexicographique (en particulier, les clés sont comparées avec la fonction memcmp
). Dans ce cas, vous pouvez facilement implémenter un C++ std::map
avec SORTED SET
. Vous pouvez y parvenir avec 2 étapes:
Construire un std :: set avec de Redis Classé Set
Si 2 éléments dans un SORTED SET
ont le même score, ils sont classés par ordre lexicographique. Ainsi, afin de construire un std::set
, juste donner tous les membres d'un SORTED SET
avec le même score:
zadd std::set 0 c
zadd std::set 0 a
zadd std::set 0 b
// since all these members have the same score,
// the result is lexicographical ordered:
// a b c
zrange std::set 0 -1
// the following command will fail, since 'c' already exists.
zadd std::set 0 c
Depuis Redis 2.8, it supports some commands pour fonctionner sur les plages lexicographiques, de sorte que vous pouvez construire quelque chose de similaire à std::set::lower_bound
, ou std::set::upper_bound
// something similar to lower_bound: find all members not less than b
zrangebylex std::set [b +
// something similar to upper_bound: find all members greater than b
zrangebylex std::set (b +
Carte chaque touche dans le jeu avec une valeur
Étant donné que vous obtenez déjà un std::set
, puis mappez la clé avec une valeur, vous pouvez obtenir un std::map
.
set a value_a
set b value_b
set c value_c
Combiner ces 2 étapes ensemble
Vous pouvez envelopper tout le travail dans un script lua d'avoir un intégréstd::map
. Et utilisez-le comme ceci:
redis-cli --eval map.lua map_name , key value
Merci pour l'information. Je pense que pour 'zadd a value_a', ici' a' est la clé et 'value_a' est la valeur dans les perspectives redis. Mais en réalité 'a' est le nom de l'ensemble trié et' value_a' est son élément. Si ce serait comme 'std :: map', la syntaxe serait' zadd std :: map key value'. –
Il n'existe pas de structure de données de ce type dans Redis, vous avez donc besoin de 2 étapes pour en implémenter une, comme je l'ai mentionné dans la réponse. Si vous encapsulez ces étapes dans un script lua, vous pouvez obtenir un * built-in * 'std :: map':' redis-cli -eval map.lua std :: map, valeur-clé'. –