redis - TYPE 选项不适用于 REDIS SCAN 命令
问题描述
Redis中有一个命令-SCAN。它有一个选项TYPE,它返回与给定类型匹配的对象。当我尝试运行示例https://redis.io/commands/scan#the-type-option中提供的命令集时,我在运行最后一个命令时收到错误ERR 语法错误SCAN 0 TYPE zset
。
我已经准备了list和zset类型的对象,但是它们都不起作用,我总是遇到异常。即使我自己添加一些东西,它也不起作用。
我的问题是下一个。SCAN是否真的支持TYPE选项?我发现了这个问题https://github.com/antirez/redis/issues/3323,但它没有关闭,在 Redis 文档上有这样的细节
Redis 版本:
redis> INFO
# Server
redis_version:5.0.5
redis> RPUSH list_object "list_element"
redis> TYPE list_object
list
redis> ZADD zset_object 1 "zset_element"
redis> TYPE zset_object
zset
redis> SCAN 0 TYPE zset
ERR syntax error
redis> SCAN 0 type list
ERR syntax error
解决方案
TYPE 选项的代码还在unstable 分支中,还没有发布到最新版本的Redis。到目前为止,您无法使用该命令。您必须等待新版本支持此功能,或者冒险使用不稳定的分支。
但是,您也可以在客户端实现此目标:
- 使用 SCAN 命令迭代密钥空间
- 对于每个键,调用 type 命令在客户端进行过滤。
为了使这个操作更快,你可以将逻辑包装到 Lua 脚本中。
更新
Redis 6.0 已经支持这个特性。
推荐阅读
- android - 正在进行通话。你只能调整通话音量我的应用通知接收mi设备,如mi 9t,redmi 4如何禁用它
- c - 从C中的文本文件中读取完整单词的行
- c# - DevExpress BlazorServer DataGrid LayoutChanged 事件在刷新后不会触发
- android-studio - 无法确定 Android SDK
- flutter - 如何在 Flutter 中显示指数字符串?
- docker - Docker Not pulling images from the Docker Hub on Mac OS
- python - 在使用 Sphinx 构建文档结束时记录日志
- multilabel-classification - 如何在 mlr 中使用调整参数进行多标签分类?
- sql-server - Power Apps Dataflow 从 Azure SQL 到 Dataverse 的持续时间真的很慢而且错误消息很糟糕吗?
- c# - 为什么我更新数据库后我的数据网格没有更新?