全网最清晰!Redis主从复制原理及实现,绝对给你非一般的体验

Redis未授权访问漏洞:从原理到实战加固指南 在分布式系统与缓存技术中,数据安全是架构设计的核心考量。Redis作为高性能键值数据库,其默认无认证的设计哲学在追求极致性能的同时,也引入了潜在的安全风险。攻击者利用网络扫描发现暴露的Redis服务后,可通过未授权访问直接操作数据,甚至利用CONFIG命令修改持久化路径,写入SSH公钥或Webshell,实现权限提升与服务器控制。这种漏洞的利用价值极高,常被用于数据窃取、服务瘫痪等攻击场景。理解其从信息收集到权限提升的完整攻击链,对于构建纵深防御体系至关重要。本文基于Redis安全配置与渗透测试实践,深入剖 阅读详情

前言

相信很多小伙伴都已经配置过主从复制,但是对于redis主从复制的工作流程和原理等问题很多都没有深入的了解。今天笔者就为大家来梳理一下Redis主从复制的原理及实践,希望能帮到大家更好的提升哦~~~

全网最清晰!Redis主从复制原理及实现,绝对给你非一般的体验

 

Redis主从复制原理

和Mysql主从复制的原因一样,Redis虽然读取写入的速度都特别快,但是也会产生读压力特别大的情况。为了分担读压力,Redis支持主从复制,Redis的主从结构可以采用一主多从或者级联结构,Redis主从复制可以根据是否是全量分为全量同步和增量同步。下图为级联结构。

全网最清晰!Redis主从复制原理及实现,绝对给你非一般的体验

 

全量同步

Redis全量复制一般发生在Slave初始化阶段,这时Slave需要将Master上的所有数据都复制一份。具体步骤如下:

  1. 从服务器连接主服务器,发送SYNC命令;
  2. 主服务器接收到SYNC命名后,开始执行BGSAVE命令生成RDB文件并使用缓冲区记录此后执行的所有写命令;
  3. 主服务器BGSAVE执行完后,向所有从服务器发送快照文件,并在发送期间继续记录被执行的写命令;
  4. 从服务器收到快照文件后丢弃所有旧数据,载入收到的快照;
  5. 主服务器快照发送完毕后开始向从服务器发送缓冲区中的写命令;
  6. 从服务器完成对快照的载入,开始接收命令请求,并执行来自主服务器缓冲区的写命令;

全网最清晰!Redis主从复制原理及实现,绝对给你非一般的体验

 

完成上面几个步骤后就完成了从服务器数据初始化的所有操作,从服务器此时可以接收来自用户的读请求。

增量同步

Redis增量复制是指Slave初始化后开始正常工作时主服务器发生的写操作同步到从服务器的过程。 增量复制的过程主要是主服务器每执行一个写命令就会向从服务器发送相同的写命令,从服务器接收并执行收到的写命令。

Redis主从同步策略

主从刚刚连接的时候,进行全量同步;全同步结束后,进行增量同步。当然,如果有需要,slave 在任何时候都可以发起全量同步。redis 策略是,无论如何,首先会尝试进行增量同步,如不成功,要求从机进行全量同步。

注意点

如果多个Slave断线了,需要重启的时候,因为只要Slave启动,就会发送sync请求和主机全量同步,当多个同时出现的时候,可能会导致Master IO剧增宕机。

Redis主从复制的配置十分简单,它可以使从服务器是主服务器的完全拷贝。需要清除Redis主从复制的几点重要内容:

  • Redis使用异步复制。但从Redis 2.8开始,从服务器会周期性的应答从复制流中处理的数据量。
  • 一个主服务器可以有多个从服务器。
  • 从服务器也可以接受其他从服务器的连接。除了多个从服务器连接到一个主服务器之外,多个从服务器也可以连接到一个从服务器上,形成一个图状结构。
  • Redis主从复制不阻塞主服务器端。也就是说当若干个从服务器在进行初始同步时,主服务器仍然可以处理请求。
  • 主从复制也不阻塞从服务器端。当从服务器进行初始同步时,它使用旧版本的数据来应对查询请求,假设你在redis.conf配置文件是这么配置的。否则的话,你可以配置当复制流关闭时让从服务器给客户端返回一个错误。但是,当初始同步完成后,需要删除旧的数据集和加载新的数据集,在这个短暂的时间内,从服务器会阻塞连接进来的请求。
  • 主从复制可以用来增强扩展性,使用多个从服务器来处理只读的请求(比如,繁重的排序操作可以放到从服务器去做),也可以简单的用来做数据冗余。
  • 使用主从复制可以为主服务器免除把数据写入磁盘的消耗:在主服务器的redis.conf文件中配置“避免保存”(注释掉所有“保存“命令),然后连接一个配置为“进行保存”的从服务器即可。但是这个配置要确保主服务器不会自动重启(要获得更多信息请阅读下一段)

