微服务实战系列之Redis

news2025/1/21 21:57:38

前言

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

  • 微服务实战系列之Cache
  • 微服务实战系列之Nginx(技巧篇)
  • 微服务实战系列之Nginx
  • 微服务实战系列之Feign
  • 微服务实战系列之Sentinel
  • 微服务实战系列之Token
  • 微服务实战系列之Nacos
  • 微服务实战系列之Gateway
  • 微服务实战系列之加密RSA
  • 微服务实战系列之签名Sign

此刻,博主的“微服务实战系列”的队伍已满10员“悍将”,但是如何征服微服务这座大山,依然尚需时日。所谓一人一岗一责,术业有专攻。就像攻城离不开挖地道的、投石块的、射箭的,学习微服务自然也要“四面八方”,面面俱到。
昨天一篇Cache,突然给博主带来了灵感,索性做个Cache系列吧,分享各位盆友。
闲言少叙,言归正传。今天主讲Cache第一悍将:Redis,从实战出发,理论联系实际。
在这里插入图片描述


一、Redis入门

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

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

1. 快速安装

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

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...”,那么恭喜你!
修改必要配置:

requirepass xxx  //设置密码
daemonize yes //后台启动

到此,可以启动了:

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,让我们把目光聚焦下图:
在这里插入图片描述
那么,如何实现主从复制呢,命令如下:

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

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

在这里插入图片描述
如何实现哨兵模式呢?
可指定其中一个Redis节点为哨兵,同时配置sentinel(一般在sentinel.conf文件完成):

# 哨兵端口号
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

启动哨兵模式:

redis-sentinel /usr/local/redis/sentinel/sentinel.conf
3. Cluster模式

Cluster为实现缓存的高可用,引入了数据分片的概念。可以理解为把数据拆为一份一份的数据单元,根据一定算法(CRC16),完成数据拆分,从而实现分布式存储。
在这里插入图片描述
那该如何实现呢?准备多个Redis节点(注意端口不同),并参考如下配置redis.conf

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

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

redis-server /usr/local/redis/redis-7.0.10/redis.conf

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

redis-cli --cluster create IP:16379 IP:26379 IP:36379 IP:46379 --cluster-replicas 1

结语

今天博主对Redis的基本使用进行了介绍,无论什么架构、什么模式,取决于业务的场景和发展趋势。工具服务于业务,结合业务选择合适的工具,是当下急需的能力。
好了,缓存第一篇到此为止,欢迎分享与讨论!

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1279876.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

实战分析和精华总结:CORS跨域资源共享漏洞数据劫持、复现、分析、利用及修复过程

实战分析和精华总结:CORS跨域资源共享漏洞数据劫持、复现、分析、利用及修复过程。 CORS跨域资源共享漏洞与JSONP劫持漏洞类似,都是程序员在解决跨域问题中进行了错误的配置。攻击者可以利用Web应用对用户请求数据包的Origin头校验不严格,诱骗受害者访问攻击者制作好的恶意…

微前端实战:打造高效、灵活的前端应用架构

文章目录 一、微前端简介二、微前端的优势1. 高度模块化2. 独立部署3. 易于扩展4. 技术栈无关5. 独立升级 三、微前端的原理四、微前端案例思路《微前端实战》编辑推荐内容简介作者简介目录前言/序言 随着互联网行业的快速发展,前端应用的规模和复杂度也在不断增加。…

controller能接收到数据有数据但是前端无法显示数据

又是制作系统时遇到的问题。只是想做个查询商品的页面,结果弄了一天,在网上各种查问题,各种解决办法用在我的代码上,换了无数种关键词搜索终于找到了一条成功解决了问题。 问题描述: 事情是这样的:我要写一…

Go读取yaml文件,struct返回,json输出

程序模块中,缺少不了一些配置定义,这时定义yaml是个很好的选择 先定义yaml文件内容,文件名为:task_status_config.yaml confs:#阅读类任务,即提醒任务read:name: readawait: #待开始任务status_id: 0ing: #进行中任务…

Python遥感开发之批量拼接

Python遥感开发之批量拼接 1 遥感图像无交错的批量拼接2 遥感图像有交错的批量拼接 前言:主要借助python实现遥感影像的批量拼接,遥感影像的批量拼接主要分为两种情况,一种是遥感图像无交错,另一种情况是遥感图像相互有交错。具体…

模板可变参数/包装器

一、什么是模板可变参数 1、对比函数可变参数 可变参数即参数的数量是不确定的,底层根据用户传入的数量,开一个数组存储对应的参数。 2、基本形式 args -- argument 参数 [0,n]个参数 // Args是一个模板参数包,args是一个函数形参参数包…

