当前位置:网站首页>Redis cache update strategy, cache penetration, avalanche, breakdown problems
Redis cache update strategy, cache penetration, avalanche, breakdown problems
2022-07-06 12:12:00 【A pole】
Catalog
Preface
This article is learned by me from dark horse programmer B Stop video tutorial (https://www.bilibili.com/video/BV1cr4y1671t) Notes made in the process of , Mainly records Redis Some ideas about caching , No code involved .
Redis cache
effect
- Reduce back-end load
- Improve reading and writing efficiency , Reduce response time
cost
- Data consistency costs
- Code maintenance costs
- O & M costs
Cache update strategy
Memory obsolescence
Automatically eliminate when the content is insufficient
Default on
You don't have to maintain it yourself
Poor consistency
Low maintenance cost
Time out culling
add to TTL Automatically delete when due
General consistency
Low maintenance cost
Active update
Write business logic , When modifying the database , Update cache
Good consistency
Maintenance costs are high
Select according to business scenario :
Low consistency requirements : Use Redis Built in memory elimination mechanism .
High consistency requirements : Active update , And enable timeout culling ,
Read operations
Cache hits return directly
If not, query the database , And write to the cache
Write operations
Write the database first , Then delete the cache
To ensure the atomicity of database and cache operations ( Monomer applications can use @Transactional Open transaction )
Cache penetration
Cache penetration means that the data requested by the client does not exist in the cache or in the database , This cache will never take effect , These requests will all go to the database .
There are two common solutions :
- Caching empty objects
- advantage : Implement a simple , Convenient maintenance
- shortcoming : Extra memory consumption 、 May cause short-term inconsistencies
- Bloon filtration ( be based on bitmap Realization )
- advantage : Less memory , There is no excess key
- shortcoming : The implementation is complex 、 There is a possibility of misjudgment
( On the left is the schematic diagram of caching empty objects , On the right is the schematic diagram of bulon filtration )
Cache avalanche
Cache avalanche refers to a large number of caches at the same time key Simultaneous failure or Redis The service outage , Cause a large number of requests to reach the database , It brings a lot of pressure .
( On the left is a large number of cache invalidation diagram , The right side is redis Downtime diagram )
Solution :
- To different Key Of TTL add to Random value
- utilize Redis colony Improve service availability
- Add Degraded current limiting Strategy
- Add to business Multi level cache ( Browser cache 、Nginx cache 、Redis cache 、JVM Local cache 、 Databases, etc )
Cache breakdown
Cache breakdown is also called hot spot Key problem , It is a highly concurrent access and complex cache reconstruction business key All of a sudden it failed , Countless requests for access will have a huge impact on the database in an instant .
There are two common solutions :
Logical expiration
Not set up TTL, Instead, add a expire Field , When the field time reaches , Update data .
- advantage
- Threads do not need to wait , Good performance
- shortcoming
- There is no guarantee of consistency
- There is additional memory consumption
- The implementation is complex
- advantage
The mutex
- advantage
- No additional memory consumption
- Guarantee consistency
- Implement a simple
- shortcoming
- Thread needs to wait , Performance is affected
- There may be a deadlock risk
( On the left is the schematic diagram of mutual exclusion , Schematic diagram of logical expiration of the right side wall )
- advantage
Solve the cache breakdown problem based on mutual exclusion
Solve the cache breakdown problem based on logical expiration
Postscript
u1s1, This tutorial is really good , And it's 2022 New version of video , It is highly recommended that you have a look .
边栏推荐
- open-mmlab labelImg mmdetection
- Inline detailed explanation [C language]
- 列表的使用
- js题目:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
- Types de variables JS et transformations de type communes
- Basic operations of databases and tables ----- creating data tables
- Esp8266 uses Arduino to connect Alibaba cloud Internet of things
- JS regular expression basic knowledge learning
- .elf .map .list .hex文件
- Imgcat usage experience
猜你喜欢
Detailed explanation of 5g working principle (explanation & illustration)
【ESP32学习-1】Arduino ESP32开发环境搭建
JS 函数提升和var变量的声明提升
JS正则表达式基础知识学习
Missing value filling in data analysis (focus on multiple interpolation method, miseforest)
JS variable types and common type conversions
数据分析之缺失值填充(重点讲解多重插值法Miceforest)
Page performance optimization of video scene
Unit test - unittest framework
Redis interview questions
随机推荐
优先级反转与死锁
高通&MTK&麒麟 手機平臺USB3.0方案對比
Kconfig Kbuild
Basic operations of databases and tables ----- creating data tables
C语言回调函数【C语言】
Basic operations of databases and tables ----- view data tables
Variable parameter principle of C language function: VA_ start、va_ Arg and VA_ end
R & D thinking 01 ----- classic of embedded intelligent product development process
C language, log print file name, function name, line number, date and time
Machine learning -- linear regression (sklearn)
open-mmlab labelImg mmdetection
Variable star user module
Important methods of array and string
Redis interview questions
Arduino gets the length of the array
机器学习--决策树(sklearn)
imgcat使用心得
Fashion Gen: the general fashion dataset and challenge paper interpretation & dataset introduction
PyTorch四种常用优化器测试
关键字 inline (内联函数)用法解析【C语言】