主从复制的一些特点:

  • 采用异步复制;
  • 一个主redis可以含有多个从redis;
  • 每个从redis可以接收来自其他从redis服务器的连接;
  • 主从复制对于主redis服务器来说是非阻塞的,这意味着当从服务器在进行主从复制同步过程中,主redis仍然可以处理外界的访问请求;
  • 主从复制对于从redis服务器来说也是非阻塞的,这意味着,即使从redis在进行主从复制过程中也可以接受外界的查询请求,只不过这时候从redis返回的是以前老的数据,如果你不想这样,那么在启动redis时,可以在配置文件中进行设置,那么从redis在复制同步过程中来自外界的查询请求都会返回错误给客户端;(虽然说主从复制过程中对于从redis是非阻塞的,但是当从redis从主redis同步过来最新的数据后还需要将新数据加载到内存中,在加载到内存的过程中是阻塞的,在这段时间内的请求将会被阻,但是即使对于大数据集,加载到内存的时间也是比较多的);
  • 主从复制提高了redis服务的扩展性,避免单个redis服务器的读写访问压力过大的问题,同时也可以给为数据备份及冗余提供一种解决方案;
  • 为了编码主redis服务器写磁盘压力带来的开销,可以配置让主redis不再将数据持久化到磁盘,而是通过连接让一个配置的从redis服务器及时的将相关数据持久化到磁盘,不过这样会存在一个问题,就是主redis服务器一旦重启,因为主redis服务器数据为空,这时候通过主从同步可能导致从redis服务器上的数据也被清空;

全网最清晰!Redis主从复制原理及实现,绝对给你非一般的体验

 

主从复制的作用

主从复制,读写分离,容灾恢复。一台主机负责写入数据,多台从机负责备份数据。在高并发的场景下,即便是主机挂了,可以用从机代替主机继续工作,避免单点故障导致系统性能问题。读写分离,让读多写少的应用性能更佳。

主从复制架构

At the base of Redis replication there is a very simple to use and configure master-slave replication that allows slave Redis servers to be exact copies of master servers.

官方说了,搭建主从架构is a very simple 。确实是简单的,一个命令: slaveof 主机ip 主机port ,就可以确定主从关系;一个命令:./redis-sentinel sentinel.conf ,就可以开启哨兵监控。搭建是简单的,维护是痛苦的。在高并发场景下,会有很多想不到的问题出现。我们只有清楚复制的原理,熟悉主机,从机宕机后的变化。才能很好的跨过这些坑。

架构图:一主二仆一兵(也可以多主多仆多兵)

全网最清晰!Redis主从复制原理及实现,绝对给你非一般的体验

 

搭建前的准备工作

因为穷,笔者选择用一台服务器模拟三台主机。和生产环境的区别仅仅是ip地址和port端口不同。

  • 第一步:将redis.conf 拷贝三份,名字分别是,redis6379.conf,redis6380.conf,redis6381.conf
  • 第二步:修改三个文件的port端口,pid文件名,日志文件名,rdb文件名
  • 第三步:分别打开三个窗口模拟三台服务器,开启redis服务。
[root@itdragon bin]# cp redis.conf redis6379.conf
[root@itdragon bin]# cp redis.conf redis6380.conf
[root@itdragon bin]# cp redis.conf redis6381.conf
[root@itdragon bin]# vim redis6379.conf
logfile "6379.log"
dbfilename dump_6379.rdb
[root@itdragon bin]# vim redis6380.conf
pidfile /var/run/redis_6380.pid
port 6380
logfile "6380.log"
dbfilename dump_6380.rdb
[root@itdragon bin]# vim redis6381.conf
port 6381
pidfile /var/run/redis_6381.pid
logfile "6381.log"
dbfilename dump_6381.rdb
[root@itdragon bin]# ./redis-server redis6379.conf
[root@itdragon bin]# ./redis-cli -h 127.0.0.1 -p 6379
127.0.0.1:6379> keys *
(empty list or set)
[root@itdragon bin]# ./redis-server redis6380.conf 
[root@itdragon bin]# ./redis-cli -h 127.0.0.1 -p 6380
127.0.0.1:6380> keys *
(empty list or set)
[root@itdragon bin]# ./redis-server redis6381.conf 
[root@itdragon bin]# ./redis-cli -h 127.0.0.1 -p 6381
127.0.0.1:6381> keys *
(empty list or set)

