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 @   懂得了才能做一些改变  阅读(617)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
点击右上角即可分享
微信分享提示