小智 39
您可以在管道中查询哈希值或任何键,即在一个请求中查询redis实例.实际实现取决于您的客户端,但使用redis-py它看起来像这样:
pipe = conn.pipeline()
pipe.hgetall('foo')
pipe.hgetall('bar')
pipe.hgetall('zar')
hash1, hash2, hash3 = pipe.execute()
Run Code Online (Sandbox Code Playgroud)
客户端将发出一个包含3个命令的请求.这与用于一次向集合添加多个值的技术相同.
阅读更多信息,请访问http://redis.io/topics/pipelining
如果SORT允许您使用带有 - >语法的多个GET,并且所有哈希都具有相同的字段,则可以通过将其名称放入集合并对其进行排序来批量回复.
SORT names_of_hashes GET *->field1 *->field2 *->field3 *->etc
Run Code Online (Sandbox Code Playgroud)
但是看起来你不能用哈希访问来做到这一点.另外,您必须自己将返回列表变回哈希值.
更新:如果你很好地命名哈希,Redis似乎可以让你获取多个字段:
redis> hset hash:1 name fish
(integer) 1
redis> hset hash:2 name donkey
(integer) 1
redis> hset hash:3 name horse
(integer) 1
redis> hset hash:1 type fish
(integer) 1
redis> hset hash:2 type mammal
(integer) 1
redis> hset hash:3 type mammal
(integer) 1
redis> sadd animals 1
(integer) 1
redis> sadd animals 2
(integer) 1
redis> sadd animals 3
(integer) 1
redis> sort animals get # get hash:*->name get hash:*->type
1. "1"
2. "fish"
3. "fish"
4. "2"
5. "donkey"
6. "mammal"
7. "3"
8. "horse"
9. "mammal"
Run Code Online (Sandbox Code Playgroud)
不,MHGETALL但是你可以赞一下:
local r = {}
for _, v in pairs(KEYS) do
r[#r+1] = redis.call('HGETALL', v)
end
return r
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20794 次 |
| 最近记录: |