redis做缓存的问题

Redis存在的问题

1. 缓存穿透

缓存穿透是查询一个数据库一定不存在的数据

例如主键,主键id是自增的,都大于0,如果传入了负数,就一定查不到这个数据,这个时候缓存发挥不了作用。

如果有人恶意攻击,所有请求都会直接打在数据库上。

解决办法:将数据库查询不到的数据也保存下来,保存为null,缓存时间设置较短,这样可以解决一部分问题。

2. 缓存雪崩

缓存雪崩指的一个时间段内缓存集中失效,在这个时间段内查询就都会去查询数据库。

解决办法:缓存设置不同的失效的时间,热门数据缓存时间设置长一点。

3. 缓存击穿

对于一个非常热点的key,扛着非常大的并发量,如果这个key突然失效,所有的请求会请求到数据库上。

可以将热点key设置不过期

Redis集群

1. 主从复制

redis.conf文件中加入slaveof ip port即可。

是读写分离模型,只有主节点才可以写,所有的都可读

2. 哨兵sentinel

主从复制一旦master宕机就无法实现写操作了

所以要用哨兵

修改sentinel.conf文件,添加如下

bind 0.0.0.0 
sentinel monitor mymaster 127.0.0.1 6379 1  主结点ip port 为主服务器判断为失效投票,至少需要一个sentinel通用
sentinel down-after-milliseconds mymaster 10000 认为服务器断开所需的毫秒数
sentinel failover-timeout mymaster 60000 
sentinel parallel-syncs mymaster 1

启动:redis-sentinel sentinel.conf

上一篇:windows上搭建redis集群(哨兵模式)


下一篇:Redis主从、哨兵、集群