接下来咱们再来介绍主从复制搭建步骤

基础搭建

第一步:查询主从复制信息,分别选择三个端口,执行命令:info replication。

# 6379 端口
[root@itdragon bin]# ./redis-server redis6379.conf
[root@itdragon bin]# ./redis-cli -h 127.0.0.1 -p 6379
127.0.0.1:6379> info replication
# Replication
role:master
connected_slaves:0
......

# 6380 端口
127.0.0.1:6380> info replication
# Replication
role:master
connected_slaves:0
......

# 6381 端口
127.0.0.1:6381> info replication
# Replication
role:master
connected_slaves:0
......

三个端口都打印相同的信息:role:master 角色是master,connected_slaves:0 连接从机数量为零。

第二步:选择6379端口,执行命令:set k1 v1

127.0.0.1:6379> set k1 v1
OK

第三步:设置主从关系,分别选择6380端口和6381端口,执行命令:SLAVEOF 127.0.0.1 6379

# 6380 端口
127.0.0.1:6380> SLAVEOF 127.0.0.1 6379
OK
127.0.0.1:6380> info replication
# Replication
role:slave
master_host:127.0.0.1
master_port:6379
......

# 6381 端口
127.0.0.1:6381> SLAVEOF 127.0.0.1 6379
OK
127.0.0.1:6381> info replication
# Replication
role:slave
master_host:127.0.0.1
master_port:6379
......

# 6379 端口
127.0.0.1:6379> info replication
# Replication
role:master
connected_slaves:2
slave0:ip=127.0.0.1,port=6380,state=online,offset=98,lag=1
slave1:ip=127.0.0.1,port=6381,state=online,offset=98,lag=1
......

主从关系发生了变化:6380端口和6381端口打印的信息: role:slave 从机;master_host:127.0.0.1 主机的ip地址;master_port:6379 主机的port 端口。6379端口打印的信息: role:master 主机;connected_slaves:2 连了两个从机; slaveX : ID、IP 地址、端口号、连接状态、从库信息

第四步:全量复制,分别选择6380端口和6381端口,执行命令:get k1

# 6380 端口
127.0.0.1:6380> get k1
"v1"

# 6381 端口
127.0.0.1:6381> get k1
"v1"

两个端口都可以打印k1的值,说明在建立主从关系时,从机便拥有了主机的数据。

第五步:增量复制,选择6379端口,执行命令:set k2 v2。然后分别选择6380端口和6381端口,执行命令:get k2

# 6379 端口
127.0.0.1:6379> set k2 v2
OK

# 6380 端口
127.0.0.1:6380> get k2
"v2"

# 6381 端口
127.0.0.1:6381> get k2
"v2"

两个端口都可以打印k2的值,说明建立主从关系后,主机新增的数据都会复制给从机。

第六步:主从的读写分离,选择6380端口,执行命令:set k3 v3

# 6380 端口
127.0.0.1:6380> set k3 v3
(error) READONLY You can't write against a read only slave.

# 6379 端口
127.0.0.1:6379> set k3 v3
OK

从机6380写入失败,是因为读写分离的机制。

第七步:主机宕机的情况,选择6379端口,执行命令:shutdown

# 6379 端口
127.0.0.1:6379> SHUTDOWN
not connected> QUIT

# 6380 端口
127.0.0.1:6380> info replication
# Replication
role:slave
master_host:127.0.0.1
master_port:6379
......

# 6381 端口
127.0.0.1:6381> info replication
# Replication
role:slave
master_host:127.0.0.1
master_port:6379
......

从打印的结果得知:从机原地待命

第八步:主机宕机后恢复,选择6379端口,重启Redis服务,执行命令:set k4 v4。分别选择6380端口和6381端口,执行命令:get k4

# 6379 端口
[root@itdragon bin]# ./redis-server redis6379.conf 
[root@itdragon bin]# ./redis-cli -h 127.0.0.1 -p 6379
127.0.0.1:6379> set k4 v4
OK

