如何在Redis中使用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

我想在作业中使用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的例子吗

在我的情况下,我希望得到以下输出
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*