跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 关于 redis 的 scan 命令并发执行的问题,望解答
未分類
28 12 月 2020

关于 redis 的 scan 命令并发执行的问题,望解答

关于 redis 的 scan 命令并发执行的问题,望解答

資深大佬 : qqqasdwx 11

reids 推荐在生产环境中使用scan命令来代替keys命令获取所有 key,我有些疑惑,望各位大佬解答

大佬有話說 (12)

  • 資深大佬 : lpts007

    不知道说啥,scan 和两个连接有啥关系?

  • 資深大佬 : teek

    取决于你数据变动情况。redis.io/commands/scan#scan-guarantees

  • 資深大佬 : yRebelHero

    redis 里的 key 都是存储在一个字典里的,有点类似于 Java 里的 HashMap,一维是数组,二维是链表,游标返回的就是第一维数组的位置索引,而且它的遍历不是从一维数组的第 0 位一直遍历到末尾,而是用的一种高位进位加法来遍历。举个例子,普通的是 0->1->2->3,高位进位加法是 0 -> 8 -> 4 -> 12 -> 2 这样的。

  • 資深大佬 : yRebelHero

    不好意思,先发出去了,接上文。

    遍历的时候如果有数据修改,改动后的数据能不能遍历到是不一定的。

    既然你的问题的前提是:key 的数量时一直频繁变化的。那么问题 1 、2,返回的游标可能不一样,既然上面两个问题不相同,第 3 个问题就没法回答你了。

  • 資深大佬 : xuanbg

    自己做一个 key 管理,Redis 已经很忙很辛苦了,就不要再为难 Redis 了。。。

  • 資深大佬 : lithium4010

    你为啥要拿所有的 key ? key 很大的时候, 它这个就没有设计这种使用场景我理解

  • 資深大佬 : lithium4010

    @lithium4010 我是只 key 的数量很大的时候

  • 資深大佬 : lithium4010

    我是指..

  • 主 資深大佬 : qqqasdwx

    @lpts007 和两个连接确实没什么关系,其实就是想问 scan 的游标是怎么维护的,多次扫描并行存在时会不会相互影响

  • 主 資深大佬 : qqqasdwx

    @yRebelHero 谢谢您的耐心解答,那么用具体场景来举例子,比方说有两个用户查询全部 key,假设页面无限加载,一次 scan 的 count 设为 1,redis 里数量级相对固定(比如 2kw 数据,上下浮动 1w,但 key 会频繁变动,大量删除大量增加,但总数维持在 2kw ),那么如果出现了相同游标,会不会出现一个极限情况,用户 1 最终刷出了 2kw 数据,用户 2 只能刷出 2 条数据?

  • 主 資深大佬 : qqqasdwx

    @lithium4010 比如淘宝商品页做无限加载,每秒都有大量商家上货,也有大量商家下架,不能说一个用户最终能看到全部商品,而另一个用户只能看到两页吧,当然这只是我假想了一个使用场景,想问的是在 redis 不维护 session 的情况下如何保证能扫描到大部分 key

  • 資深大佬 : yRebelHero

    @qqqasdwx 其实不是很明白你描述的具体场景,但应该不会这么极端的,毕竟 key 在字典里都是经过 hash 了一次的,肯定是比较均匀地分布,不会那么极端的。

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具