# 6380 端口
127.0.0.1:6380> get k4
"v4"

# 6381 端口
127.0.0.1:6381> get k4
"v4"

主机重启后,一切正常。

第九步:从机宕机后恢复,选择6380端口,执行命令:shutdown。选择6379端口,执行命令:set k5 v5。选择6380端口,重启Redis服务后执行命令:get k5

# 6380 端口
127.0.0.1:6380> SHUTDOWN
not connected> QUIT
[root@itdragon bin]# ./redis-server redis6380.conf
[root@itdragon bin]# ./redis-cli -h 127.0.0.1 -p 6380
127.0.0.1:6380> info replication
# Replication
role:slave
master_host:127.0.0.1
master_port:6379
......
127.0.0.1:6380> get k5
"v5"

# 6379 端口
127.0.0.1:6379> set k5 v5
OK

从机宕机后,一切正常。笔者用的是redis.4.0.2版本的。看过其他教程,从机宕机恢复后,只能同步主机新增数据,也就是k5是没有值的,可是笔者反复试过,均有值。留着备忘!

第十步:去中性化思想,选择6380端口,执行命令:SLAVEOF 127.0.0.1 6381。选择6381端口,执行命令:info replication

# 6380 端口
127.0.0.1:6380> SLAVEOF 127.0.0.1 6381
OK

# 6381 端口
127.0.0.1:6381> info replication
# Replication
role:slave
master_host:127.0.0.1
master_port:6379
......
connected_slaves:1
slave0:ip=127.0.0.1,port=6380,state=online,offset=1677,lag=1
......

虽然6381 是6380的主机,是6379的从机。在Redis眼中,6381依旧是从机。一台主机配多台从机,一台从机再配多台从机,从而实现了庞大的集群架构。同时也减轻了一台主机的压力,缺点是增加了服务器间的延迟。

从机上位

模拟主机宕机,人为手动怂恿从机上位的场景。先将三个端口恢复成6379是主机,6380和6381是从机的架构。从机上位步骤:第一步:模拟主机宕机,选择6379端口,执行命令:shutdown第二步:断开主从关系,选择6380端口,执行命令:SLAVEOF no one第三步:重新搭建主从,选择6381端口,执行命令:info replication,SLAVEOF 127.0.0.1 6380第四步:之前主机恢复,选择6379端口,重启Redis服务,执行命令:info replication在6379主机宕机后,6380从机断开主从关系,6381开始还在原地待命,后来投靠6380主机后,6379主机回来了当它已是孤寡老人,空头司令。

# 6379端口

127.0.0.1:6379> SHUTDOWN
not connected> QUIT

# 6380端口
127.0.0.1:6380> SLAVEOF no one
OK
127.0.0.1:6380> set k6 v6
OK

# 6381端口
127.0.0.1:6381> info replication
# Replication
role:slave
master_host:127.0.0.1
master_port:6379
......
127.0.0.1:6381> SLAVEOF 127.0.0.1 6380
OK
127.0.0.1:6381> get k6
"v6"

哨兵监控

全网最清晰!Redis主从复制原理及实现,绝对给你非一般的体验

 

从机上位是需要人为控制,在生产环境中是不可取的,不可能有人实时盯着它,也不可能大半夜起床重新搭建主从关系。在这样的需求促使下,哨兵模式来了!!!哨兵有三大任务:

  1. 监控:哨兵会不断地检查你的Master和Slave是否运作正常
  2. 提醒:当被监控的某个Redis出现问题时, 哨兵可以通过API向管理员或者其他应用程序发送通知
  3. 故障迁移:若一台主机出现问题时,哨兵会自动将该主机下的某一个从机设置为新的主机,并让其他从机和新主机建立主从关系。

哨兵搭建步骤:

第一步:新开一个窗口,取名sentinel,方便观察哨兵日志信息。

第二步:创建sentinel.conf文件,也可以从redis的解压文件夹中拷贝一份。

第三步:设置监控的主机和上位的规则,编辑sentinel.conf,输入 sentinel monitor itdragon-redis 127.0.0.1 6379 1 保存退出。解说:指定监控主机的ip地址,port端口,得票数。

第四步:前端启动哨兵,执行命令:./redis-sentinel sentinel.conf。

第五步:模拟主机宕机,选择6379窗口,执行命令:shutdown。

第六步:等待从机投票,在sentinel窗口中查看打印信息。

第七步:启动6379服务器。

