微服务实战系列之Redis

前言

云淡天高,落木萧萧,一阵西北风掠过,似寒刀。冬天渐渐变得更名副其实了,"暖冬"的说法有点言过其实了。------碎碎念


此刻,博主的"微服务实战系列"的队伍已满10员"悍将",但是如何征服微服务这座大山,依然尚需时日。所谓一人一岗一责,术业有专攻。就像攻城离不开挖地道的、投石块的、射箭的,学习微服务自然也要"四面八方",面面俱到。

昨天一篇Cache,突然给博主带来了灵感,索性做个Cache系列吧,分享各位盆友。

闲言少叙,言归正传。今天主讲Cache第一悍将:Redis,从实战出发,理论联系实际。


一、Redis入门

Redis是一个开源的、使用C语言编写的、支持网络交互的、可基于内存也可持久化的Key-Value数据库。

是不是和Map类似?先开始安装吧。

1. 快速安装

首先准备一个redis稳定的tar包,上传至 /usr/local/redis

powershell 复制代码
mkdir -p /usr/local/redis //创建目录
cd /usr/local/redis
tar -zxvf redis-7.0.10.tar.gz
cd /usr/local/redis/redis-7.0.10
make
make PREFIX=/usr/local/redis install

如看到"Hint:It's a good idea to run make...",那么恭喜你!

修改必要配置:

powershell 复制代码
requirepass xxx  //设置密码
daemonize yes //后台启动

到此,可以启动了:

powershell 复制代码
cd  /usr/local/redis/bin
redis-server /usr/local/redis/redis-7.0.10/redis.conf
2. 数据结构

既然是K-V数据库,那必须有一对Key和Value。

2.1 Key

key一般使用字符串存储,但是定义key时,有两点注意:

  1. 长度不能太长,太长会占用内存,影响效率;
  2. 长度也不宜太短,太短影响可读性;
2.2 Value
  1. String-字符串
  2. Hash 哈希
  3. List 列表
  4. Set 集合
  5. Sorted_set 有序集合

二、单点模式

什么是单点?顾名思义,有且仅有一个实例,即一个redis server。

单点模式最简单,适合于业务量较小,并发要求较低的场景,比如:

通过合理的定义K,实现高热数据的缓存同步,下次再请求时,可从缓存读取。

当然此模式仍需关注内存占用率和单点故障。

三、集群模式

Redis集群是一种通过将多个Redis节点互联,实现高可用、高性能的数据缓存方案。该方案可以促使Redis在不同节点上同时提供服务,提高整体可靠性。

Redis集群主要有三种模式:主从复制模式(Master-Slave),哨兵模式(Sentinel)、Cluster模式

1. 主从复制模式

主从复制从上图可以看出,由Master负责写操作,其Slave负责同步和读操作。

当然Slave也可以同步到多级Slave,让我们把目光聚焦下图:

那么,如何实现主从复制呢,命令如下:

powershell 复制代码
# 在Slave节点中,新增:replicaof 主节点IP和端口
replicaof Master_IP 6379
2. 哨兵模式

简单讲,哨兵模式是在主从复制模式基础上,新增了一个"岗哨",负责警卫。如Master发生故障,立即在集群中指定新的Master,实现服务高可用。哨兵一般使用Sentinel,前序文章已讲过哦,可回看。

如何实现哨兵模式呢?

可指定其中一个Redis节点为哨兵,同时配置sentinel(一般在sentinel.conf文件完成):

powershell 复制代码
# 哨兵端口号
port 16379
# sentinel monitor 配置被监控主节点以及触发故障转移所需的最小哨兵节点数
sentinel monitor yourmaster IP 6379 1
# sentinel down-after-milliseconds 被监控主节点时效时间(毫秒)
sentinel down-after-milliseconds yourmaster 60000
# sentinel failover-timeout 被监控主节点故障转移超时时间(毫秒)
sentinel failover-timeout yourmaster 180000

启动哨兵模式:

powershell 复制代码
redis-sentinel /usr/local/redis/sentinel/sentinel.conf
3. Cluster模式

Cluster为实现缓存的高可用,引入了数据分片的概念。可以理解为把数据拆为一份一份的数据单元,根据一定算法(CRC16),完成数据拆分,从而实现分布式存储。

那该如何实现呢?准备多个Redis节点(注意端口不同),并参考如下配置redis.conf

powershell 复制代码
# cluster节点端口号
port 16379
# 开启集群模式
cluster-enabled yes
# 节点超时时间
cluster-node-timeout 10000

参考如下命令,启动每个节点:

powershell 复制代码
redis-server /usr/local/redis/redis-7.0.10/redis.conf

最后,一键完成Cluster(实现2主2从Cluster):

powershell 复制代码
redis-cli --cluster create IP:16379 IP:26379 IP:36379 IP:46379 --cluster-replicas 1

结语

今天博主对Redis的基本使用进行了介绍,无论什么架构、什么模式,取决于业务的场景和发展趋势。工具服务于业务,结合业务选择合适的工具,是当下急需的能力。

好了,缓存第一篇到此为止,欢迎分享与讨论!

相关推荐
zhou lily2 小时前
高可用(HA)架构:在混合云环境下,如何通过多活容灾保障核心业务流的稳定性
架构
吴佳浩 Alben3 小时前
Agent 安全红线:越狱防御、间接注入与数据防泄漏实战
人工智能·安全·语言模型·架构·ai编程
木木学AI4 小时前
2026主流大模型电话机器人系统解析:技术架构、业务执行与企业落地实践
架构·系统架构·机器人
mengzhi啊4 小时前
缓存类CacheDataManager把临时数据存入json。做成插件·
qt·缓存·json
ChampaignWolf4 小时前
在 SAP S/4HANA 内部基于 ICF Handler 从零实现 ABAP MCP Server:架构、代码与踩坑实录
c++·架构·sap·abap·mcp
国科安芯4 小时前
星链供电架构中的高集成度电源管理方案研究——基于ASP4644四通道降压稳压器在低轨卫星星座中的应用分析
大数据·单片机·嵌入式硬件·架构·低轨卫星·星间链路
诚心呈意共享外卖配送系统4 小时前
中秋礼品配送峰值场景下,自建同城配送平台的技术选型与架构实践
架构·系统架构·创业创新
爱吃火鸡面呀4 小时前
HDFS 架构深度解析:从核心组件到数据读写全流程
hadoop·hdfs·架构
wuyk5555 小时前
从零吃透 MQTT 通信|第 8 章 FreeRTOS 多任务架构下 MQTT 工程架构,任务拆分、队列解耦、临界区保护
c语言·开发语言·stm32·学习·架构
彧azz5 小时前
Redis 全面指南:从核心概念到高可用架构实战
数据库·redis·架构