redis中同一时间大量缓存过期,造成请求直接到数据库增加数据库压力;redis宕机,请求直接入数据库查询增大数据库压力
采用redis集群,保证一节点挂掉不会影响cache
限流,避免同时处理大量的请求
大量请求携带无效redis-key进入,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
缺点:
无法删除
可能存在相同的hash值,key可能不存在但是hash结果显示已被占用。(hash冲突)