语法结构:sentinel monitor 自定义数据库名主机ip 主机port 得票数若从机得票数大于设置值,则成为新的主机。若之前的主机恢复后,如果哨兵也宕机了???那就多配几个哨兵并且相互监控。

# sentinel窗口
[root@itdragon bin]# vim sentinel.conf
sentinel monitor itdragon-redis 127.0.0.1 6379 1
[root@itdragon bin]# ./redis-sentinel sentinel.conf
......
21401:X 29 Nov 15:39:15.052 * +slave slave 127.0.0.1:6381 127.0.0.1 6381 @ itdragon-redis 127.0.0.1 6380
21401:X 29 Nov 15:39:15.052 * +slave slave 127.0.0.1:6379 127.0.0.1 6379 @ itdragon-redis 127.0.0.1 6380
21401:X 29 Nov 15:39:45.081 # +sdown slave 127.0.0.1:6379 127.0.0.1 6379 @ itdragon-redis 127.0.0.1 6380

21401:X 29 Nov 16:40:52.055 # -sdown slave 127.0.0.1:6379 127.0.0.1 6379 @ itdragon-redis 127.0.0.1 6380
21401:X 29 Nov 16:41:02.028 * +convert-to-slave slave 127.0.0.1:6379 127.0.0.1 6379 @ itdragon-redis 127.0.0.1 6380
......

# 6379端口
127.0.0.1:6379> SHUTDOWN
not connected> QUIT

# 6380端口
127.0.0.1:6380> info replication
# Replication
role:master
connected_slaves:1
slave0:ip=127.0.0.1,port=6381,state=online,offset=72590,lag=0
......

# 6381端口
127.0.0.1:6381> info replication
# Replication
role:slave
master_host:127.0.0.1
master_port:6380
......
  • +slave :一个新的从服务器已经被 Sentinel 识别并关联。
  • +sdown :给定的实例现在处于主观下线状态。
  • -sdown :给定的实例已经不再处于主观下线状态。

全网最清晰!Redis主从复制原理及实现,绝对给你非一般的体验

 

全网最清晰!Redis主从复制原理及实现,绝对给你非一般的体验

 

主从复制的缺点

Redis的主从复制最大的缺点就是延迟,主机负责写,从机负责备份,这个过程有一定的延迟,当系统很繁忙的时候,延迟问题会更加严重,从机器数量的增加也会使这个问题更加严重。

总结

  1. 查看主从复制关系命令:info replication
  2. 设置主从关系命令:slaveof 主机ip 主机port
  3. 开启哨兵模式命令:./redis-sentinel sentinel.conf
  4. 主从复制原则:开始是全量赋值,之后是增量赋值
  5. 哨兵模式三大任务:监控,提醒,自动故障迁移

好了,以上就是笔者整理的Redis主从复制原理及实现,只是个人的一些想法,有哪里不准确的地方,还请各位大佬评论区交流,咱们共同交流进步~~~

喜欢文章请多多点赞评论转发,关注小编,你们的支持就是小编创作的不竭动力~~~

Redis未授权访问漏洞深度解析:从RCE原理到企业级防御实战 远程代码执行(RCE)是网络安全领域的核心威胁之一,它允许攻击者在目标系统上执行任意命令,从而完全控制系统。其原理通常涉及利用应用程序或服务的配置缺陷、输入验证不足或权限设计漏洞,将恶意代码注入并触发执行。在数据库与缓存服务场景中,Redis作为高性能内存数据库,若配置不当极易成为RCE攻击的入口。攻击者通过未授权访问漏洞,结合Redis持久化机制,可写入Webshell或SSH密钥,最终实现服务器接管。本文聚焦Redis RCE漏洞链,深入剖析其利用手法,并提供从网络隔离、访问控制到入侵排查的全方位企业级 阅读详情

相关推荐

Keepalived+浮动IP实现Web服务高可用原理与实战

高可用(HA)是保障Web服务持续在线的核心能力,其本质是通过故障检测与自动转移机制消除单点风险。Keepalived基于VRRP协议实现轻量级IP故障转移,配合浮动IP(如Elastic IP、Reserved IP)达成用户无感的服务切换。该方案不依赖复杂集群框架,适用于Nginx、LVS、Redis等常见组件的七层或四层高可用加固,在资源受限环境(如老旧Linux系统)中仍具不可替代性。典型应用场景包括政企内网门户、教育教务系统、金融边缘节点等对稳定性要求严苛但升级受限的生产现场。本文聚焦Keepal

