如何正确访问Redis中的海量数据?服务才不会挂掉!

栏目: 数据库 · 发布时间: 4年前

内容简介:有时候我们需要知道线上的Redis的使用情况,尤其需要知道一些因为我们的用户直接用了

有时候我们需要知道线上的 Redis 的使用情况,尤其需要知道一些 前缀的key值 ,让我们怎么去查看呢?并且通常情况下Redis里的数据都是海量的,那么我们访问Redis中的海量数据?如何避免事故产生!今天就给大家分享一个小知识点,希望大家轻喷。

二、事故产生

因为我们的用户 token缓存是采用了【user_token:userid】格式的key ,保存用户的token的值。我们运维为了帮助开发小伙伴们查一下线上现在有多少登录用户。

直接用了 keys user_token *方式进行查询,事故就此发生了。 导致Redis不可用,假死。

三、分析原因

我们线上的登录用户有几百万,数据量比较多; keys算法是遍历算法,复杂度是O(n) ,也就是数据越多,时间越高。

数据量达到几百万, keys这个指令就会导致 Redis 服务卡顿,因为 Redis 是单线程程序,顺序执行所有指令,其它指令必须等到当前的 keys 指令执行完了才可以继续

四、解决方案

那我们如何去遍历大数据量呢?这个也是面试经常问的。我们可以采用Redis的另一个命令scan。我们看一下scan的特点:

  • 复杂度虽然也是 O(n),但是它是通过游标分步进行的,不会阻塞线程

  • 提供 count 参数,不是结果数量,是Redis单次遍历字典槽位数量(约等于)

  • 同 keys 一样,它也提供模式匹配功能;

  • 服务器不需要为游标保存状态,游标的唯一状态就是 scan 返回给客户端的游标整数;

  • 返回的结果可能会有重复,需要客户端去重复,这点非常重要;

  • 单次返回的结果是空的并不意味着遍历结束,而要看返回的游标值是否为零

4.1、scan命令格式

如何正确访问Redis中的海量数据?服务才不会挂掉!

4.2、命令解释

scan 游标 MATCH <返回和给定模式相匹配的元素> count 每次迭代所返回的元素数量

  • SCAN命令是增量的循环,每次调用只会返回一小部分的元素。所以不会让Redis假死;

  • SCAN命令返回的是一个游标,从0开始遍历,到0结束遍历;

4.3、举例

如何正确访问Redis中的海量数据?服务才不会挂掉!

从0开始遍历,返回了游标6,又返回了数据,继续scan遍历,就要从6开始

如何正确访问Redis中的海量数据?服务才不会挂掉!

五、总结

这个是面试经常会问到的,也是我们小伙伴在工作的过程经常用的,一般数据量不大的时候,不会有什么问题,但数据量多的时候,你的操作方式不对,你的绩效就会被扣哦。

另外一篇文章《 Redis敢在线上做Keys正则匹配操作!你可以离职了 !》,从正则匹配的角度介绍了Redis的一个错误用法,大家有兴趣的话也可以看一下!

原文地址:

www.toutiao.com/i6697540366528152077

热门内容:

1、 为什么有些大公司技术弱爆了?

2、 必会的55个 Java 性能优化细节!一网打尽!

3、 面试题:InnoDB中一棵B+树能存多少行数据?

4、 面试官:谈谈你对SpringAOP的了解?请加上这些内容,绝对加分!

5、 20万用户同时访问一个热点Key,如何优化缓存架构?

6、 多线程,到底该设置多少个线程?

7、 生产环境下到底该如何部署Tomcat?

8、 神级代码注释鉴赏,喜欢就拿去用!

如何正确访问Redis中的海量数据?服务才不会挂掉!

【视频福利】2T免费学习视频, 搜索或扫描上述二维码关注微信公众号:Java后端技术(ID: JavaITWork),和20万人一起学Java!回复: 1024 ,即可免费获取!内含SSM、Spring全家桶、微服务、 MySQL 、MyCat、集群、分布式、中间件、 Linux 、网络、多线程,Jenkins、Nexus、 Docker 、ELK等等免费学习视频,持续更新!


以上所述就是小编给大家介绍的《如何正确访问Redis中的海量数据?服务才不会挂掉!》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Remote

Remote

Jason Fried、David Heinemeier Hansson / Crown Business / 2013-10-29 / CAD 26.95

The “work from home” phenomenon is thoroughly explored in this illuminating new book from bestselling 37signals founders Fried and Hansson, who point to the surging trend of employees working from hom......一起来看看 《Remote》 这本书的介绍吧!

MD5 加密
MD5 加密

MD5 加密工具

SHA 加密
SHA 加密

SHA 加密工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具