我想在Redis(Jedis客户端)中使用Hashes数据结构,但也想维护插入顺序,比如Java中的LinkedHashMap。我对 Redis 完全陌生,并且浏览了所有数据结构和命令,但不知何故无法想到任何直接的解决方案。任何帮助或建议将不胜感激。
Redis 中的哈希不维护插入顺序。您可以通过使用有序集和计数器来跟踪顺序来实现相同的效果。这是一个简单的例子(抱歉,用 Ruby 语言):
items = {foo: "bar", yin: "yang", some_key: "some_value"}
items.each do |key, value|
count = redis.incr :my_hash_counter
redis.hset :my_hash, key, value
redis.zadd :my_hash_order, count, key
end
Run Code Online (Sandbox Code Playgroud)
按顺序检索值将如下所示:
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"}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1212 次 |
| 最近记录: |