当前位置:

首页 > 编程开发 > redis如何部署集群

redis如何部署集群

Redis Assistant
Redis Assistant

Redis Assistant 是一款为Redis设计的高效可视化管理与监控工具,提供多种操作模式,高效处理服务器数据。日常使用里的持续防护和信息管理会更突出,适合把安全控制放进长期使用流程中的场景。

立即下载
¥19
Windows/macOS/Linux 2026-08-22
正版软件 Windows macOS软件 Linux 数据库管理工具

1、Redis主从架构1.1、主从复制原理从服务器连接主服务器,发送PSYNC命令;主服务器接收到PSYNC命名后,开始执行BGSAVE命令生成RDB文件并使用缓冲区记录此后执行的所有写命令;主服务器BGSAVE执行完后,向所有从服务器发送快照文件,并在发送期间继续记录被执行的写命令;从服务器收到快照文件后丢弃所有旧数据,载入收到的快照;主服务器快照发送完毕后开始向从服务器发送缓冲区中的写命令;从服务器完成对快照的载入,开始接收命令请求,并执行来自主服务器缓冲区的写命令;(从服务器初始化完成)主服务器每执

本文目录

    redis如何部署集群

    1、Redis主从架构

    redis如何部署集群

    1.1、主从复制原理
    • 从服务器连接主服务器,发送PSYNC命令;

    • 主服务器接收到PSYNC命名后,开始执行BGSAVE命令生成RDB文件并使用缓冲区记录此后执行的所有写命令;

    • 主服务器BGSAVE执行完后,向所有从服务器发送快照文件,并在发送期间继续记录被执行的写命令;

    • 从服务器收到快照文件后丢弃所有旧数据,载入收到的快照;

    • 主服务器快照发送完毕后开始向从服务器发送缓冲区中的写命令;

    • 从服务器完成对快照的载入,开始接收命令请求,并执行来自主服务器缓冲区的写命令;(从服务器初始化完成)

    • 主服务器每执行一个写命令就会向从服务器发送相同的写命令,从服务器接收并执行收到的写命令(从服务器初始化完成后的操作)

    • 当master与slave之间的连接由于某些原因而断开时,slave能够自动重连Master,如果master收到了多个slave并发连接请求,它只会进行一次持久化,而不是一个连接一次,然后再把这一份持久化的数据发送给多个并发连接的slave。

    redis如何部署集群

    1.2、主从复制优缺点

    优点:

    • 支持主从复制,主机会自动将数据同步到从机,可以进行读写分离

    • 为了分载Master的读操作压力,Slave服务器可以为客户端提供只读操作的服务,写服务仍然必须由Master来完成

    • Slave同样可以接受其它Slaves的连接和同步请求,这样可以有效的分载Master的同步压力。

    • Master Server是以非阻塞的方式为Slaves提供服务。所以在Master-Slave同步期间,客户端仍然可以提交查询或修改请求。

    • Slave Server同样是以非阻塞的方式完成数据同步。在同步期间,如果有客户端提交查询请求,Redis则返回同步之前的数据

    缺点:

    • Redis不具备自动容错和恢复功能,主机从机的宕机都会导致前端部分读写请求失败,需要等待机器重启或者手动切换前端的IP才能恢复。

    • 主机宕机,宕机前有部分数据未能及时同步到从机,切换IP后还会引入数据不一致的问题,降低了系统的可用性。

    • Redis较难支持在线扩容,在集群容量达到上限时在线扩容会变得很复杂。

    1.3、redis主从架构搭建,配置从节点步骤

    此处使用6380作为master节点 6381和6382作为slave节点

    #1、 创建目录 conf/master-slave-cluster 存放对应集群的配置信息mkdir -p conf/master-slave-cluster# 创建目录 data 存放对应集群对应的数据信息(数据目录)mkdir -p /usr/local/redis/data/6380 
    mkdir -p /usr/local/redis/data/6381 
    mkdir -p /usr/local/redis/data/6382 
    #复制一份redis.conf文件 重命名redis-6381.conf# 2、将相关配置修改为如下值:# 修改端口号port 6381# 把pid进程号写入pidfile配置的文件pidfile /var/run/redis_6381.pid  
    # 指定日志存放目录logfile "6381.log"# 指定数据存放目录dir /usr/local/redis-5.0.3/data/6381 
    
    # 需要注释掉bind# bind 127.0.0.1(bind绑定的是自己机器网卡的ip,如果有多块网卡可以配多个ip,代表允许客户端通过机器的哪些网卡ip去访问,内网一般可以不配置bind,注释掉即可)# 3、配置主从复制(6380是master不需要配置如下 只需给6381和6382配置如下属性)# 从本机6379的redis实例复制数据,Redis 5.0之前使用slaveofreplicaof xxx.xxx.xxx.xxx 6380  # 配置从节点只读replica-read-only yes  #4、启动从节点redis-server redis-6381.conf5、连接从节点
    redis-cli -p 63816、测试在6380实例上写数据,6381实例是否能及时同步新修改数据7、同样的方法再配置一个6382的从节点
    1.4、校验结果

    查看redis的主从集群
    redis如何部署集群

    master操作

    # 连接master[root@ip redis]# src/redis-cli -p 6380127.0.0.1:6380> auth xiu123
    OK127.0.0.1:6380> set name "zhangsan"OK127.0.0.1:6380> get name 
    "zhangsan"

    redis如何部署集群

    slave操作

    # 连接slavesrc/redis-cli -p 6381127.0.0.1:6381> get name 
    "zhangsan"#从节点只能进行读操作127.0.0.1:6381> set name lisi(error) READONLY You can't write against a read only replica.127.0.0.1:6381> ![在这里插入图片描述](https://img-blog.csdnimg.cn/36d9e96b1cae498fad03e04d695997c2.png#pic_center)

    redis如何部署集群

    1.5、数据部分复制

    当master和slave断开重连后,一般都会对整份数据进行复制。但从redis2.8版本开始,redis改用可以支持部分数据复制的命令PSYNC去master同步数据,slave与master能够在网络连接断开重连后只进行部分数据复制(断点续传)。

    master会在其内存中创建一个复制数据用的缓存队列,缓存最近一段时间的数据,master和它所有的slave都维护了复制的数据下标offset和master的进程id,因此,当网络连接断开后,slave会请求master继续进行未完成的复制,从所记录的数据下标开始。如果master进程id变化了,或者从节点数据下标offset太旧,已经不在master的缓存队列里了,那么将会进行一次全量数据的复制。

    主从复制(部分复制,断点续传)流程图:

    redis如何部署集群

    如果有很多从节点,为了缓解主从复制风暴**(多个从节点同时复制主节点导致主节点压力过大),可以做如下架构,让部分从节点与从节点(与主节点同步)同步数据

    2、Redis哨兵高可用架构

    redis如何部署集群

    sentinel哨兵是特殊的redis服务,不提供读写服务,主要用来监控redis实例节点。哨兵的作用就是监控Redis系统的运行状况。它的功能包括以下两个

    (1)监控主服务器和从服务器是否正常运行。

    (2)主服务器出现故障时自动将从服务器转换为主服务器。

    2.1、哨兵的工作方式
    1. 哨兵架构下client端第一次从哨兵找出redis的主节点,后续就直接访问redis的主节点,当redis的主节点发生变化,哨兵会第一时间感知到,并且将新的redis主节点通知给client端。

    2. Sentinel 会定时的对自己监控的 master 执行 info 命令,获取最新的主从关系,还会定时的给所有的 redis 节点发送 ping 心跳检测命令,如果检测到某个 master 无法响应了,就会在给其他 Sentinel 发送消息,主观认为该 master 宕机,如果 Sentinel 集群认同该 master 下线的人数达到一个值,那么大家统一意见,下线该 master。

    3. 下线之前需要做的是找 Sentinel 集群中的某一个来执行下线操作,这个步骤叫领导者选举,选出来以后会从该 master 所有的 slave 节点中挑一个合适的作为新的 master,并让其他 slave 重新同步新的 master

    4. 若没有足够数量的 Sentinel(哨兵)进程同意 Master主服务器下线, Master主服务器的客观下线状态就会被移除。若 Master主服务器重新向 Sentinel(哨兵)进程发送 PING 命令返回有效回复,Master主服务器的主观下线状态就会被移除。

    三个定时任务
    sentinel在内部有3个定时任务
    1)每10秒每个sentinel会对master和slave执行info命令,这个任务达到两个目的:
    a)发现slave节点
    b)确认主从关系
    2)每2秒每个sentinel通过master节点的channel交换信息(pub/sub)。master节点上有一个发布订阅的频道(sentinel:hello)。sentinel节点通过__sentinel__:hello频道进行信息交换(对节点的"看法"和自身的信息),达成共识。
    3)每1秒每个sentinel对其他sentinel和redis节点执行ping操作(相互监控),这个其实是一个心跳检测,是失败判定的依据。

    2.2、哨兵模式的优缺点

    优点:

    哨兵模式是基于主从模式的,所有主从的优点,哨兵模式都具有。

    主从可以自动切换,系统更健壮,可用性更高。

    缺点:

    Redis较难支持在线扩容,在集群容量达到上限时在线扩容会变得很复杂。

    2.3、redis哨兵架构搭建步骤
    2.3.1、配置sentinel.conf文件
    # 1、复制一份sentinel.conf文件mkdir sentinelcp sentinel.conf sentinel-26380.conf
    # 保护模式protected-mode no
    # 端口号port 26380# 是否静默启动daemonize yes
    # pid进程号pidfile "/var/run/redis-sentinel-26380.pid"
    # 日志文件logfile "/usr/local/redis/data/6380/sentinel.log"
    # 哨兵服务数据存储dir "/usr/local/redis/data"
    # 哨兵监控 sentinel monitor   
    # 故障转移后  master节点ip会发生变化sentinel monitor mymaster 182.92.189.235 6380 2
    # 连接master节点 密码# 设置连接master和slave时的密码,注意的是sentinel不能分别为master和slave设置不同的密码,因此master和slave的密码应该设置相同。sentinel auth-pass mymaster xiu123#sentinel config-epoch mymaster 9#sentinel leader-epoch mymaster 9# 自动生成 从节点信息 但是此处没有自动生成sentinel known-slave mymaster 182.92.189.235 6381sentinel known-slave mymaster 182.92.189.235 6382
    # 自动生成配置 启动回自动生成一些配置
    2.3.2、启动哨兵服务实例
    #启动sentinel哨兵实例src/redis-sentinel sentinel-26380.conf
    #查看sentinel的info信息src/redis-cli -p 26379127.0.0.1:26379>info
    #可以看到Sentinel的info里已经识别出了redis的主从
    #同理再次添加两个sentinel,端口26381和26382 并同理启动,注意上述配置文件里的对应数字都要修改

    redis如何部署集群

    sentinel集群都启动完毕后,会将哨兵集群的元数据信息写入所有sentinel的配置文件里去(追加在文件的最下面),我们查看下如下配置文件sentinel-26380.conf,如下所示:
    redis如何部署集群

    2.3.3、redis哨兵模式故障迁移
    "shell
    # 1、查看当前redis 集群服务 一主两从三哨兵
    [root@iZ2ze505h9bgsa1t9twojyZ redis]# ps -ef | grep redis
    root      1166 30926  0 22:43 pts/2    00:00:00 grep --color=auto redis
    root     28998     1  0 21:12 ?        00:00:06 src/redis-server *:6380
    root     29010     1  0 21:12 ?        00:00:06 src/redis-server *:6381
    root     29020     1  0 21:12 ?        00:00:06 src/redis-server *:6382
    root     31686     1  0 22:05 ?        00:00:05 src/redis-sentinel *:26380 [sentinel]
    root     32553     1  0 22:22 ?        00:00:03 src/redis-sentinel *:26381 [sentinel]
    root     32562     1  0 22:22 ?        00:00:03 src/redis-sentinel *:26382 [sentinel]
    [root@iZ2ze505h9bgsa1t9twojyZ redis]# src/redis-cli -p 6380
    127.0.0.1:6380> auth xiu123
    OK
    127.0.0.1:6380> info replication
    # Replication
    role:master
    connected_slaves:2
    slave0:ip=182.92.189.235,port=6381,state=online,offset=261525,lag=0
    slave1:ip=182.92.189.235,port=6382,state=online,offset=261525,lag=1
    ... 省略部分代码
    
    127.0.0.1:6380> quit
    
    # 杀掉 redis
    [root@iZ2ze505h9bgsa1t9twojyZ redis]# kill -9 28998
    # 查看日志
    [root@iZ2ze505h9bgsa1t9twojyZ redis]# tail -f data/6380/sentinel.log 
    # 该哨兵认为主观下线
    31686:X 12 Nov 2021 22:45:40.110 # +sdown master mymaster 182.92.189.235 6382
    # 到达主观下线阙值 则客观下线
    31686:X 12 Nov 2021 22:45:40.181 # +odown master mymaster 182.92.189.235 6382 #quorum 2/2
    31686:X 12 Nov 2021 22:45:40.181 # +new-epoch 18
    # 尝试故障转移
    31686:X 12 Nov 2021 22:45:40.181 # +try-failover master mymaster 182.92.189.235 6382
    # 投票选举主节点
    31686:X 12 Nov 2021 22:45:40.189 # +vote-for-leader ba9eed52de8664c3fd8d76d9728b42a309c3401b 18
    # 选择主节点 6381
    31686:X 12 Nov 2021 22:45:41.362 # +switch-master mymaster 182.92.189.235 6382 182.92.189.235 6381
    
    #查看新的主从节点信息 主节点6381 从节点6382
    [root@iZ2ze505h9bgsa1t9twojyZ redis]# src/redis-cli -p 6381
    127.0.0.1:6381> auth xiu123
    OK
    127.0.0.1:6381> info replication
    # Replication
    role:master
    connected_slaves:1
    slave0:ip=182.92.189.235,port=6382,state=online,offset=469749,lag=0
        
    "

    3、Redis 高可用集群

    3.1、高可用集群模式

    redis如何部署集群

    3.2、Redis-Cluster集群

    redis的哨兵模式基本已经可以实现高可用,读写分离 ,但是在这种模式下每台redis服务器都存储相同的数据,很浪费内存,所以在redis3.0上加入了cluster模式,实现的redis的分布式存储,也就是说每台redis节点上存储不同的内容。

    Redis-Cluster采用无中心结构,它的特点如下:

    所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽。

    节点的fail是通过集群中超过半数的节点检测失效时才生效。

    客户端与redis节点直连,不需要中间代理层.客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可。

    工作方式:

    • 在redis的每一个节点上,都有这么两个东西,一个是插槽(slot),它的的取值范围是:0-16383。还有一个就是cluster,可以理解为是一个集群管理的插件。当我们的存取的key到达的时候,redis会根据crc16的算法得出一个结果(hash函数),然后把结果对 16384 求余数,这样每个 key 都会对应一个编号在 0-16383 之间的哈希槽,通过这个值,去找到对应的插槽所对应的节点,然后直接自动跳转到这个对应的节点上进行存取操作。

    • 为了保证高可用,redis-cluster集群引入了主从模式,一个主节点对应一个或者多个从节点,当主节点宕机的时候,就会启用从节点。当其它主节点ping一个主节点A时,如果半数以上的主节点与A通信超时,那么认为主节点A宕机了。如果主节点A和它的从节点A1都宕机了,那么该集群就无法再提供服务了。

    • redis集群是一个由多个主从节点群组成的分布式服务器群,它具有复制、高可用和分片特性。Redis集群不需要sentinel哨兵·也能完成节点移除和故障转移的功能。需要将每个节点设置成集群模式,这种集群模式没有中心节点,可水平扩展,据官方文档称可以线性扩展到上万个节点(官方推荐不超过1000个节点)。redis集群的性能和高可用性均优于之前版本的哨兵模式,且集群配置非常简单

    3.3、Redis高可用集群搭建
    3.3.1、redis集群搭建

    redis集群需要至少三个master节点,我们这里搭建三个master节点,并且给每个master再搭建一个slave节点,总共6个redis节点,这里用三台机器部署6个redis实例,每台机器一主一从,搭建集群的步骤如下:

    6383(主) 6384(从)

    6385(主) 6386(从)

    6387(主) 6388(从)

    节点配置
    # 是否静默启动
    daemonize yes
    #端口号
    port 6383
    
    # pid进程文件
    pidfile /var/run/redis_6383.pid
    #数据存储
    dir /usr/local/redis/data/redis-cluster/6383/
    
    # 指定日志存放目录
    logfile "/usr/local/redis/data/cluster-6383.log"
    
    
    #是否启动集群模式
    cluster-enabled yes
    
    #(集群节点信息文件,这里最好和port对应上)
    cluster-config-file nodes-6383.conf
    cluster-node-timeout 10000
    
    # 关闭保护模式
    protected-mode  no
    创建集群

    redis集群配置好后,在5.X版本之前需要需要使用ruby脚本去创建集群,但是5.x之后可以通过redis-cli 执行创建集群命令即可

    # 分别启动redis实例
    src/redis-server conf/cluster/638*/redis.conf
    
    # 下面命令里的1代表为每个创建的主服务器节点创建一个从服务器节点
    # 执行这条命令需要确认三台机器之间的redis实例要能相互访问,可以先简单把所有机器防火墙关掉,如果不关闭防火墙则需要打开redis服务端口和集群节点gossip通信端口16379(默认是在redis端口号上加1W)
    # 关闭防火墙
    # systemctl stop firewalld # 临时关闭防火墙
    # systemctl disable firewalld # 禁止开机启动
    # 注意:下面这条创建集群的命令大家不要直接复制,里面的空格编码可能有问题导致创建集群不成功 
    # 本次测试不远程连接 使用127.0.0.1 如果涉及远程连接需要设置真实公网ip
    
    
    # -a 密码。  -- cluster create创建集群  --cluster-replicas 1 每一个master建立一个从节点 6个实例 中选择3个作为另外3个主节点的从节点,最终变成3主3从
    src/redis-cli -a password --cluster create --cluster-replicas 1 127.0.0.1:6383 127.0.0.1:6384 127.0.0.1:6385 127.0.0.1:6386 127.0.0.1:6387 127.0.0.1:6388

    redis如何部署集群

    问题:

    #1、这是由于创建集群中的某一个服务中曾经插入过数据,并且已经产生了持久化文件,重新再进行创建集群 此时需要flushall命令清空所有数据
    [ERR] Node 127.0.0.1:6383 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0
    
    #测试使用flush不好使用 只要找到配置文件对应数据存储目录 暴力rm删除
    
    # 2、登陆某个集群出现 出现CLUSTERDOWN Hash slot not served 原因 启动集群实例后没有执行集群创建
    验证集群

    读写key需要 对key进行hash 不使用集群模式登陆客户端,则我们只访问单独会提示让我们去对应的节点上进行操作
    redis如何部署集群

    集群登陆

    # 连接任意一个客户端即可:./redis-cli -c -h -p (-a访问服务端密码,-c表示集群模式,指定ip地址和端口号)
    # -a 密码 -c 集群模式  -h ip -p port
    src/redis-cli -a password -c -h 127.0.0.1 -p 6383

    redis如何部署集群

    #进行验证: cluster info(查看集群信息)、cluster nodes(查看节点列表)
    #进行数据操作验证
    #关闭集群则需要逐个进行关闭,使用命令:
    src/redis-cli -a password -c -h 127.0.0.1 -p 638* shutdown
    3.3.2、集群故障转移

    上述集群三主三从 。6386、6387、6388分别对应主节点6383、6384、6385的从,如果某个主节点宕机,则从节点会自动被选举为主节点继续对外提供服务,一定的容错机制保证高可用。注意存在从节点的情况下,主从节点不具备读写分离,读写都使用主节点

    # 模拟redis的故障转移
    
    #登陆节点 发现 name这个key在6384上  age这个key在6383上 wdih这个key在6385上
    [root@iZ2ze505h9bgsa1t9twojyZ redis]# src/redis-cli -a xiu123 -c -h 127.0.0.1 -p 6383
    127.0.0.1:6384> get name
    -> Redirected to slot [5798] located at 127.0.0.1:6384
    (nil)
    127.0.0.1:6384> get age
    -> Redirected to slot [741] located at 127.0.0.1:6383
    "12"
    127.0.0.1:6383> get width
    -> Redirected to slot [15983] located at 127.0.0.1:6385
    "110"
    127.0.0.1:6385> quit
    
    ## 杀掉 6385这个主节点
    [root@iZ2ze505h9bgsa1t9twojyZ redis]# kill -9 14187
    
    # 重新登陆集群 获取 age、name 还是原来的节点 获取width 由6385转移到了6388  查看6380节点信息发现其变为了主节点
    [root@iZ2ze505h9bgsa1t9twojyZ redis]# src/redis-cli -a xiu123 -c -h 127.0.0.1 -p 6383
    127.0.0.1:6383> get age
    "12"
    # 这里因该是在选举master节点 导致集群短暂不可用(猜测)
    127.0.0.1:6383> get name
    (error) CLUSTERDOWN The cluster is down
    127.0.0.1:6383> get name
    -> Redirected to slot [5798] located at 127.0.0.1:6384
    "xieqx"
    
    127.0.0.1:6384> get width
    -> Redirected to slot [15983] located at 127.0.0.1:6388
    "110"
    127.0.0.1:6388> info replication
    # Replication
    role:master
    
    # 杀掉 6388 则整个集群服务都不可用
    127.0.0.1:6383> get name
    (error) CLUSTERDOWN The cluster is down
    3.3.3、集群动态扩缩容
    #复制之前6383节点配置 创建6389、6390节点 并启动实例
    
    --- 集群扩容 ----
    
    #1、 添加master节点 
    ## add-node: 后面的分别跟着新加入的***master和集群的某个节点 NODE_ID***
    src/redis-cli --cluster add-node 127.0.0.1:6389 127.0.0.1:6383 -a password
    # 2、为增加的主节点添加从节点 
    #--cluster-slave 表明添加的是slave节点 
    ## add-node: 后面的分别跟着新加入的****slave和slave对应的master NODE_ID***
    #--cluster-master-id:表示slave对应的master的node ID
    src/redis-cli --cluster add-node 127.0.0.1:6390 127.0.0.1:6389 --cluster-slave --cluster-master-id 353662f6868b187ad15bad9b7271b8f0848adf10 -a password
    
    # 3、 重新分片slot
    #-cluster-from:表示slot目前所在的节点的node ID,多个ID用逗号分隔
    #--cluster-to:表示需要新分配节点的node ID(貌似每次只能分配一个)
    # --cluster-slots:分配的slot数量
    src/redis-cli --cluster reshard 127.0.0.1:6389 --cluster-from 47318cef1195f4281b7815bf66a41e31d68b6d16,0dbea2fff1554a3bbca70d28b81911e60c5bee6d,2fd29d61e867cb85e2e368ee62aebef33e7aaeb3 --cluster-to 353662f6868b187ad15bad9b7271b8f0848adf10 --cluster-slots 1024 -a password
    
    #查看集群信息

    redis如何部署集群

     --- 集群缩容 ----
    
    #下线节点127.0.0.1:6389(master)/127.0.0.1:6390(slave)
    
    #(1)首先删除master对应的slave
    #del-node后面跟着slave节点的 ip:port 和node ID
    src/redis-cli --cluster del-node 127.0.0.1:6390 353662f6868b187ad15bad9b7271b8f0848adf10 -a password
    
    #(2)清空master的slot 将一个下线的节点的slot重新分配到其他三个节点中
    #reshard子命令前面已经介绍过了,这里需要注意的一点是,由于我们的集群一共有四个主节点,而每次reshard只能写一个目的节点,因此以上命令需要执行三次(--cluster-to对应不同的目的节点)。
    #--cluster-yes:不回显需要迁移的slot,直接迁移。
    src/redis-cli --cluster reshard 127.0.0.1:6389 --cluster-from 353662f6868b187ad15bad9b7271b8f0848adf10 --cluster-to 0dbea2fff1554a3bbca70d28b81911e60c5bee6d --cluster-slots 1024 --cluster-yes
    
    #(3)下线(删除)节点 主节点
    src/redis-cli --cluster del-node 127.0.0.1:6389 353662f6868b187ad15bad9b7271b8f0848adf10

    redis如何部署集群

    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
    作者最新文章
    编程开发
    相关文章 更多
    php72w redis,docker php7安装php-redis
    php72w redis,docker php7安装php-redis

    在Docker环境下为PHP安装Redis扩展:手动编译需下载源码、安装phpize、配置编译并安装,生成redis.so并在php.d目录新建redis.ini加载,重启PHP-FPM;也可直接yum安装php72w-pecl-redis,免手动编译。

    php 如何配置 redis,php 如何设置redis
    php 如何配置 redis,php 如何设置redis

    配置PHP的Redis扩展:先安装Redis服务,从GitHub下载phpredis源码,用phpize编译安装,修改php.ini添加extension=redis.so,重启php-fpm或Apache,通过phpinfo验证并连接Redis。

    c++如何将结构体序列化为Redis兼容的RESP协议格式【深度】
    c++如何将结构体序列化为Redis兼容的RESP协议格式【深度】

    C++结构体无法直接序列化为RESP协议,需手动将字段映射为*N数组嵌套$lenbulkstring形式。整数需转换为字符串并加:前缀,空字符串用$0\r\n,null用$-1\r\n。长度计算需精确到字节数,特别注意二进制安全,同时确保字段顺序与结构体定义一致。

    如何在Golang架构中部署Redict作为高能数据临时存储中转站
    如何在Golang架构中部署Redict作为高能数据临时存储中转站

    Redis作为跨服务临时状态枢纽,需按消息队列、缓存和原子状态三重角色设计。选型用List实现任务分发及延迟重试,Stream用于事件广播与位点回溯。go-redis/v8需配置MinIdleConns、MaxRetries及超时。数据写入应JSON序列化并带type标签、设合理TTL、将关键字段提至顶层。消费通过原子GET+DEL或processedkey

    TP8.0 高并发下库存超卖?Redis 原子递减结合数据库乐观锁控制
    TP8.0 高并发下库存超卖?Redis 原子递减结合数据库乐观锁控制

    在高并发秒杀场景下,利用Redis的减库存原子操作预扣减库存拦截超卖请求,再通过数据库乐观锁(版本号与库存校验)确保最终一致性,异常时回滚Redis库存并借助Lua脚本保证原子性,从而有效防止库存超卖。

    如何在 Go 中利用 go-redis 执行 Lua 脚本优化逻辑
    如何在 Go 中利用 go-redis 执行 Lua 脚本优化逻辑

    在Go中使用go-redis执行Lua脚本可借助原子性解决竞态问题,通过redis.Script封装脚本并自动处理SHA1缓存与重试。需注意KEYS必须为非空切片且所有键在Cluster模式下落在同一slot,ARGV以字符串传入并由tonumber转换。返回值需先检查错误再调用Val(),避免panic。

    TP6.0 基于 Redis SetNX 实现的简单互斥锁机制【并发】
    TP6.0 基于 Redis SetNX 实现的简单互斥锁机制【并发】

    先看一个典型场景:电商秒杀、库存扣减、定时任务重复调度——这些并发冲突在 TP6 应用里屡见不鲜。用 Redis 的 SETNX 做互斥锁,确实是轻量又直接的方案,但“能用”和“稳妥”之间,隔着三层硬功夫:原子加锁、身份校验、合理超时。这三条,差一条就翻车。 很多人第一次上手,直接写 SETNX 加

    TP6.0 如何处理高并发抢购?Redis 原子锁与队列削峰详解【秒杀】
    TP6.0 如何处理高并发抢购?Redis 原子锁与队列削峰详解【秒杀】

    高并发抢购中,Redis的DECR原子操作可安全扣库存;配合think-queue异步削峰,接口仅扣库存和推消息;分布式锁需用SETNXEX加唯一标识,释放时用Lua脚本校验;成功资格后须以数据库事务双写为准,失败时补回Redis库存。

    Golang 实现基于 Redis 的延时任务队列
    Golang 实现基于 Redis 的延时任务队列

    基于Redis的ZSET实现延时队列需解决并发重复消费、失败重试混乱、精度不足及内存爆炸等问题。通过Lua脚本保证取删原子性,使用毫秒级时间戳,对临时错误采用指数退避重试,永久错误记入独立哈希表,并限制最大延迟、定期清理过期任务、使用紧凑序列化格式。

    RedisInsight怎么修改Key的过期时间 Redis操作方法【步骤】
    RedisInsight怎么修改Key的过期时间 Redis操作方法【步骤】

    操作 Redis 的时候,改个 Key 的过期时间其实是个高频场景。特别是做运维排查或者临时调试那会儿,谁也不想反复切命令行窗口、背那些命令参数。好在 RedisInsight 这个图形工具把这事儿做得很顺手——三种方式任选,总有一种合你胃口。 在动手前,先确认一下 Key 当前的 TTL 状态是个

    查看更多
    精品专题 更多
    装机必备
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows
    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    PDF教程
    PDF教程

    正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

    Mac软件 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    Aperty macOS版
    Aperty macOS版
    macOS

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    WINDOWS 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    PixTV 网页版
    PixTV 网页版
    Windows

    PixTV 是一款在浏览器中使用的 AI 视觉内容创作平台,提供图片、视频、音频、文字生成、AI 分镜、局部重绘、提示词反推和无限画布等工具,适合短剧、漫剧、广告及社交媒体内容制作。

    即将离开本站
    您即将前往第三方网站,请确认是否继续?