weixin_33709364的博客 520

Redis常见架构及其原理

主从架构:能解决读写分离问题,但是只有一个主节点,抗不了很高的并发,主从切换也不支持。哨兵架构:可以自动切换主从节点,但是仍然只有一个主节点,只解决了高可用。集群架构:解决了高可用、高并发问题,还引入了逻辑槽位,将数据进行分片存储,降低了单个小集群的读写压力,还支持水平扩展,整体提升了redis的性能。

星空下的博客 1129

中间件技术全解析:从核心原理到高并发场景实战应用

在分布式系统与微服务架构中,中间件作为连接操作系统与应用软件的关键层,提供了通信、集成、数据管理等通用服务,是构建高可用、可扩展系统的技术基石。其核心原理在于通过抽象和标准化,将横跨多个应用的共性能力(如异步消息传递、数据缓存、安全认证)封装为可复用组件,从而让开发者能聚焦业务逻辑创新。这一设计带来了显著的技术价值:它实现了系统间的解耦,提升了开发效率,并保障了大规模分布式环境下的可靠性与性能。在应用场景上,中间件广泛应用于高并发请求处理、实时数据管道构建、服务治理与安全防护等领域。例如,Apache Ka

436

Redis架构原理(转载)

基础概念 Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库 它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原...

weixin_40156790的博客 1940

Fscan 1.8.3:自动化内网安全评估工具的核心原理与实战指南

在网络安全领域,内网渗透测试是评估企业纵深防御能力的关键环节,其核心在于高效、全面地发现资产与安全威胁。传统手动工具链存在信息聚合成本高、操作繁琐的痛点。自动化综合扫描工具通过集成端口扫描、服务识别、漏洞探测与弱口令爆破等模块,采用高并发架构实现流水线作业,将离散的侦察动作整合为连贯的自动化流程,极大提升了安全评估的效率和覆盖面。这类工具的技术价值在于其“上下文关联”能力,能基于识别结果自动触发后续检测,为安全工程师和运维人员提供了快速绘制内网攻击面地图的能力。Fscan 1.8.3作为一款轻量级、开箱即用

weixin_33871366的博客 431

深入学习 Redis - 主从结构配置、流程、底层原理(全网最详细)

单点问题可用性:如果这个机器挂了,意味着服务就中断了.性能:支持的并发量也是比较有限的.因此引入分布式系统,主要也是为了解决上述的单点问题~ 分布式系统中,往往需要多个服务器来部署 redis 服务,从而构成redis 集群,此时就可以让这个集群给整个分布式系统中的其他服务,提供更稳定 / 更高效的数据存储功能.本章主要来讲一下 redis 部署方式中的主从模式~

CYK_byte的博客 1万+

Redis - 原理篇

Redis原理篇:Redis五种数据结构、网络模型、网络协议、内存策略:内存key过期、内存淘汰

十二间记,知不足而奋斗,望远山而前行。千里不辞行路远,时光早晚到天涯。 3860

《驾驭你的AI同事:WorkBuddy深度精通》005:2.2 对话状态管理的分布式实现

本文深入解析了WorkBuddy服务端对话状态管理的分布式实现方案。对话状态作为AI会话的核心记忆,需要解决存储、同步、亲和性和持久化四大问题: 存储策略:采用三级存储体系 - Redis存热状态(主存储)、Memcached存临时缓存、数据库存冷数据归档。选择标准基于数据访问频率和丢失容忍度。 状态同步:采用共享存储模式确保强一致性,所有实例读写同一Redis集群,牺牲少许延迟换取数据一致性保障。 会话亲和性:通过一致性哈希算法实现请求路由优化,同一会话优先返回原实例,提升本地缓存命中率但不强制保证。

LuckyHanMo的博客 161

Redis面经

什么是Redis? Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据flush到硬盘上进行保存。因为是纯内存操作,Redis的性能非常出色,每秒可以处理超过 10万次读写操作,是已知性能最快的Key-Value DB。 Redis的出色之处不仅仅是性能,Redis最大的魅力是支持保存多种数据结构,此...

Geffin的博客 924

linux如何系统的学习?linux如何学习好?

