redis scan是否会扫描扫描操作开始后插入的数据?
我正在使用redis扫描在我的redis数据库中迭代密钥。这是我正在使用的代码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
#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