我在Redis 3.1.6版中使用PHP-Redis
$result = $redis->keys('source_1234_[a-zA-Z]*_[0-9]*');
生产
{array} [6]
0 = "source_1234_test_1"
1 = "source_1234_test_2"
2 = "source_1234_test_3"
3 = "source_1234_test_4"
4 = "source_1234_test_5"
5 = "source_1234_test_6"
然而
$iterator = 0;
$result = $redis->scan($iterator, 'source_1234_[a-zA-Z]*_[0-9]*');
FALSE
您的代码有两个问题:
(a)您需要将迭代器设置为null
,而不是0
。
从对scan
的调用返回0
以指示已扫描所有密钥。因此,它将停止并返回false
。
(b)scan
迭代所有密钥的集合,为每次调用返回每个集合中的匹配项。你只给扫描打了一次电话。它将扫描第一个count
键,如果这些键都不匹配,则返回false。
请参阅https://redis.io/commands/scan#number-of-elements-returned-at-every-scan-call:
扫描族函数不保证每次调用返回的元素数在给定范围内。这些命令还允许返回零元素,只要返回的游标不为零,客户端就不应认为迭代完成。[...]
$iterator = NULL
while($iterator != 0) {
$arr_keys = $redis->scan($iterator, 'source_1234_[a-zA-Z]*_[0-9]*')
foreach($arr_keys as $str_key) {
echo $str_key;
}
}
问题内容: 我正在尝试与Laravel 一起使用Redis。我可以发出一个返回10个键的请求,但我希望循环直到所有键都返回。我不确定如何使用laravel进行此操作。目前我有 我不知道是否有一种“ laravel”的方式。 编辑: 我使用作曲家进行导入并与之合作 但是我想知道laravel的方式 编辑: var_dump的单 问题答案: 当Redis外观直接将命令传递给Predis(或您可能会说R
我只是设置了一个带有Express服务器的Redis客户机,以便能够在Redis存储中持久保存用户会话数据。出于兴趣,我正在使用命令监视上的请求,以查看通过Express发出的请求。当用户登录时,我在对象上设置了键,请求将显示在CLI上: 但是在存储会话信息之后,和命令显示为记录在CLI上: 我非常肯定我没有通过Express不断调用任何函数,那么为什么命令显示这些请求呢?
我正在尝试找出存储在一个匹配Redis模式的键列表中的值。我尝试使用以便稍后使用获取所有值,但问题是: 返回所需的键。如何强制查看所有现有键?我得去查lua吗?
找不到任何有关redis扫描匹配的信息
问题内容: 我正在尝试使用SCAN http://redis.io/commands/scan来遍历redis中存在的所有键。但是spring提供的Redis模板没有任何scan()方法。有什么技巧可以使用以上内容吗? 谢谢 问题答案: 您可以使用on 来这样做。
在Redis中创建键时,我使用“:”格式,并将其与URL结构类似地处理。 但如果该结构本身包含键-值类型组合呢?有人把钥匙放在结构里吗? 虚构示例: 在某些方面,我认为选项A的结构中有力量,但也给关键增加了很多复杂性。 想法?