数据库操作
通用数据库操作
一、字符串操作
如果字符串的内容是整数
临时值键对
以下支持各种数据类型
二、散列表
三、列表(List)
四、集合(Set)
五、有序集合(Sorted Set)
六、缓存击穿、缓存穿透、缓存雪崩产生原因以及常用解决方法
(一)缓存击穿
1.原因
某些热点key 到达了过期的时间点,此时刚好有大量的并发请求需要查询这个key,从而导致并发请求直接打到了数据库,这就是缓存击穿
2.解决方案
(1)提前将热门数据放入Redis缓存
(2)对热门key进行监控
(3)对不同级别的key设置不同的缓存时间
(4)设置分布式锁
(二)缓存穿透
1.原因
由恶意攻击导致,黑客通过伪造非法的id,查询数据库中不存在的key,导致经过Redis缓存时:判断key 不存在,则直接查DB,最终导致所有请求全部达到了DB中,造成缓存穿透
2.解决方案
(1)缓存一个特定的值,代表数据库中不存在,如空值
(2)使用Redis布隆过滤器:如果不存在那就一定不存在,如果存在则不一定存在
(3)设置有规律的id,如果不满足规则条件则拦截
(三)缓存雪崩
原因1
大量key 同时过期,导致所有请求全部打到DB中
解决方案1
(1)缓存时间最好不要设置一样,可以上下波动一个阈值
(2)服务降级
原因2
缓存中间件直接宕机
解决方案2
(1)限流
(2)熔断
(3)建立高可用缓存集群