mysql语句性能分析工具——profiling

以往我们已经介绍了一个mysql的分析工具:mysql慢查询日志分析工具(pt-query-digest),可以看我的文章:mysql慢查询日志分析工具(pt-query-digest)-CSDN博客 一、profiling的介绍 sql查询慢的情况很常见,对…

43 - 什么是数据的强、弱一致性?

说到一致性,其实在系统的很多地方都存在数据一致性的相关问题。除了在并发编程中保证共享变量数据的一致性之外,还有数据库的 ACID 中的 C(Consistency 一致性)、分布式系统的 CAP 理论中的 C(Consistency 一致性&…

【Docker实操】创建一个Nginx服务

一、获取nginx官方镜像 docker pull nginx //拉取nginx官方镜像 docker image nginx //查看镜像二、创建项目目录 项目目录:/root/www2/nginx //如果当前目录在root mkdir www2 mkdir www2/nginx cd www2/nginx //进入项目目录三、创建源码文件 //当前目录&…

jsp高校教师调课管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 JSP 高校教师调课管理系统是一套完善的java web信息管理系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发,数据库为Mysq…

react native 环境准备

一、必备安装 1、安装node 注意 Node 的版本应大于等于 16,安装完 Node 后建议设置 npm 镜像(淘宝源)以加速后面的过程(或使用科学上网工具)。 node下载地址:Download | Node.js设置淘宝源 npm config s…

GEE:均值滤波

作者:CSDN @ _养乐多_ 本文将介绍在 Google Earth Engine(GEE)平台上,进行均值滤波操作的代码框架、核心函数和多种卷积核。 并分别以林地区域和农田区域为试验区,以NDVI图像为例。结果如下图所示, 文章目录 一、均值滤波二、完整代码三、代码链接一、均值滤波 均值滤…

大数据实战项目_电商推荐系统

一、 项目介绍 HadoopSpark (Python)Scala SparkSQLSparkStreaming MongoDB Redis Kafka Flume ( SpringMVC vue) 1 项目介绍 1.1 项目系统架构 项目以推荐系统建设领域知名的经过修改过的中文亚马逊电商数据集作为依托,以某电商网站真实业务数据架构为基…

代码随想录刷题题Day3

刷题的第三天,希望自己能够不断坚持下去,迎来蜕变。😀😀😀 刷题语言:C / Python Day3 任务 ● 链表理论基础 ● 203.移除链表元素 ● 707.设计链表 ● 206.反转链表 1 链表理论基础 链表:通过…

【ArcGIS Pro微课1000例】0045:深度学习--车牌模糊

借助ArcGIS Pro提供的车牌模糊训练模型,可以很方便实现车牌模糊。 文章目录 一、车牌模糊对比二、工具介绍三、案例实现一、车牌模糊对比 车牌模糊前: 车牌模糊后: 二、工具介绍 本功能使用的依然是ArcGIS Pro提供的深度学习工具中的使用深度学习分类像素(Classify Pixel…

【PUSDN】java中easyexcel导入导出带有图片的Excel(main方法方式)

简述 java中easyexcel导入导出带有图片的Excel(main方法方式),web方式详见另一篇 由于电脑音频问题,视频暂时没有解说声音, 回头重新补上 前情提示 如果有任何疑问、需求、技术支持,欢迎点赞&#xff0…

智能优化算法应用:基于松鼠算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于松鼠算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于松鼠算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.松鼠算法4.实验参数设定5.算法结果6.参考文献7.MATLAB…

精准长尾关键词批量挖掘工具,长尾关键词挖掘正确使用方法

互联网时代,SEO已然成为网站推广的关键一环。而在SEO的世界里,长尾关键词无疑是一块被广泛忽视却蕴含着巨大潜力的宝地。 什么是长尾关键词 长尾关键词,指的是那些相对不那么热门、搜索量较低但更为具体、更贴近用户真实需求的关键词。与短…

Knowledge Review(CVPR 2021)论文解析

paper:Distilling Knowledge via Knowledge Review official implementation:https://github.com/dvlab-research/ReviewKD 前言 识蒸馏将知识从教师网络转移到学生网络,可以提高学生网络的性能,作为一种“模型压缩”的方法被…

vscode调试mit6s081Lab

环境 mit6.s081的实验环境gdb-multiarch(用于gdb调试,vscode调试实质上就是提供个图形化页面,底层还是这个) // 安装 gdb-multiarch sudo apt-get install gdb-multiarch大家好,我叫徐锦桐,个人博客地址为…