当前位置:网站首页>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 .
边栏推荐
- Time slice polling scheduling of RT thread threads
- Unit test - unittest framework
- 程序员老鸟都会搞错的问题 C语言基础 指针和数组
- STM32 如何定位导致发生 hard fault 的代码段
- ES6 grammar summary -- Part I (basic)
- imgcat使用心得
- Kaggle竞赛-Two Sigma Connect: Rental Listing Inquiries
- Vscode basic configuration
- Basic operations of databases and tables ----- creating data tables
- Detailed explanation of 5g working principle (explanation & illustration)
猜你喜欢

uCOS-III 的特点、任务状态、启动

level16

Togglebutton realizes the effect of switching lights

STM32 how to locate the code segment that causes hard fault

Basic use of pytest

Pytorch four commonly used optimizer tests

ES6语法总结--下篇(进阶篇 ES6~ES11)

ES6 grammar summary -- Part 2 (advanced part es6~es11)

Basic operations of databases and tables ----- modifying data tables

I2C bus timing explanation
随机推荐
荣耀Magic 3Pro 充电架构分析
level16
Arduino uno R3 register writing method (1) -- pin level state change
Feature of sklearn_ extraction. text. CountVectorizer / TfidVectorizer
Reading notes of difficult career creation
Understanding of AMBA, AHB, APB and Axi
E-commerce data analysis -- salary prediction (linear regression)
Basic operations of databases and tables ----- creating data tables
Symbolic representation of functions in deep learning papers
C language callback function [C language]
Arduino gets the length of the array
I2C总线时序详解
列表的使用
inline详细讲解【C语言】
imgcat使用心得
arduino JSON数据信息解析
Common properties of location
ARM PC=PC+8 最便于理解的阐述
Togglebutton realizes the effect of switching lights
Priority inversion and deadlock