redis基本使用及哨兵和分布式
很多系统,除了关系型数据库,还可以见到redis。为什么呢?大概是用redis存储分布式会话及使用分布式锁,纯粹地做为缓存的还真不多见。
学习和进阶redis,推荐官方文档。
redis的数据结构我们都比较熟悉,但也有一些比较怪的地方,比如String类型,其本质是字节序列,可以支持int,float的基本计算。而其他的,都可以称之为组合模式。
在redis的部署架构方面,官方提供了三种:redis-sentinel,redis-cluster, replica。
其演化过程是replica-->sentinel-->cluster,复杂度和好用逐次提升。
replica(主从)架构实现了读写分离,提升了可用性和高并发。但主从模式下,主机挂了,需要手动切换到从机,不够自动,不方便生产环境使用。这时sentinel就登场了,
哨兵模式的高可用原理:哨兵发送命令,等待Master主节点响应,从而监控主节点的运行,当主节点出现故障时,由Redis哨兵自动完成故障发现和转移,并通知Redis客户端,
实现高可用性。在哨兵模式中,读写仍是分离的。springboot集成哨兵模式非常简单,配置哨兵选项,此时,redisclient不是直接连接一个redisserver,而是通过哨兵选择。
在集群模式中,主要就是sharding,hash slot插槽的概念,做水平扩展,分担并发压力和存储。读写都在master节点,slave节点作为候补节点。

为什么说redis-cluster是AP的,在于主从复制时,是async模式,master挂掉后,salve上位,可能会丢失部分数据
redis还有一个问题, 大key的查找,key的过期回收策略。
记录一个在开发中产生的问题,redis连接未设置超时,导每次启动都新建连接,最后超过最大连接数400,导致服务起不来,最后设置超时时间,完美解决!

浙公网安备 33010602011771号