如何在Redis中使用HSCAN命令?
我想在作业中使用Redis的HSCAN命令,但我不知道它是如何工作的。Redis的官方页面()为该命令提供了空白页面 我正在获取连续的输入数据,并在Redis的多个散列中瞬间保存它们,我希望在以后的时间点迭代所有这些数据 我正在使用以下命令保存我的数据 HMSET myhash ordertype "neworder" order_ts "1234" act_type "order_ack" ack_ts "1240" HMSET myhash2 ordertype "neworder" order_ts "2234" act_type "order_ack" ack_ts "2240" HMSET myhash ordertype“neworder”order\u ts“1234”act\u type“order\u ack”ack\u ts“1240” HMSET myhash2订单类型“新订单”订单“2234”行动类型“订单确认”确认“2240” 有人能给我举一些如何使用HSCAN的例子吗 在我的情况下,我希望得到以下输出如何在Redis中使用HSCAN命令?,redis,hiredis,Redis,Hiredis,我想在作业中使用Redis的HSCAN命令,但我不知道它是如何工作的。Redis的官方页面()为该命令提供了空白页面 我正在获取连续的输入数据,并在Redis的多个散列中瞬间保存它们,我希望在以后的时间点迭代所有这些数据 我正在使用以下命令保存我的数据 HMSET myhash ordertype "neworder" order_ts "1234" act_type "order_ack" ack_ts "1240" HMSET myhash2 ordertype "neworder" ord
1) myhash
2) myhash2
3) myhash3
.
.
.
.命令 使用以下命令启动完整哈希扫描:
HSCAN myhash 0
使用与以下模式匹配的字段启动哈希扫描:
HSCAN myhash 0匹配顺序*
使用与模式匹配的字段启动哈希扫描,并强制scan命令对以下内容执行更多扫描:
HSCAN myhash 0匹配顺序*计数1000
注意
不要忘记,MATCH可以为每个迭代返回很少甚至没有元素,如下所述:
需要注意的是,匹配过滤器是在
在返回数据之前,从集合中检索元素
给客户。这意味着,如果模式匹配很少
集合中的元素,扫描可能不会返回集合中的任何元素
大多数迭代
这就是为什么您可以使用COUNT
强制每次迭代进行更多扫描
[Update]按照规定,您需要Redis 2.8+来使用*SCAN命令。如您所述。您需要获得散列键的输出
myhash
myhash2
myhash3
HSCAN不用于此目的。HSCAN是扫描特定散列的字段。因此,您可以扫描myhash或myhash2的字段。但是如果你想在模式的基础上找到关键点,你有两个选择
使用哈希键创建一个集合
SADD hashkeys "myhash" "myhash1" "myhash2"
SMEMBERS hashkeys
1) "myhash"
2) "myhash2"
3) "myhash1"
If you are using 2.8 I would recommend you use sscan instead of smembers
sscan hashkeys 0 match my*
仅使用扫描命令
scan 0 MATCH myhash* count 1000
使用密钥匹配(不建议使用,因为它会阻止redis服务器)
所以长话短说,你可以使用SMEMBERS、SSCAN或key来提取密钥。当然,如果您使用的是redis 2.8,最好是SSCAN,请注意,您需要redis 2.8才能获得扫描功能。稳定的Redis仍然是2.6。我想他是糊涂了。他想要的是散列键作为输出,而HSCAN将扫描扫描的值。是否可以在复杂的数据类型/对象中使用match?
keys myhash*