对于刚刚接触到linux系统的小伙伴们还不知道怎么去学习linux呢,尤其是没有接触过IT行业的人员来说,看到杂乱的规则和代码,有不少人直接就崩溃了吧,其实,Linux的学习没有大家想象中的那么难,只要做好规划,坚持实施,很快就会取得成效的!以下是比较经典的Linux编程学习路线:第一阶段:linux基础入门1. 开班课程介绍-规章制度介绍-破冰活动;2. Linux硬件基础/Linux发展历史;...

lmseo5hy的博客 8545

5分钟搞定JY901S与STM32通信:硬件I2C+DMA配置全流程(附OLED显示教程)

本文详细介绍了如何通过STM32硬件I2C接口配合DMA高效读取JY901S姿态传感器数据,并实现OLED实时显示。文章从硬件连接、I2C与DMA配置、通信协议解析到数据可视化,提供了完整的实战流程和避坑指南,帮助开发者快速构建高精度、低CPU占用的姿态感知系统。

weixin_29185167的博客 484

redis 主从配置_全网最清晰!Redis主从复制原理及实现,绝对给你非一般的体验...

前言相信很多小伙伴都已经配置过主从复制,但是对于redis主从复制的工作流程和原理等问题很多都没有深入的了解。今天笔者就为大家来梳理一下Redis主从复制的原理及实践,希望能帮到大家更好的提升哦~~~Redis主从复制原理和Mysql主从复制的原因一样,Redis虽然读取写入的速度都特别快,但是也会产生读压力特别大的情况。为了分担读压力,Redis支持主从复制,Redis的主从结构可以采用一主多从...

weixin_39583013的博客 92

基于YOLOv8的包装商品智能检测系统完整指南—含论文、代码

《基于YOLOv8的包装商品智能检测系统》摘要: 本文提出了一套完整的零售商品自动检测解决方案,利用YOLOv8深度学习框架实现高精度、高效率的商品识别。系统针对SKU110K大规模商品数据集(含11,762张高密度货架图像)进行优化,包含数据预处理、模型训练、推理检测和可视化界面全流程。详细介绍了从CSV标注到YOLO格式的转换方法、环境配置指南及技术架构设计。该系统可应用于智能零售、物流仓储等多个场景,有效解决人工盘点效率低、误差大的痛点。实验表明,该系统具备毫秒级检测速度和批量处理能力,为商业数字化转

FJN110的博客 210

全网首次开源,GitHub最新霸榜的102W 字Redis 高手心法笔记

我们需要一个系统观,清晰完整的去学习技术,同时也不能埋头苦干,过于死磕某个细节。今天跟着阿嘴一起吃透 Redis,深层次的掌握 Redis 核心原理以及实战技巧。一起搭建一套完整的知识框架,学会全局观去整理整个知识体系。系统观其实是至关重要的,从某种程度上说,在解决问题时,拥有了系统观,就意味着你能有依据、有章法地定位和解决问题。

wdj_yyds的博客 1245

【K8S系列】Kubernetes Pod节点CrashLoopBackOff 状态及解决方案详解【已解决】

在 Kubernetes 中,Pod 的状态为 **`CrashLoopBackOff`** 表示某个容器在启动后崩溃,Kubernetes > 尝试重启该容器,但由于持续崩溃,重启的间隔时间逐渐增加。下面将详细介绍 `CrashLoopBackOff > `状态的原因、解决方案及相关命令的输出解释。

颜淡慕潇 8381

【局部路径规划模块地图算法】基于势场地图的VFH、VFH+、VFH*算法(附C++代码)

认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!本文先对基于地图的方法–VFH、VFH+、VFH*算法做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章提示:以下是本篇文章正文内容。

qq_35635374的博客 1688

全网最详细|MacBook 搭建 Redis 7 三主三从集群(Docker 完整版,无坑教程)

本文提供了一份详细的MacOS环境下使用Docker搭建Redis 7.2集群(3主3从)的完整教程。教程包含环境准备、目录规划、配置文件生成、容器启动、集群创建及验证等全流程步骤,特别针对macOS常见问题(端口冲突、网络问题等)提供了解决方案。文章采用目录挂载+配置分离+数据持久化的架构,确保环境可复用、可销毁,并包含集群健康检查、主从同步测试等验证方法,以及常见问题排查和运维命令。所有命令均经过实测验证,可直接用于学习、开发和面试演示场景。

weixin_45509050的博客 428

71.qt quick-可伸展菜单-抽屉栏示例 通用QML界面(一键换肤)

