Redis 第五天

一.Redis集群

Redis 集群实现了对Redis的水平扩容,即启动N个redis节点,将整个数据库分布存储在这N个节点中,每个节点存储总数据的1/N。通过分区来实现高可用,部分失效也可使用。

1.设置集群

/opt.redis-版本号/src

2.此处设置一主一从最简单集群

redis-cli --cluster create --cluster-replicas 1 192.168.11.101:6379 192.168.11.101:6380 192.168.11.101:6381 192.168.11.101:6389 192.168.11.101:6390 192.168.11.101:6391

3.集群命令

cluster nodes  查看集群信息

redis-cli -c -p port 连接到集群

set k1 v1 此处返回值为插槽号

mset k1{user}v1 k2{user}v2         {组}集群中加入多个键

cluster keyslot <k> 获取k的插槽值

cluster countkeysinslot    [插槽值] 只可查找属于自己范围插槽中的值

cluster getkeysinslot <slot><count> 返回count个slot槽中的key

4.故障恢复

当主机断开后从机会上位成为主机

之前的主机恢复连接后成为从机


二.缓存穿透

问题原因:key对应的数据源不存在,请求被压到数据库可能会压倒数据源。

                  redis 命中率降低 非正常url访问

解决:1.对空值缓存(过期时间短)

          2.白名单(bitmaps)可访问(效率不高)

          3.布隆过滤器(底层bitmaps)

          4.进行实时监控:排查访问对象和访问数据

三.缓存击穿

问题原因:热门key过期,此时出现大量访问这个时候大并发的请求可能会瞬间把后端DB压垮。

解决:1.预设热门key

           2.实时调整

           3.使用锁:在查询db时不让其他线程访问,直到缓存成功

四.缓存雪崩

问题原因:极少时间段内,大量key集中过期

解决:1.加多级缓存 nginx+reids+...(ehcache)

          2.使用锁或队列 用加锁或者队列的方式保证来保证不会有大量的线程对数据库一次性进行读写(不适用于高并发)

          3.设置过期标志更新缓存

          4.缓存失效时间分散


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值