Redis教程

Redis常见问题及解决

本文主要是介绍Redis常见问题及解决,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

Redis

redis缓存雪崩

原因

redis中同一时间大量缓存过期,造成请求直接到数据库增加数据库压力;redis宕机,请求直接入数据库查询增大数据库压力

解决方案

针对redis不可用

  1. 采用redis集群,保证一节点挂掉不会影响cache

  2. 限流,避免同时处理大量的请求

针对redis中缓存同时过期

  1. 设置不同的过期时间
  2. 缓存永不过期(不推荐,内存爆炸)

redis缓存穿透

原因

大量请求携带无效redis-key进入,redis中查询不到,转到数据库查询,增加数据库压力

解决方案

优先做好入参的key的格式校验,非合法格式不允许进入。

其余解决方案:

  1. 布隆过滤器
  2. 数据库中未查询到时在redis中缓存空值(不推荐,无法防御不同的key构造)

布隆过滤器

原理

key进入布隆过滤器中采用多种hash函数进行hash处理,采用bit数组存放同一key不同的hash值,将hash值对应的数组下标位置置为1。当key再次进入布隆过滤器,hash运算后查找 ,如果都是1那么代表已经存在,直接过滤请求,如果某个为0,则代表未进入可放行

比如 "key".hash1 = 2;"key".hash2 = 3;"key".hash3 = 6 则会放入数组中 2、3、6的位置

如果数组初始化长度为10,则当前为[0,0,1,1,0,0,1,0,0,0]

优缺点

优点:能够过滤大部分无效key

缺点:

  1. 无法删除

  2. 可能存在相同的hash值,key可能不存在但是hash结果显示已被占用。(hash冲突)

这篇关于Redis常见问题及解决的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!