微服务实战系列之Redis

前言

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

  • 微服务实战系列之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.mzph.cn/news/204150.shtml

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

相关文章

多屏模式输入法可以正确切换屏幕展示原理剖析

背景 hi,粉丝朋友们: 近期有个学员问到了一个输入法相关问题。刚好梳理了一下输入法相关的在多屏模式的一个展示流程,这里做个记录,也相当于深入理解窗口相关的一篇干货blog。 如上面两幅图展示,输入法可以自由自在显…

谁登榜? 2023数据安全平台神兽企业

在数字经济的浪潮中,数据安全已成为企业发展的关键支撑。2023年8月,CSA大中华区启动数据安全平台神兽企业调研,得到了众多网络安全综合厂商、数据安全专业厂商、云服务提供商、用户单位的广泛关注和积极参与。 历时4个月,CSA大中…

Java 线程池到底是如何复用线程的

原理概述 其实 Java 线程池的实现原理很简单,说白了就是一个线程集合 workerSet 和一个阻塞队列 workQueue。 当用户向线程池提交一个任务时,线程池会先将任务放入 workQueue 中。workerSet 中的线程会不断的从 workQueue 中获取线程然后执行。当 work…

多人聊天Java

服务端 import java.io.*; import java.net.*; import java.util.ArrayList; public class Server{ public static ServerSocket server_socket; public static ArrayList<Socket> socketListnew ArrayList<Socket>(); public static void main(String []ar…

性能调优入门

从公众号转载&#xff0c;关注微信公众号掌握更多技术动态 --------------------------------------------------------------- 一、性能定律和数理基础 1.三个定律法则 (1)帕累托法则 我它也被称为 80/20 法则、关键少数法则&#xff0c;或者八二法则。人们在生活中发现很多…

Ubuntur编译ROS报错:error PCL requires C++14 or above

ubuntu20.04 编译ROS包 报错&#xff1a; error&#xff1a; PCL requires C14 or above&#xff1a; 修改Cmakelists.txt文件&#xff1a; set&#xff08;CMAKE_CXX_STANDARD 14&#xff09; 再次编译成功.

用 Bytebase 做数据库 schema 迁移

数据库 schema 迁移指修改管理数据库结构的变更&#xff0c;包括为数据库添加视图或表、更改字段类型或定义新约束。Bytebase 提供了可视化 GUI 方便迁移数据库 schema&#xff0c;本教程将展示如何使用 Bytebase 为 schema 迁移配上 SQL 审核&#xff0c;自定义审批流&#xf…

改造python3中的http.server为简单的文件上传下载服务

改造 修改python3中的http.server.SimpleHTTPRequestHandler&#xff0c;实现简单的文件上传下载服务 simple_http_file_server.py&#xff1a; # !/usr/bin/env python3import datetime import email import html import http.server import io import mimetypes import os …

UDP协议实现群聊

服务端 package ydd;import java.io.*; import java.net.*; import java.util.ArrayList; public class A2{public static ServerSocket server_socket;public static ArrayList<Socket> socketListnew ArrayList<Socket>(); public static void main(String []a…

【C++】如何优雅地把二维数组初始化为0

2023年12月7日&#xff0c;周四上午 目录 为什么要初始化二维数组不优雅的初始化方式&#xff1a;使用两个for循环优雅的初始化方式一&#xff1a;使用初始化列表优雅的初始化方式二&#xff1a;使用memset函数 为什么要初始化二维数组 如果不初始化二维数组&#xff0c;那么…

点评项目——短信登陆模块

2023.12.6 短信登陆如果基于session来实现&#xff0c;会存在session共享问题&#xff1a;多台Tomcat不能共享session存储空间&#xff0c;这会导致当请求切换到不同服务器时出现数据丢失的问题。 早期的解决办法是让session提供一个数据拷贝的功能&#xff0c;即让各个Tomcat的…

【Python】流畅!一个非常好用的网络数据采集工具!

文章目录 前言一、注册二、初窥三 数据集四 自定义网站网络爬虫总结 前言 你是否曾为获取重要数据而感到困扰&#xff1f;是否因为数据封锁而无法获取所需信息&#xff1f;是否因为数据格式混乱而头疼&#xff1f;现在&#xff0c;所有这些问题都可以迎刃而解。让我为大家介绍…

【数据结构】——二叉树简答题模板

目录 一、树和二叉树的概念&#xff08;一&#xff09;二叉树的定义和性质&#xff08;二&#xff09;树和二叉树的区别 二、完全二叉树和满二叉树三、二叉树的遍历&#xff08;一&#xff09;由序列确定二叉树&#xff08;二&#xff09;不同遍历序列的关系 四、二叉树的性质&…

智能井盖传感器产品介绍,井盖传感器推荐

智能井盖传感器是一种先进的设备&#xff0c;能够提高城市管理的智能化水平。该传感器作为城市生命线建设的核心组成部分&#xff0c;为智慧城市的正常建设提供了有力的保障&#xff0c;能够提高城市管理的智能化水平。这种设备通过高度灵敏的传感器网络&#xff0c;实时监测井…

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

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

通过Powershell远程控制windows服务器

1、被测服务器5985、5986端口开启&#xff0c;在网络设置中&#xff0c;点击“更改连接属性”。 2、网络配置文件中选择“专用”。 3、以管理员权限运行Powershell&#xff0c; 4.通过powershell命令在本地电脑上添加远端信任主机 winrm set winrm/config/client {TrustedHos…

关于DWC OTG2.0中PFC的理解

在DWC OTG2.0 Controller手册中&#xff0c;有一章节专门介绍了PFC&#xff0c;Packet FIFO Controller。其内部分为共享FIFO&#xff08;shared FIFO&#xff09;以及专用FIFO&#xff08;Dedicated FIFO&#xff09;&#xff0c;并针对dev和host两种模式&#xff0c;并且还要…

国内AI翘楚,看看有没有你心动的offer?

科技创新争占高地&#xff0c;AI领域各显神通。从一战成名的阿尔法狗到引起轩然大波的ChatGPT&#xff0c;我们早已卷入了一场没有硝烟的革命。前方世人看到的科技日新日异、岁月静好&#xff0c;后方是各大企业的绞尽脑汁、争先恐后。人工智能时代&#xff0c;AI是挡不住的时代…

学习mysql记录

环境: macbookpro m1 1. 安装mysql 使用苹果自带的包管理工具brew进行安装 1. brew install mysql (安装) 2. brew services start mysql (启动mysql服务) 1.1 如果提示zsh: mysql command not found, 终端执行以下命令 1. cd ~ (切到根目录) 2. vi .bash_profile (进入编辑…

QxOrm 如何自定义主键?

默认情况下QxOrm的主键是long类型自增的&#xff0c;但是有时候我们不想使用这个主键&#xff0c;想使用比如string类型的主键。 可以使用QX_REGISTER_PRIMARY_KEY宏定义另一种类型&#xff08;例如&#xff0c;QString 类型&#xff09;的唯一 id&#xff08;主键&#xff09…