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,导致服务起不来,最后设置超时时间,完美解决!

 

key的回收策略

 

  

posted @ 2018-05-21 17:16  懂得了才能做一些改变  阅读(626)  评论(0)    收藏  举报