贴两段代码
代码段 1 :
cursor := 0
for {
currentCursor, members := th.sscan(c_push, cursor, MAX_BATCH_SSCAN, all_user)
cursor = currentCursor
if len(members) > 0 {
cursor = currentCursor
json_message, _ := json.Marshal(message)
c_default.Do("HINCRBY", redisStatsKey, redisStatsFiled, len(members))
}
if currentCursor == 0 {
break
}
}
代码段 2 :
cursor := 0
for {
cursor, members := th.sscan(c_push, cursor, MAX_BATCH_SSCAN, alluser)
if len(members) > 0 {
json_message, _ := json.Marshal(message)
c_default.Do("HINCRBY", redisStatsKey, redisStatsFiled, len(members))
}
if cursor == 0 {
break
}
}
两段代码功能相同,都是利用 sscan 操作 redis, 不同的地方在于 代码段 1 有赋值 cursor = currentCursor , 其中: MAX_BATCH_SSCAN=1000 ,每次 scan 一千条数据, alluser 有 4 千万
问题在于,第一段代码可以正常工作,第二段代码会陷入死循环,求各位大神解惑!!
到底是什么问题呢
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.