![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Redis
文章平均质量分 93
redis专栏
柯南二号
一个喜欢探讨Java后端技术的小白
展开
-
从Ping-Pong消息学习Gossip协议
从Ping-Pong消息学习Gossip协议从这篇文章开始,我们又将进入一个新的模块:“Redis Cluster”模块。在这个模块中,我会带你了解 Redis Cluster 的关键功能实现,包括了 Gossip 协议通信、集群关键命令和数据迁移等机制的设计与实现。通过这些文章的学习,一方面,你可以深入了解 Redis 是如何完成集群关系维护、请求转发和数据迁移的。当你遇到集群问题时,这些知识可以帮助你排查问题。另一方面,当你在开发分布式集群时,不可避免地会遇到节点信息维护、数据放置和迁移等设计问题,原创 2022-02-14 23:10:34 · 1648 阅读 · 0 评论 -
通信开销:限制Redis Cluster规模的关键因素
通信开销:限制Redis Cluster规模的关键因素Redis Cluster 能保存的数据量以及支撑的吞吐量,跟集群的实例规模密切相关。Redis 官方给出了 Redis Cluster 的规模上限,就是一个集群运行 1000 个实例。那么,你可能会问,为什么要限定集群规模呢?其实,这里的一个关键因素就是:实例间的通信开销会随着实例规模增加而增大,在集群超过一定规模时(比如 800 节点),集群吞吐量反而会下降。所以,集群的实际规模会受到限制。今天这篇文章,我们就来聊聊,集群实例间的通信开销是如何原创 2022-02-14 22:16:06 · 170 阅读 · 0 评论 -
redis源码中的Pub/Sub发布订阅通信
redis源码中的Pub/Sub发布订阅通信在前面两篇文章中,我们学习了哨兵工作的基本过程:哨兵会使用 sentinelRedisInstance 结构体来记录主节点的信息,在这个结构体中又记录了监听同一主节点的其他哨兵的信息。那么,一个哨兵是如何获得其他哨兵的信息的呢?这其实就和哨兵在运行过程中,使用的发布订阅(Pub/Sub)通信方法有关了。Pub/Sub 通信方法可以让哨兵订阅一个或多个频道,当频道中有消息时,哨兵可以收到相应消息;同时,哨兵也可以向频道中发布自己生成的消息,以便订阅该频道的其他客原创 2022-02-09 23:32:32 · 1496 阅读 · 2 评论 -
从哨兵Leader选举学习Raft协议实现(下)
从哨兵Leader选举学习Raft协议实现(下)上篇文章,我给你介绍了 Raft 协议的基本流程,以及哨兵实例工作的基本过程。哨兵是通过 serverCron 函数的周期性执行,进而在 serverCron 中调用 sentinelTimer 函数,实现周期性处理哨兵相关的时间事件。而 sentinelTimer 函数处理的时间事件,就包括了对哨兵监听的每个主节点,它会通过调用 sentinelHandleRedisInstance 函数,来检查主节点的在线状态,并在主节点客观下线时进行故障切换。另外,原创 2022-02-09 20:00:12 · 1502 阅读 · 0 评论 -
从哨兵Leader选举学习Raft协议实现(上)
从哨兵Leader选举学习Raft协议实现(上)在上篇文章当中,我们了解了哨兵实例的初始化过程。哨兵实例一旦运行后,会周期性地检查它所监测的主节点的运行状态。当发现主节点出现客观下线时,哨兵实例就要开始执行故障切换流程了。不过,我们在部署哨兵实例时,通常会部署多个哨兵来进行共同决策,这样就避免了单个哨兵对主节点状态的误判。但是这同时也给我们带来了一个问题,即当有多个哨兵判断出主节点故障后,究竟由谁来执行故障切换?实际上,这就和哨兵 Leader 选举有关了。而哨兵 Leader 选举,又涉及到分布式系原创 2022-02-08 22:50:44 · 2223 阅读 · 0 评论 -
哨兵机制源码
哨兵机制源码我们知道,Redis 主从复制是保证 Redis 可用性的一个重要手段。而一旦 Redis 主节点发生故障,哨兵机制就会执行故障切换。这个故障切换过程实现起来其实比较复杂,涉及了哨兵 Leader 选举、新主节点选举和故障切换等关键操作。但同时,这个故障切换过程又是我们在实现高可用系统时经常要面对的开发需求。所以从这篇文章开始,逐一介绍下,Redis 哨兵机制及其实现故障切换的关键技术设计与实现。通过这部分内容的学习,既可以了解在故障切换过程中,起到重要作用的 Raft 协议是如何实现的,而原创 2022-02-08 21:58:08 · 1187 阅读 · 0 评论 -
Redis的主从辅助基于状态机的设计与实现
主从复制技术我们应该都比较熟悉,因为在使用 Redis 或 MySQL 数据库时,我们经常会使用主从复制来实现主从节点间的数据同步,以此提升服务的高可用性。从原理上来说,Redis 的主从复制主要包括了全量复制、增量复制和长连接同步三种情况。全量复制传输 RDB 文件,增量复制传输主从断连期间的命令,而长连接同步则是把主节点正常收到的请求传输给从节点。这三种情况看似简单,但是在实现的时候,我们通常都需要考虑主从连接建立、主从握手和验证、复制情况判断和数据传输等多种不同状态下的逻辑处理。那么,如何才能高原创 2022-01-26 23:41:54 · 1049 阅读 · 1 评论 -
从源码阅读AOF重写-下篇
从源码阅读AOF重写-下篇在上篇文章中,我给你介绍了 AOF 重写过程,其中我带你重点了解了 AOF 重写的触发时机,以及 AOF 重写的基本执行流程。现在你已经知道,AOF 重写是通过重写子进程来完成的。但是在上述的最后,我也提到了在 AOF 重写时,主进程仍然在接收客户端写操作,那么这些新写操作会记录到 AOF 重写日志中吗?如果需要记录的话,重写子进程又是通过什么方式向主进程获取这些写操作的呢?接下来,我就来带你了解下 AOF 重写过程中所使用的管道机制,以及主进程和重写子进程的交互过程。这样一原创 2022-01-25 23:08:39 · 1169 阅读 · 0 评论 -
从源码阅读AOF重写-上篇
AOF重写:触发实际与重写影响我们知道,Redis 除了使用内存快照 RDB 来保证数据可靠性之外,还可以使用 AOF 日志。不过,RDB 文件是将某一时刻的内存数据保存成一个文件,而 AOF 日志则会记录接收到的所有写操作。如果 Redis server 的写请求很多,那么 AOF 日志中记录的操作也会越来越多,进而就导致 AOF 日志文件越来越大。所以,为了避免产生过大的 AOF 日志文件,Redis 会对 AOF 文件进行重写,也就是针对当前数据库中每个键值对的最新内容,记录它的插入操作,而不再记原创 2022-01-25 07:53:10 · 1032 阅读 · 0 评论 -
redis-cli使用密码连接
redis-cli使用密码auth “password”,其中"password"就是你redis.conf中requirepass后面的字符串,比如我这里设置的是123456(也就是设置的密码是123456),那么我直接auth "123456"就可以连接了127.0.0.1:6388> auth "123456"...原创 2022-01-25 07:17:00 · 10470 阅读 · 0 评论 -
从源码角度解析如何生成和解读RDB文件
如何生成和解读RDB文件好,那么今天这篇文章,我们就先从 RDB 文件的生成开始学起。下面呢,我先带你来了解下 RDB 创建的入口函数,以及调用这些函数的地方。RDB 创建的入口函数和触发时机Redis 源码中用来创建 RDB 文件的函数有三个,它们都是在rdb.c文件中实现的,接下来我就带你具体了解下。rdbSave 函数这是 Redis server 在本地磁盘创建 RDB 文件的入口函数。它对应了 Redis 的 save 命令,会在 save 命令的实现函数 saveCommand(在 r原创 2022-01-23 19:13:26 · 1486 阅读 · 0 评论 -
使用 Redis 作为 LRU 缓存
使用 Redis 作为 LRU 缓存https://redis.io/topics/lru-cache当 Redis 用作缓存时,通常可以很方便地让它在您添加新数据时自动淘汰旧数据。这种行为在开发者社区中是众所周知的,因为它是流行的 memcached 系统的默认行为。LRU 实际上只是支持的淘汰方法之一。本页涵盖了 Redis maxmemory 指令的更一般主题,该指令用于将内存使用量限制在固定数量,还深入介绍了 Redis 使用的 LRU 算法,这实际上是精确 LRU 的近似值。从 Redis原创 2022-01-11 23:28:41 · 776 阅读 · 0 评论 -
Redis的LFU算法源码实现解析
Redis的LFU算法源码实现解析上篇文章我给你介绍了 Redis 对缓存淘汰策略 LRU 算法的近似实现。其实,Redis 在 4.0 版本后,还引入了 LFU 算法,也就是最不频繁使用(Least Frequently Used,LFU)算法。LFU 算法在进行数据淘汰时,会把最不频繁访问的数据淘汰掉。而 LRU 算法是把最近最少使用的数据淘汰掉,看起来也是淘汰不频繁访问的数据。那么,LFU 算法和 LRU 算法的区别到底有哪些呢?我们在实际场景中,需要使用 LFU 算法吗?其实,如果只是从基本定义原创 2022-01-11 08:28:58 · 2433 阅读 · 0 评论 -
Redis的LRU算法实现源码解析
Redis的LRU算法实现源码解析LRU 算法的基本原理首先,我们需要理解 LRU 算法的基本原理。LRU 算法就是指最近最少使用(Least Recently Used,LRU)算法,这是一个经典的缓存算法。从基本原理上来说,LRU 算法会使用一个链表来维护缓存中每一个数据的访问情况,并根据数据的实时访问,调整数据在链表中的位置,然后通过数据在链表中的位置,来表示数据是最近刚访问的,还是已经有一段时间没有访问了。而具体来说,LRU 算法会把链表的头部和尾部分别设置为 MRU 端和 LRU 端。其中原创 2022-01-10 07:59:24 · 1434 阅读 · 3 评论 -
从源码分析Redis分布式锁的原子性保证
从代码实现看Redis分布式锁的原子性保证分布式锁是 Redis 在实际业务场景中的一个重要应用。当有多个客户端并发访问某个共享资源时,比如要修改数据库中的某条记录,为了避免记录修改冲突,我们可以让所有客户端从 Redis 上获取分布式锁,只有拿到锁的客户端才能操作共享资源。那么,对于分布式锁来说,它实现的关键就是要保证加锁和解锁两个操作是原子操作,这样才能保证多客户端访问时锁的正确性。而通过前面的学习,你知道 Redis 能通过事件驱动框架同时捕获多个客户端的可读事件,也就是命令请求。此外,在 Red原创 2022-01-08 21:47:35 · 2358 阅读 · 0 评论 -
Redis6.0的多IO线程
Redis6.0的多IO线程通过上篇文章的学习,我们知道 Redis server 启动后的进程会以单线程的方式,执行客户端请求解析和处理工作。但是,Redis server 也会通过 bioInit 函数启动三个后台线程,来处理后台任务。也就是说,Redis 不再让主线程执行一些耗时操作,比如同步写、删除等,而是交给后台线程异步完成,从而避免了对主线程的阻塞。实际上,在 2020 年 5 月推出的 Redis 6.0 版本中,Redis 在执行模型中还进一步使用了多线程来处理 IO 任务,这样设计的目原创 2022-01-08 12:18:44 · 889 阅读 · 0 评论 -
Redis的执行模型(Redis源码解析Redis真的是单线程模型吗?)
Redis的执行模型今天这篇文章,我们来聊聊 Redis 的执行模型。所谓的执行模型,就是指 Redis 运行时使用的进程、子进程和线程的个数,以及它们各自负责的工作任务。在实际使用 Redis 的时候,可能经常会听到类似“Redis 是单线程”“Redis 的主 IO 线程”,“Redis 包含多线程”等不同说法。我也听到不少同学提出困惑和疑问:Redis 到底是不是一个单线程的程序?其实,彻底理解这个问题,有助于指导我们保持 Redis 高性能、低延迟的特性。如果说 Redis 就是单线程程序,那原创 2022-01-05 23:25:12 · 997 阅读 · 1 评论 -
Redis中的事件驱动框架
Redis中的事件驱动框架在上篇文章,学习了 Redis 事件驱动框架的基本工作机制,其中介绍了事件驱动框架基于的 Reactor 模型,并以 IO 事件中的客户端连接事件为例,给你介绍了框架运行的基本流程:从 server 初始化时调用 aeCreateFileEvent 函数注册监听事件,到 server 初始化完成后调用 aeMain 函数,而 aeMain 函数循环执行 aeProceeEvent 函数,来捕获和处理客户端请求触发的事件。但是在上篇文章当中,我们主要关注的是框架基本流程,所以到这原创 2022-01-03 22:44:06 · 772 阅读 · 1 评论 -
Redis中的Reactor 模型的工作机制
Redis中的Reactor 模型的工作机制好,首先,我们来看看什么是 Reactor 模型。实际上,Reactor 模型就是网络服务器端用来处理高并发网络 IO 请求的一种编程模型。我把这个模型的特征用两个“三”来总结,也就是:三类处理事件,即连接事件、写事件、读事件;三个关键角色,即 reactor、acceptor、handler。那么,Reactor 模型是如何基于这三类事件和三个角色来处理高并发请求的呢?下面我们就来具体了解下。事件类型与关键角色我们先来看看这三类事件和 React原创 2021-12-27 22:51:09 · 1364 阅读 · 0 评论 -
Redis的网络通信模型
Redis 作为一个 Client-Server 架构的数据库,其源码中少不了用来实现网络通信的部分。而你应该也清楚,通常系统实现网络通信的基本方法是使用 Socket 编程模型,包括创建 Socket、监听端口、处理连接请求和读写请求。但是,由于基本的 Socket 编程模型一次只能处理一个客户端连接上的请求,所以当要处理高并发请求时,一种方案就是使用多线程,让每个线程负责处理一个客户端的请求。而 Redis 负责客户端请求解析和处理的线程只有一个,那么如果直接采用基本 Socket 模型,就会影响 R原创 2021-12-27 00:01:55 · 2912 阅读 · 2 评论 -
Redis Server启动过程从源码来解析
Redis Server启动过程今天,我们先来学习下 Redis server 的启动过程。我们知道,main 函数是 Redis 整个运行程序的入口,并且 Redis 实例在运行时,也会从这个 main 函数开始执行。同时,由于 Redis 是典型的 Client-Server 架构,一旦 Redis 实例开始运行,Redis server 也就会启动,而 main 函数其实也会负责 Redis server 的启动运行。其中,Redis 运行的基本控制逻辑是在server.c文件中完成的,而 m原创 2021-12-21 21:42:51 · 356 阅读 · 0 评论 -
Redis 源码阅读指导(一)
Redis 源码阅读篇可以到官网https://redis.io/download去下载最新版源码一、Redis源码目录结构首先,我们来了解下 Redis 的目录结构。 为什么要从目录结构开始了解呢?其实,这是我自己阅读代码的一个小诀窍:在学习一个 大型系统软件的代码时,要想快速地对代码有个初步认知,了解系统源码的整体目录结构就是一个行之有效的方法。这是因为,系统开发者通常会把完成同一或相近功能的代码文 件,按目录结构来组织。能划归到同一个目录下的代码文件,一般都是具有相近功能目标 的。 所以,从代码原创 2021-12-19 20:59:27 · 208 阅读 · 0 评论 -
Redis中的Stream的实现Radix Tree源码解读
Redis中的Stream的实现Radix Tree源码解读这篇文章,我们继续从底层数据结构的视角出发,来聊聊 Redis 中的 Stream 数据类型是如何保存消息的。Redis 从 5.0 版本开始支持提供 Stream 数据类型,它可以用来保存消息数据,进而能帮助我们实现一个带有消息读写基本功能的消息队列,并用于日常的分布式程序通信当中。我在讲如何使用 Redis 实现消息队列的时候,曾介绍过 Stream。当时,有不少同学就说想学习了解下 Stream 的实现,以便掌握 Stream 内部结构的原创 2021-12-19 20:44:34 · 1869 阅读 · 3 评论 -
ziplist、quicklist、listpack源码设计解读
从ziplist到quicklist,再到listpack的启发介绍 Redis 优化设计数据结构来提升内存利用率的时候,提到可以使用压缩列表(ziplist)来保存数据。所以现在你应该也知道,ziplist 的最大特点,就是它被设计成一种内存紧凑型的数据结构,占用一块连续的内存空间,以达到节省内存的目的。但是,在计算机系统中,任何一个设计都是有利有弊的。对于 ziplist 来说,这个道理同样成立。虽然 ziplist 节省了内存开销,可它也存在两个设计代价:一是不能保存过多的元素,否则访问性能会原创 2021-12-19 16:33:43 · 2041 阅读 · 5 评论 -
Sorted Set源码阅读
Sorted Set源码阅读有序集合为何能同时支持点查询和范围查询?有序集合(Sorted Set)是 Redis 中一种重要的数据类型,它本身是集合类型,同时也可以支持集合中的元素带有权重,并按权重排序。曾经就有一位从事 Redis 开发的同学问我:为什么 Sorted Set 能同时提供以下两种操作 接口,以及它们的复杂度分别是 O(logN)+M 和 O(1) 呢?ZRANGEBYSCORE:按照元素权重返回一个范围内的元素。ZSCORE:返回某个元素的权重值。实际上,这个问题原创 2021-12-11 17:29:38 · 297 阅读 · 0 评论 -
Sorted Set源码阅读,有序集合为何能同时支持点查询和范围查询
Sorted Set源码阅读有序集合为何能同时支持点查询和范围查询?有序集合(Sorted Set)是 Redis 中一种重要的数据类型,它本身是集合类型,同时也可以支持集合中的元素带有权重,并按权重排序。曾经就有一位从事 Redis 开发的同学问我:为什么 Sorted Set 能同时提供以下两种操作 接口,以及它们的复杂度分别是 O(logN)+M 和 O(1) 呢?ZRANGEBYSCORE:按照元素权重返回一个范围内的元素。ZSCORE:返回某个元素的权重值。实际上,这个问题原创 2021-12-11 17:18:41 · 1021 阅读 · 0 评论 -
Redis内存友好的数据结构设计
Redis内存友好的数据结构设计内存友好的数据结构首先要知道,在 Redis 中,有三种数据结构针对内存使用效率做了设计优化,分别是简单动态字符串(SDS)压缩列表(ziplist)整数集合(intset)。下面,我们就分别来学 习一下。SDS 的内存友好设计SDS 设计了不同类型的结构头,包括 sdshdr8、sdshdr16、sdshdr32 和 sdshdr64。这些不同类型的结构头可以适配不同大小的字符串,从而避免了内存浪费。不过,SDS 除了使用精巧设计的结构头外,在保存较小原创 2021-12-11 12:40:52 · 1169 阅读 · 0 评论 -
Redis的Hash的实现
Redis的Hash的实现我们知道,Hash 表是一种非常关键的数据结构,在计算机系统中发挥着重要作用。比如在 Memcached 中,Hash 表被用来索引数据;在数据库系统中,Hash 表被用来辅助 SQL 查询。而对于 Redis 键值数据库来说,Hash 表既是键值对中的一种值类型,同时,Redis 也使用一个全局 Hash 表来保存所有的键值对,从而既满足应用存取 Hash 结构数据需求,又能提供快速查询功能。 那么,Hash 表应用如此广泛的一个重要原因,就是从理论上来说,它能以 O(1)原创 2021-12-05 20:31:11 · 2035 阅读 · 2 评论 -
Redis源码中字符串String的实现
Redis源码中字符串String的实现字符串在我们平时的应用开发中十分常见,比如我们要记录用户信息、商品信息、状态信 息等等,这些都会用到字符串。 而对于 Redis 来说,键值对中的键是字符串,值有时也是字符串。我们在 Redis 中写入一 条用户信息,记录了用户姓名、性别、所在城市等,这些都是字符串,如下所示: SET user:id:100 {“name”: “zhangsan”, “gender”: “M”,“city”:"beijing"}此外,Redis 实例和客户端交互的命令和数据,原创 2021-12-01 23:45:47 · 362 阅读 · 0 评论 -
Redis源码中字符串String的实现
Redis源码中字符串String的实现字符串在我们平时的应用开发中十分常见,比如我们要记录用户信息、商品信息、状态信 息等等,这些都会用到字符串。 而对于 Redis 来说,键值对中的键是字符串,值有时也是字符串。我们在 Redis 中写入一 条用户信息,记录了用户姓名、性别、所在城市等,这些都是字符串,如下所示: SET user:id:100 {“name”: “zhangsan”, “gender”: “M”,“city”:"beijing"}此外,Redis 实例和客户端交互的命令.原创 2021-12-01 23:44:37 · 836 阅读 · 0 评论 -
Redis 源码阅读篇
Redis 源码阅读篇可以到官网https://redis.io/download去下载最新版源码一、Redis源码目录结构首先,我们来了解下 Redis 的目录结构。 为什么要从目录结构开始了解呢?其实,这是我自己阅读代码的一个小诀窍:在学习一个 大型系统软件的代码时,要想快速地对代码有个初步认知,了解系统源码的整体目录结构就是一个行之有效的方法。这是因为,系统开发者通常会把完成同一或相近功能的代码文 件,按目录结构来组织。能划归到同一个目录下的代码文件,一般都是具有相近功能目标 的。 所..原创 2021-11-28 23:32:26 · 1367 阅读 · 0 评论 -
Redis 缓存雪崩、缓存击穿、缓存穿透定义以及解决办法
Redis 缓存雪崩、缓存击穿、缓存穿透定义以及解决办法在实际应用 Redis 缓存时,我们经常会遇到一些异常问题,概括来说有 4 个方面:缓存中的数据和数据库中的不一致;缓存雪崩;缓存击穿;缓存穿透。只要我们使用 Redis 缓存,就必然会面对缓存和数据库间的一致性保证问题,这也算是 Redis 缓存应用中的“必答题”了。最重要的是,如果数据不一致,那么业务应用从缓存中读取的数据就不是最新数据,这会导致严重的错误。比如说,我们把电商商品的库存信息缓存在 Redis 中,如果库存信息不对,那原创 2021-03-22 00:05:28 · 500 阅读 · 0 评论 -
Redis高性能IO模型 redis为什么单线程还那么快
1.2 高性能IO模型我们通常说,Redis 是单线程,主要是指 Redis 的网络 IO 和键值对读写是由一个线程来完成的,这也是 Redis 对外提供键值存储服务的主要流程。但 Redis 的其他功能,比如持久化、异步删除、集群数据同步等,其实是由额外的线程执行的。所以,严格来说,Redis 并不是单线程,但是我们一般把 Redis 称为单线程高性能,这样显得“酷”些。接下来,我也会把 Redis 称为单线程模式。1.2.1 Redis 为什么用单线程?要更好地理解 Redis 为什么用单线程,我原创 2021-01-20 18:19:12 · 268 阅读 · 0 评论 -
Redis基本数据类型
Redis基本数据类型一、List集合底层是一个双向无环链表实现的,有一个头指针和一个尾指针,可以迅速的定位到开头和结尾。lpush k3 a b c d e相当于一个双向无环链表,然后每次lpush的话是每次将后面的数据拼接到前一个数据的左边比如上述命令,其实在里面存储的顺序会是 e d c b alpop k3就是把当前的栈顶的弹出来,所以如下图所示,返回的是e找某个范围内的lrange k3 0 -1靠着索引找某个具体位置的lindex k3 2设置某个具体的值原创 2021-01-18 18:14:54 · 181 阅读 · 0 评论 -
Redis持久化
Redis 持久化文章目录Redis 持久化**1.1 RDB的优点****1.2 RDB的缺点****AOF 优点****1.3 AOF 缺点**1.4 如何选择使用哪种持久化方式?**1.5 快照**1.6 工作方式1.7 只追加操作的文件(Append-only file,AOF)1.8 日志重写1.9 AOF有多耐用?1.10 如果AOF文件损坏了怎么办?1.11 工作原理1.12 怎样从RDB方式切换为AOF方式1.13 AOF和RDB之间的相互作用1.14 备份redis数据1.15 容灾备份原创 2020-11-14 20:01:27 · 220 阅读 · 0 评论 -
Redis基础复习
Redis 复习一、基本介绍Redis (Remote Dictionary Server )是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。 Redis 内置了 复制(replication)原创 2020-08-21 11:36:29 · 320 阅读 · 0 评论 -
Linux云服务器上配置多个redis服务实例
一台服务器上配置多个redis服务实例第一步:创建一个目录用于存放redis的安装包cd /usr/localmkdir softwarecd software/第二步:下载redis的源码包 wget http://download.redis.io/releases/redis-5.0.5.tar.gz 第三步:解压安装包并移到自己想要的目录下解压tar -xf redis-5.0.5.tar.gz 移动mv redis-5.0.5 /usr/local/redis原创 2020-08-19 14:24:02 · 1923 阅读 · 2 评论