Redis缓存管理机制

发展

在Redis没出现之前,MySQL每天都有一大半的请求都是读操作,而且经常都是重复查询一个东西,浪费大量的时间去进行磁盘I/O。后来,人们参考CPU的缓存设计,也给数据库加了一个缓存。这个缓存就是Redis!!!

内存淘汰策略

因为内存的大小是有限的,所以Redis要定期删除一些键值

Redis提供了8种内存淘汰策略供应用程序选择(定期删除+惰性删除+内存淘汰)

惰性删除:那些没被删除的键值(没被算法选中),以但遇到查询请求,被Redis发现已经超时了,就会被删除!

  1. noeviction: 返回错误,不会删除任何键值
  2. allkeys-lru:使用LRU算法删除最近最少使用的键值
  3. volatile-lru: 使用LRU算法从设置了过期时间的键集合中删除最近最少使用的键值
  4. allkeys-random: 从所有key随机删除
  5. volatile-random: 从设置了过期时间的键的集合中随机删除
  6. volatile-ttl: 从设置了过期时间的键中删除剩余时间最短的键
  7. volatile-lfu: 从配置了过期时间的键中删除使用频率最少的键
  8. allkeys-lfu: 从所有键中删除使用频率最少的键

缓存击穿

但用户要查询的数据不存在,MySQL就会白忙活一场。因为查询的数据不存在,所以Redis也无法进行缓存。以至于,每一次同样的请求来了,都会让MySQL白忙活一场!大大浪费了资源。

缓存雪崩

比缓存击穿更多的数据请求发送到MySQL中!是一大批数据几乎同时过了有效期

解决办法:把键值的过期时间随机设置,还设置了一些热点数据永不过期

你可能感兴趣的:(Redis学习笔记,缓存,redis,数据库)