redis-缓存应用
流程图
配置
设置最大内存
配置文件中设置 maxmemory
参数 ,单位字节。
maxmemory 1073741824 #最大占有1G内存
设置淘汰策略
maxmemory-policy noeviction
淘汰算法 | 策略 |
---|---|
LRU(Least recently used) | 最近最久未使用算法 |
LFU(Least Frequently Used ) | 最近最少使用算法 |
maxmemory-policy参数 | 含义 |
---|---|
volatile-lru | 使用LRU算法删除一个key(只对设置了过期时间的key有效) |
allkeys-lru | 使用LRU算法删除一个key |
volatile-lfu | 使用LFU算法删除一个key(只对设置了过期时间的key有效) |
allkeys-lfu | 使用LFU算法删除一个key |
volatile-random | 随机删除一个key(只对设置了过期时间的key有效) |
allkeys-random | 随机删除一个key |
volatile-ttl | 删除过期时间最近的一个key |
noeviction | 不删除key,只返回错误 |
问题
数据同步
缓存数据与数据库数据不一致。缓存与缓存之间不一致。
- 分布式缓存。多个应用服务操作各自的缓存,导致缓存与缓存之间不一致。
- dml操作后(应用服务,数据库管理员),更新缓存。
缓存穿透
数据库中不存在,在缓存中找没有,去数据库中找没有,查找这个数据总是进行这个过程。
措施:数据库中不存在,缓存中设值为null。
缓存雪崩
短时间,缓存大量减少。大量key集中时间过期。
措施:灵活设置key的过期时间。
缓存击穿
短时间,缓存没有大量减少,但是数据库压力剧增。热点key过期。
措施:热点key不设置过期时间。