当前位置:网站首页>为什么我用了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的策略来对数据进行持久化。
边栏推荐
猜你喜欢
Component communication - parent-child component communication
高效的组织信息共享知识库是一种宝贵的资源
数据中台“集存通用治”功能场景说明
[redis] cache penetration and cache avalanche and cache breakdown solutions
Hannah荣获第六季完美童模全球总决赛全球人气总冠军
华为、联想、北汽等入选工信部“企业数字化转型和安全能力提升”首批实训基地
FinClip | 2022 年 7 月产品大事记
node连接mongoose数据库流程
最强分布式锁工具:Redisson
Auto Scaling 弹性伸缩(运维释放人力)
随机推荐
Selective Search学习笔记
基于DMS的数仓智能运维服务,知多少?
102. 最佳牛围栏
“LaMDA 存在种族歧视,谷歌的 AI 伦理不过是‘遮羞布’!”
C专家编程 第1章 C:穿越时空的迷雾 1.10 “安静的改变”究竟有多少安静
LeetCode·1163.按字典序排在最后的子串·最小表示法
Excuse me this hologres dimension table is cached?How to Finished
error:Illegal instruction (core dumped),离线下载安装这个other版本numpy
C语言04、操作符
我想请问下,我们的数据库是在亚马逊,Dataworks 连不通,怎么办?
【带你了解SDN和网络虚拟化】
[Unity Getting Started Plan] Basic Concepts (6) - Sprite Renderer Sprite Renderer
Interviews are no longer hanged!This is the correct way to open the seven schemes of Redis distributed locks
《社会企业开展应聘文职人员培训规范》团体标准在新华书店上架
TiKV & TiFlash 加速复杂业务查询丨TiFlash 应用实践
产品-Axure9英文版,轮播图效果
组件通信--下拉菜单案例
高薪程序员&面试题精讲系列132之微服务之间如何进行通信?服务熔断是怎么回事?你熟悉Hystrix吗?
Adobe是什么?
正向代理与反向代理