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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值