文档首页/ 云数据库 GeminiDB/ GeminiDB Redis接口/ 常见问题/ 数据库使用/ scan指定match参数,数据中确实存在匹配的key,为什么返回的是空
更新时间:2023-05-30 GMT+08:00

scan指定match参数,数据中确实存在匹配的key,为什么返回的是空

问题描述

如下图所示,数据库中存在key为test的数据,用scan match的方式却没有返回这个数据。

139.9.177.148:8635> scan 1 match tes*
1) "21"
2) (empty list or set)
139.9.177.148:8635> get test
"abc"
139.9.177.148:8635>scan 0 match tes*
1) "21"
2) (empty list or set)
139.9.177.148:8635>

问题分析

MATCH选项让命令只返回和给定模式相匹配的元素, 对元素的模式匹配工作是在命令从数据集中取出元素之后, 向客户端返回元素之前的这段时间内进行的, 如果取出的元素都和模式不匹配,则不会返回任何元素。

解决方案

多次scan,以返回的游标值是否为0作为全遍历结束的标记,每次scan时使用上次scan返回的游标值。