def generator():
target_pattern = 'user_\d+'
simple_pattern = 'user_*'
import re
cursor, i = 0, 0
while True:
cursor, keys = rs.scan(cursor, match=simple_pattern, count=1000)
for key in keys:
if re.match(target_pattern, key):
yield (i, key)
i += 1
if not keys:
break
for cursor, keys in generator():
print(cursor, keys)
do_something()
# or
def while_true_loop():
target_pattern = 'user_\d+'
simple_pattern = 'user_*'
import re
cursor = 0
while True:
cursor, keys = rs.scan(cursor, match=simple_pattern, count=1000)
for key in keys:
if re.match(target_pattern, key):
do_something()
if not keys:
break
3条答案
按热度按时间soat7uwm1#
不,
MATCH
是仅支持通配符的模式。uxh89sit2#
MATCH
不 支持 正则 表达式 , 只 支持 通配符 。 但是 , 您 可以 在 Redis 的 Lua 脚本 中 使用 Lua 模式 。 对于 大多 数 常见 的 实际 使用 情况 , Lua patterns 将 与 POSIX 正则 表达式 模式 一样 强大 。 以下 是 非常 有用 的@itamarhaber 提供 的 要点https://gist.github.com/itamarhaber/19c8393f465b62c9cfa8 格式
注 : 这 不 适合 生产 , 因为 它 占用 大量 资源 并 执行 完全 扫描 。
sigwle7e3#
只 提 一 件 小事 , 因为 regex 不 受 支持 , 我们 可以 自己 实现 一些 匹配 。
例如 ( 使用 python ) :
中 的 每 一 个