redis知识点

1.数据类型

String,List,Set,hash,sorted set

2.redis三种模式

1)主从模式

reids虽然读写速度都很快,但也会产生读压力特别大的情况。为了分担读压力,redis支持主从复制。

·从服务器向主服务器发送同步请求

·主服务器收到请求,开始执行bgsave命令生成rdb快照,并在缓冲区中记录此后执行的所有写命令

·主服务器bgsave执行完后,向所有从服务器发送快照文件,发送期间会继续记录执行的写命令

·从服务器收到快照文件后会丢弃旧数据载入收到的新快照

·主服务器发送完成后,向从服务器发送缓冲区写命令

·从服务器完成快照的载入,开始接受命令请求,并执行来自主服务器的缓冲区的写命令

2)哨兵模式

假设主服务器宕机,哨兵1先检测到这个结果,系统并不会马上进行 failover 过程,仅仅是哨兵1主观的认为主服务器不可用,这个现象成为主观下线。当后面的哨兵也检测到主服务器不可用,并且数量达到一定值时,那么哨兵之间就会进行一次投票,投票的结果由一个哨兵发起,进行 failover 操作。切换成功后,就会通过发布订阅模式,让各个哨兵把自己监控的从服务器实现切换主机,这个过程称为客观下线。 

3)集群模式

根据官方推荐,集群部署至少要 3 台以上的master节点,最好使用 3 主 3 从六个节点的模式。

在 Redis 的每一个节点上,都有这么两个东西,一个是插槽(slot),它的的取值范围是:0-16383。还有一个就是cluster,可以理解为是一个集群管理的插件。当我们的存取的 Key到达的时候,Redis 会根据 crc16的算法得出一个结果,然后把结果对 16384 求余数,这样每个 key 都会对应一个编号在 0-16383 之间的哈希槽,通过这个值,去找到对应的插槽所对应的节点,然后直接自动跳转到这个对应的节点上进行存取操作。

3.缓存穿透,缓存击穿,缓存雪崩

        缓存穿透:是指缓存和数据库中都没有数据,而用户不断发起请求,流量大时,可能数据库就挂掉了。可以将请求的key对应的value设置为null,缓存有效时间可以设置短一点

        缓存击穿:是指缓存中没有但数据库中有数据,由于并发用户特别多,同时读缓存没有读到数据,又同时去数据库中取数据,引起数据库压力瞬间增大。可以设置热点数据永不过期,布隆过滤器。

        缓存雪崩:缓存中大批数据到了过期时间,查询数据量巨大,引起数据库压力过大。可以设置热点数据永不过期;缓存数据的过期时间随机设置,防止在同一时间大量数据过期

4.redis和数据库数据一致性

        1)先删缓存,再更新数据库

        在删除缓存成功,而数据库还没更新成功过程中,请求会从数据库中读到旧数据,而且如果并发量比较大的话,还有可能出现缓存穿透。

        可以采用消息队列加异步重试去解决

        2)先更新数据库再删缓存

        在更新数据库成功,缓存还没删除期间,会从缓存中读到旧数据。

        可以订阅binlog异步删除

        3)延迟双删

        先删除缓存,再更新数据库,更新成功后休眠一会,再次删除缓存,这样之后的请求会从数据库读到新数据,并把新数据写入到缓存。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值