特点: 支持动态添加item、删除item、自适应界面 附带添加删除、展开等动画 同时支持qwidget、qml加载 支持number提示(比如消息数量等) 侧边抽屉栏支持动画伸展 支持换肤、拖拽、最大化等

抵抗时间扭曲,坚持做一件有意义的事 5286

2025大厂Redis面试硬核全解|数据结构+持久化+缓存+分布式锁,吃透稳拿offer

本文结合真实面试真题、实战项目经验以及底层原理,整理出这份全网超硬核的Redis面试笔记,覆盖高频考点、底层逻辑、业务场景落地,吃透这一篇,大厂Redis面试直接从容应对,少走90%的备考弯路。

hzzzzzh1的博客 436

【深度学习|地学应用】MODIS AOD产品和HYSPLIT模型的局限性和不确定性?

【深度学习|地学应用】MODIS AOD产品和HYSPLIT模型的局限性和不确定性?

985小水博的摸鱼日常 464

《Python星球日记》 第73天:情感分析与主题建模

《Python星球日记》 第73天:情感分析与主题建模,今天我们将探索两个自然语言处理领域的重要技术:情感分析和主题建模。这两项技术在社交媒体分析、用户反馈处理、市场研究等多个领域有着广泛应用。

Code_流苏:在代码中寻诗意,在实践中觅真知 919

Redis Stack部署与实战:从安装到高可用,解锁实时数据平台

在数据库与缓存技术领域,内存数据库通过将数据存储在内存中,实现了远超传统磁盘数据库的读写性能,成为构建高性能应用的关键组件。其核心原理在于利用内存的高速访问特性,并结合高效的数据结构与持久化机制,在速度与可靠性间取得平衡。这一技术为微服务架构、实时分析和物联网等场景提供了毫秒级响应的数据层支撑,极大地提升了系统的吞吐量和用户体验。Redis作为内存数据库的代表,其原生键值模型已广为人知,但在处理JSON文档、全文搜索、时间序列和概率判断等复杂场景时存在局限。Redis Stack作为官方增强发行版,集成了R

weixin_34007906的博客 300

论文阅读:Query-Dependent Video Representation for Moment Retrieval and Highlight Detection

近年来,随着视频理解需求的急剧增加,视频时刻检索和高亮检测(MR/HD)成为人们关注的焦点。MR/HD的主要目标是对给定的文本进行视频时刻定位和内容一致性估计,即显著性得分。尽管最近基于transformer的模型带来了一些进步,但我们发现这些方法并不能完全利用给定查询的信息。例如,在预测时刻及其显著性时,有时会忽略文本查询与视频内容之间的相关性。为了解决这个问题,我们引入了基于查询的DETR (QD-DETR),这是一种为MR/HD量身定制的检测transfomer。

qq_42681787的博客 920

三年开发者内功修炼:从API调用到系统思维与深度调试

在软件开发领域,系统性思维和深度调试能力是工程师从初级迈向中高级的关键内功。系统性思维要求开发者超越单点功能实现,建立业务、技术和协作的上下文意识,通过架构权衡分析和可视化设计来构建稳健的软件系统。其技术价值在于提升方案设计的扩展性和可维护性,广泛应用于微服务架构、复杂业务系统设计等场景。深度调试则强调超越基础日志排查,构建由分布式链路追踪、应用性能监控和性能剖析组成的多维证据链,并运用“假设-验证”科学方法定位线上问题本质,这对于保障高可用、高性能的分布式系统至关重要。本文聚焦于开发者成长平台期的核心痛点

weixin_30312563的博客 418

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

【新版】系统架构设计师 - 案例分析 - 总览

架构 - 案例分析 - 总览,新旧大纲对应

初八 3618

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

linux网络编程怎么学?新手必知Linux编程学习路线

学linux开发难吗?是 Linux初学者经常会问的问题,其实Linux和Windows一样都属于操作系统,对于大部分人来说,对Windows操作系统十分熟悉,而对Linux操作系统没有使用过,所以觉得很难,其实,只要熟练掌握其操作命令和一些系统规则,就可以像使用Windows一样可以轻松使用Linux操作系统!以下是比较经典的Linux编程学习路线:第一阶段:linux基础...

weixin_34327761的博客 378

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

上一篇: Java微服务框架选型,Dubbo和Spring Cloud全解析,满满的干货
下一篇: 面试官:谈关于缓存穿透+击穿+雪崩,以及热点数据失效问题的解决方案
Java领域指导者
博客等级 码龄7年 404粉丝 265原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值