Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Redis哈希的LinkedHashMap行为?_Redis_Jedis - Fatal编程技术网

Redis哈希的LinkedHashMap行为?

Redis哈希的LinkedHashMap行为?,redis,jedis,Redis,Jedis,我希望在Redis(Jedis客户端)中使用哈希数据结构,但也希望维护插入顺序,比如Java中的LinkedHashMap。我对Redis完全是新手,经历了所有的数据结构和命令,但不知何故,我想不出任何直接的解决方案。任何帮助或建议都将不胜感激。Redis中的哈希不维护插入顺序。通过使用和计数器跟踪订单,可以达到相同的效果。下面是一个简单的示例(在Ruby中,对不起): 按顺序检索值的方式如下所示: ordered_keys = redis.zrange :my_hash_order, 0, -

我希望在Redis(Jedis客户端)中使用哈希数据结构,但也希望维护插入顺序,比如Java中的LinkedHashMap。我对Redis完全是新手,经历了所有的数据结构和命令,但不知何故,我想不出任何直接的解决方案。任何帮助或建议都将不胜感激。

Redis中的哈希不维护插入顺序。通过使用和计数器跟踪订单,可以达到相同的效果。下面是一个简单的示例(在Ruby中,对不起):

按顺序检索值的方式如下所示:

ordered_keys = redis.zrange :my_hash_order, 0, -1
ordered_hash = Hash[
  ordered_keys.map {|key| [key, redis.hget(:my_hash, key)] }
]
# => {"foo"=>"bar", "yin"=>"yang", "some_key"=>"some_value"}

不需要使用排序集或计数器。只需使用a,因为它保持插入顺序

HSET my_hash foo bar
RPUSH my_ordered_keys foo

HSET my_hash yin yang
RPUSH my_ordered_keys yin

HSET my_hash some_key some_value
RPUSH my_ordered_keys some_key

LRANGE my_ordered_keys 0 10
1) "foo"
2) "yin"
3) "some_key"
但这不允许对给定的键进行o(1)查找。
HSET my_hash foo bar
RPUSH my_ordered_keys foo

HSET my_hash yin yang
RPUSH my_ordered_keys yin

HSET my_hash some_key some_value
RPUSH my_ordered_keys some_key

LRANGE my_ordered_keys 0 10
1) "foo"
2) "yin"
3) "some_key"