Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
redis scan是否会扫描扫描操作开始后插入的数据?_Redis_Amazon Elasticache_Redis Cluster - Fatal编程技术网

redis scan是否会扫描扫描操作开始后插入的数据?

redis scan是否会扫描扫描操作开始后插入的数据?,redis,amazon-elasticache,redis-cluster,Redis,Amazon Elasticache,Redis Cluster,我正在使用redis扫描在我的redis数据库中迭代密钥。这是我正在使用的代码 #example :1 start_cursor=0 r=redis.StrictRedis(host='localhost',port=6379) cur, keys = r.scan(cursor=start_cursor, match='*', count=3) records=len(keys) values=[] values.extend(i for i in keys) print cur,reco

我正在使用redis扫描在我的redis数据库中迭代密钥。这是我正在使用的代码

#example :1

start_cursor=0

r=redis.StrictRedis(host='localhost',port=6379)
cur, keys = r.scan(cursor=start_cursor, match='*', count=3)
records=len(keys)
values=[]
values.extend(i for i in keys)
print cur,records,values


while cur != 0:
        cur, keys = r.scan(cursor=cur, match='*', count=3)
        records+=len(keys)
        data = r.mget(keys=keys)
        values.extend(i for i in keys)
        print cur, len(keys),values

print "Total records scanned :{}".format(records)
My DB具有以下格式的值(键,值)(1,1)(2,2)(3,3)(4,4)(5,5)

当我用计算机扫描我的记录时


start_cursor=0
我得到以下记录

scan #=>Cursor,new records,all records

scan  #1 =>5,3,['1', '2', '5']
scan  #2 =>0,2,['1', '2', '5', '3', '4']
Total Records scanned :5
当我用扫描1中的光标号开始扫描时,比如(5)。在我的示例1中,我从扫描2中获取记录

Example : 2
start_cursor=5
到目前为止一切正常。当我再插入四个新数据时,比如说(6,6)(7,7)(8,8)(9,9),然后用
start\u cursor=5
开始扫描数据,与示例2相同 我遗漏了一些数据,比如(6)在这里遗漏了

Example : 3
start_cursor=5
redis scan是否会扫描扫描操作开始后插入的数据?如果没有,是否还有其他方法来实现这一点

提前谢谢

来自:

在整个迭代过程中,不经常出现在集合中的元素可以返回,也可以不返回:它是未定义的

由于数据是在扫描操作开始后插入的,因此这些数据不是持续存在的。因此,
SCAN
不能保证返回新插入的数据

如果没有,是否还有其他方法来实现这一点

好了,没有其他方法可以做到这一点。

来自:

在整个迭代过程中,不经常出现在集合中的元素可以返回,也可以不返回:它是未定义的

由于数据是在扫描操作开始后插入的,因此这些数据不是持续存在的。因此,
SCAN
不能保证返回新插入的数据

如果没有,是否还有其他方法来实现这一点

好了,没有别的办法了

Example : 3
start_cursor=5
scan #=>Cursor,new records,all records

scan  #1 =>3 3 ['3', '4', '9']
scan  #1 =>0 2 ['3', '4', '9', '7', '8']
Total Records scanned :5