当前位置:网站首页>为什么我用了Redis之后,系统的性能却没有提升
为什么我用了Redis之后,系统的性能却没有提升
2022-08-03 16:51:00 【Java进阶之路】
很多时候,我们在面对一些热点数据的时候,通常会选择将热点数据放到redis中,以减少数据库的查询,减轻数据库的压力。但是如果我们使用redis的方式不对,那么可能导致系统的性能不升反降。
- 使用缓存的场景不正确 我们知道redis是基于内存实现的,所以速度会非常快,我们通常会将热点数据放到redis中,以减少对数据库的压力。但是我们为了保证缓存与数据库的数据一致性,在数据进行修改的时候,我们就需要对缓存进行维护。 所以如果数据的变更很频繁的话,就需要对缓存进行频繁的维护,缓存的命中率也会特别低。缓存的使用场景应该是修改频率不高,查询频率较高的场景。如果使用redis的场景不对,通常会导致我们得不偿失。
2. key设计不当导致产生了bigkey
什么是bigkey?
对于字符串类型来说单个value值(20k以上)过大,hash、list、set、zset元素个数过多(超过5000个)我们就认为它是一个bigkey。
如果存在bigkey,那么我们会导致我们查询key时过慢,网络拥塞,redis内存分配不均匀等问题。所以如果我们发现一个key过大的时候,那么我们就需要根据业务对它进行拆分,避免导致慢查询等问题。
3.AOF配置不合理
通常我们都会开启redis的AOF来完成redis数据的持久化,AOF有三种策略
appendfsync always:每次写入都刷盘,对性能影响最大,占用磁盘IO比较高,数据安全性最高
appendfsync everysec:1秒刷一次盘,对性能影响相对较小,节点宕机时最多丢失1秒的数据
appendfsync no:按照操作系统的机制刷盘,对性能影响最小,数据安全性低,节点宕机丢失数据取决于操作系统刷盘机制。
如果我们选择appendfsync always的话,虽然数据的安全性高,但是每次写入都要刷盘会导致redis的性能很大程度的降低,所以我们一般会选择appendfsync everysec的策略来对数据进行持久化。
边栏推荐
猜你喜欢
随机推荐
沃尔沃:这是会“种草”的“安全感”!
【Metaverse系列一】元宇宙的奥秘
FinClip | 2022 年 7 月产品大事记
Halcon 小笔记 C# 图片是否有效
11. Container With Most Water
vant自动上传图片/文件
TiKV & TiFlash 加速复杂业务查询丨TiFlash 应用实践
高效的组织信息共享知识库是一种宝贵的资源
sibling component communication context
蒋松廷 荣获第六季完美童模全球总决赛 全球总冠军
Description of the functional scenario of "collective storage and general governance" in the data center
TiKV & TiFlash accelerate complex business queries丨TiFlash application practice
浅谈Service Mesh对业务系统的价值
通俗理解apt-get 和pip的区别是什么
SwinIR实战:如何使用SwinIR和预训练模型实现图片的超分
论文解读(JKnet)《Representation Learning on Graphs with Jumping Knowledge Networks》
C专家编程 第3章 分析C语言的声明 3.1 只有编译器才会喜欢的语法
虹科分享 | 如何测试与验证复杂的FPGA设计(3)——硬件测试
Cookie和Session的关系
组件通信--下拉菜单案例