当前位置:网站首页>为什么我用了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的策略来对数据进行持久化。
边栏推荐
猜你喜欢

浅谈Service Mesh对业务系统的价值

EasyExcel实现动态列解析和存表

Understand the recommendation system in one article: Outline 02: The link of the recommendation system, from recalling rough sorting, to fine sorting, to rearranging, and finally showing the recommend

After using Stream for many years, does collect still have these "saucy operations"?

最强分布式锁工具:Redisson

security加密解密

TiKV & TiFlash 加速复杂业务查询丨TiFlash 应用实践

设置海思芯片MMZ内存、OS内存详解

【目标检测】Focal Loss for Dense Object Detection

11. Container With Most Water
随机推荐
使用Stream多年,collect还有这些“骚操作”?
【There is no tracking information for the current branch. Please specify which branch you want to 】
LeetCode·899.有序队列·最小表示法
国内首发可视化智能调优平台,小龙带你玩转KeenTune UI
sibling component communication context
虹科分享 | 如何测试与验证复杂的FPGA设计(3)——硬件测试
security加密解密
Web3的开源为何会如此受到人们喜爱?
TiKV & TiFlash 加速复杂业务查询丨TiFlash 应用实践
面试突击71:GET 和 POST 有什么区别?
Async的线程池使用的哪个?
【AppCube】零代码小课堂开课啦
大型企业数据治理的现状和解决方案有哪些参考?_光点科技
【Metaverse系列一】元宇宙的奥秘
【LeetCode】899. 有序队列
Halcon 小笔记 C# 图片是否有效
Kubernetes 笔记 / 目录
[Unity Getting Started Plan] Basic Concepts (6) - Sprite Renderer Sprite Renderer
C专家编程 第3章 分析C语言的声明 3.7 typedef struct foo{... foo;}的含义
[redis] cache penetration and cache avalanche and cache breakdown solutions