Redis 集群实现分布式缓存的示例操作流程【Redis 系列之五】
〇、前言
Redis 集群的核心优势在于高可用性、可扩展性和高性能,特别适合需要处理大规模数据和高并发请求的应用场景。
本文先介绍了什么是 Redis 集群,然后通过示例,以手动和自动两种方式搭建集群,仅供参考。
安装、配置等详见博主过往 Redis 相关文章,都在这里了:https://www.cnblogs.com/hnzhengfy/category/2229717.html
一、Redis 集群简介
Redis 集群(Redis Cluster)是 Redis 官方在 3.0 版本推出的一套分布式存储方案。Redis 5.0 版本开始便把自动创建集群工具,集成到 redis-cli 中,因此更推荐使用新版本。
Redis集群是一个分布式实现的网状结构,提供了数据的自动分片以及对于数据节点故障的高可用性支持。每个节点都通过 TCP 连接跟其他每个节点连接,在一个有 N 个节点的集群中,每个节点都有 N-1 个流出的 TCP 连接,和 N-1 个流入的连接,这些 TCP 连接会永久保持。
如下图中一个蓝色圆为一个 Redis 节点:
下面是 Redis 集群的几个特点简介:
- 数据分布
Redis 集群通过哈希槽(hash slot)来分配数据,整个集群共有 16384 个槽位。
所有的单个键值对将被均匀的保存到 16384 个哈希槽中的一个,键的槽位是通过对 key 键进行 CRC16 计算然后取模 16384 得到的。
不同的主节点负责不同的哈希槽范围,这个范围可以在集群配置时手动指定。
- 高可用性
Redis 集群使用主从复制模型提供高可用性,每个主节点 master 都有至少一个从节点 slave 作为备份。
自动故障转移。当某个主节点发生故障时,其对应的从节点会升级为主节点继续提供服务,从而保证了集群的可用性。
当存在多个从节点时,其所有子节点会广播一个数据包给集群里的其他主节点来请求选票,一旦某个从节点收到了大多数主节点的回应,那么它就赢得了选举,被推选为主节点,负责处理之前旧的主节点负责的哈希槽。这一过程是自动完成的,不需要人工干预。
- 扩展性
Redis 集群允许动态添加或移除节点,从而轻松扩展读写性能和存储容量。
添加新节点后,可以手动或者自动将某些哈希槽迁移到新节点上。
Redis 集群的典型应用场景:
- 缓存系统:需要存储大量热点数据,并且要求高并发访问。
- 会话存储:分布式系统中存储用户会话信息。
- 消息队列:实现高性能的消息传递和任务调度。
- 排行榜/计数器:存储实时更新的排名或计数数据。
- 分布式锁:在分布式系统中实现高效的锁机制。
尽管 Redis 集群有很多优点,但也需要注意以下几点:
- 客户端兼容性:需要使用支持 Redis 集群模式的客户端,以正确处理重定向(MOVED 和 ASK)。
- 事务支持有限:Redis 集群不支持跨节点的事务操作。
- 复杂性增加:相比单机 Redis,集群的部署、管理和维护更加复杂。
- 网络依赖:集群的性能和稳定性依赖于网络环境,网络延迟可能会影响性能。
更详细的介绍见官方文档:Scale with Redis Cluster Redis cluster specification
二、Redis 集群的搭建
2.1 简介
依据 Redis Cluster 内部故障转移实现原理,Redis 集群至少需要 3 个主节点,而每个主节点至少有 1 从节点,因此搭建一个集群至少包含 6 个节点,三主三从。
若为生产环境需要分别部署在 6 台不同机器上,并需要保证互相之间网络保持联通。本文为测试实例,将部署在同一台测试机上。
目前搭建方式有两种:
- 手动搭建,通过 cluster 命令一步步实现。
- 自动搭建,使用官方提供的集群管理工具快速搭建。
两种方式原理一样,自动搭建方式只是将手动搭建方式中需要执行的 Redis 命令封装成了可执行程序。
生产环境推荐使用自动搭建方式,更便捷、可靠。
2.2 手动搭建的步骤
2.2.1 分别配置并启动六个 Redis 服务节点
测试环境为单机部署六个节点,因此需要通过端口来区分。
节点信息预设:
TCP 端口 | 节点类型 | 从节点对应端口 | 配置文件位置 |
7001 | 主 | 9001 | /usr/local/redis-cluster/7001/redis.conf |
7002 | 主 | 9002 | /usr/local/redis-cluster/7002/redis.conf |
7003 | 主 | 9003 | /usr/local/redis-cluster/7003/redis.conf |
9001 | 从 | - | /usr/local/redis-cluster/9001/redis.conf |
9002 | 从 | - | /usr/local/redis-cluster/9002/redis.conf |
9003 | 从 | - | /usr/local/redis-cluster/9003/redis.conf |
如下涉及到的命令。
下载和安装 Redis:
[root@www ~]# cd /usr/local
[root@www local]# wget http://download.redis.io/releases/redis-7.2.7.tar.gz # 下载安装包
[root@www local]# tar -zxvf redis-7.2.7.tar.gz # 解压
[root@www local]# cd redis-7.2.7
[root@www redis-7.2.7]# make && make install # 执行安装,直至完成即可
注意:Redis 基于 C 语言开发,故编译源码需要 GCC(Linux 下的一个编译器,这里需要用来编译 .c 文件)的支持。如机器上未安装需要先执行命令yum -y install gcc
安装 GCC 编译工具,然后make distclean
清除之前生成的文件,最后make && make install
重新编译安装。
分别修改六个配置文件:(根据端口号进行不同配置)
bind 10.10.1.1 # 设置当前节点主机地址
port 7001 # 设置客户端连接监听端口
pidfile /var/run/redis_7001.pid # 设置 Redis 实例 pid 文件
daemonize yes # 以守护进程运行 Redis 实例
cluster-enabled yes # 启用集群模式
cluster-node-timeout 15000 # 设置当前节点连接超时毫秒数
cluster-config-file nodes-7001.conf # 设置当前节点集群配置文件路径
databases 1 # 集群模式,Redis 自动将数据库的数量从默认的 16 个(databases 配置项)调整为 1 个
protected-mode no # 关闭保护模式,因为配置了具体的 IP,但未配置密码【可根据实际情况配置】
然后再启动服务:
[root@www ~]# /usr/local/bin/redis-server /usr/local/redis-cluster/9001/redis.conf # 分别启动六个 Redis 服务,注意配置文件的路径
[root@www ~]# ps -ef|grep redis # 查看服务启动是否成功
root 13663 1 0 10:23 ? 00:00:06 /usr/local/bin/redis-server 10.225.141.138:7001 [cluster]
root 13921 1 0 10:26 ? 00:00:06 /usr/local/bin/redis-server 10.225.141.138:7002 [cluster]
root 13939 1 0 10:26 ? 00:00:06 /usr/local/bin/redis-server 10.225.141.138:7003 [cluster]
root 16183 1 0 11:05 ? 00:00:00 /usr/local/bin/redis-server 10.225.141.138:9001 [cluster]
root 16253 1 0 11:06 ? 00:00:00 /usr/local/bin/redis-server 10.225.141.138:9002 [cluster]
root 16268 1 0 11:06 ? 00:00:00 /usr/local/bin/redis-server 10.225.141.138:9003 [cluster]
root 16281 16200 0 11:06 pts/1 00:00:00 grep --color=auto redis
[root@www ~]#
# 若服务未启动成功,可能是端口被占用
lsof -i:9001
# lsof 命令安装:
yum install lsof -y
2.2.2 节点握手
节点握手(Node Handshake)是指集群中的各个节点相互识别并建立连接的过程。这是集群启动和正常运作的基础步骤之一,确保了所有节点能够相互通信,并共同维护整个集群的状态。
因为集群中的节点在创建之初都是相互独立的,只有通过节点握手操作,才可以将全部节点关联起来。
# 节点握手的命令格式:
cluster meet ip port
Redis 集群各个节点之间都是有联系的,但并不需要通过语句把全部的节点都进行握手,因为这些 TCP 连接是可以互相传导的。例如 A 和 B 之间有关联,B 和 C 之间有关联,那么 A 和 C 之间就会自动创建连接,无需重复创建。
因此,只需要在 7001 节点,把其他五个节点都连接上即可。
如下操作,先进入 7001 节点,然后通过命令连接其他 5 个节点:
# 首先,进入 A 节点
[root@www ~]# /usr/local/bin/redis-cli -h 10.225.141.138 -p 7001
10.225.141.138:7001>
# 然后,连接其他五个节点
10.225.141.138:7001> cluster meet 10.225.141.138 7002
OK
10.225.141.138:7001> cluster meet 10.225.141.138 7003
OK
10.225.141.138:7001> cluster meet 10.225.141.138 9003
OK
10.225.141.138:7001> cluster meet 10.225.141.138 9002
OK
10.225.141.138:7001> cluster meet 10.225.141.138 9001
OK
10.225.141.138:7001>
# 配置完成后,可以通过 cluster nodes 命令,查看节点间的连接情况
# 查看 7002 端口:
[root@www ~]# /usr/local/bin/redis-cli -h 10.225.141.138 -p 7002 cluster nodes
6da31e7a6e89f7cdeb67294b557a2c13aa70a96d 10.225.141.138:9002@19002 master - 0 1744100953776 4 connected
95da38d0420e5908951a1b069e7eb09aba3e0fc4 10.225.141.138:7001@17001 master - 0 1744100955785 1 connected
14e23d0018458d16c30f3ecd6f154b1e54cfef6c 10.225.141.138:9003@19003 master - 0 1744100953000 3 connected
656696a751c65c702b40b4429353918cac6ca1bc 10.225.141.138:7003@17003 master - 0 1744100954781 2 connected
c1920f7b5d6de3763bb33fe0b801ffda8d5e4219 10.225.141.138:7002@17002 myself,master - 0 1744100952000 0 connected
50927b3da6dd835093fc02c045bb791685393e69 10.225.141.138:9001@19001 master - 0 1744100953000 5 connected
# 查看 9003 端口:
[root@www ~]# /usr/local/bin/redis-cli -h 10.225.141.138 -p 9003 cluster nodes
50927b3da6dd835093fc02c045bb791685393e69 10.225.141.138:9001@19001 master - 0 1744100973213 5 connected
c1920f7b5d6de3763bb33fe0b801ffda8d5e4219 10.225.141.138:7002@17002 master - 0 1744100973000 0 connected
95da38d0420e5908951a1b069e7eb09aba3e0fc4 10.225.141.138:7001@17001 master - 0 1744100974216 1 connected
6da31e7a6e89f7cdeb67294b557a2c13aa70a96d 10.225.141.138:9002@19002 master - 0 1744100972000 4 connected
14e23d0018458d16c30f3ecd6f154b1e54cfef6c 10.225.141.138:9003@19003 myself,master - 0 1744100971000 3 connected
656696a751c65c702b40b4429353918cac6ca1bc 10.225.141.138:7003@17003 master - 0 1744100974000 2 connected
[root@www ~]#
根据输出结果可以看出,每个节点都保持有 5 个连接,也就标志这个握手配置完成。
2.2.3 分配槽位
槽位就是 Redis 集群中的哈希槽(Hash Slot)机制,它可以实现数据的分布式存储和负载均衡。
什么是哈希槽?在 Redis 集群中,整个键空间被划分为16384个哈希槽(编号从0到16383)。每个节点负责一部分哈希槽,当客户端向集群中的某个节点发送命令时,如果该命令涉及的键属于这个节点所负责的哈希槽,则直接处理;如果不属于,则会返回一个重定向信息给客户端,指示它去正确的节点执行操作。
当完成握手操作后,此时的集群并未是上线运行状态,可以通过cluster info
命令来查看集群当前状态。
[root@www ~]# /usr/local/bin/redis-cli -h 10.225.141.138 -p 7001 cluster info
cluster_state:fail
cluster_slots_assigned:0
cluster_slots_ok:0
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:6
cluster_size:0
cluster_current_epoch:5
cluster_my_epoch:1
cluster_stats_messages_ping_sent:1670
cluster_stats_messages_pong_sent:1604
cluster_stats_messages_meet_sent:5
cluster_stats_messages_sent:3279
cluster_stats_messages_ping_received:1604
cluster_stats_messages_pong_received:1675
cluster_stats_messages_received:3279
total_cluster_links_buffer_limit_exceeded:0
[root@www ~]#
通过第一行中的cluster_state:fail
,可以看出当前集群状态为不可用。
这是因为各个节点的槽位尚未指定。只有分配了槽位数据请求才可以根据槽位配置到达指定的数据库。
# 配置槽位的命令语法:
cluster addslots slot [slot ...]
# 根据设计,需要给三个主节点 A、B、C 分配槽位,那么就均分全部 16383 个槽位
[root@www ~]# /usr/local/bin/redis-cli -h 10.225.141.138 -p 7001 cluster addslots {0..5461}
OK
[root@www ~]# /usr/local/bin/redis-cli -h 10.225.141.138 -p 7002 cluster addslots {5462..10922}
OK
[root@www ~]# /usr/local/bin/redis-cli -h 10.225.141.138 -p 7003 cluster addslots {10923..16383}
OK
[root@www ~]# /usr/local/bin/redis-cli -h 10.225.141.138 -p 7001 cluster info
cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:6
cluster_size:3 # 3 个配置了哈希槽的节点为主节点
cluster_current_epoch:5
cluster_my_epoch:1
cluster_stats_messages_ping_sent:199
cluster_stats_messages_pong_sent:208
cluster_stats_messages_meet_sent:5
cluster_stats_messages_sent:412
cluster_stats_messages_ping_received:208
cluster_stats_messages_pong_received:204
cluster_stats_messages_received:412
total_cluster_links_buffer_limit_exceeded:0
[root@www ~]#
通过最后输出的第一行中的cluster_state:ok
,可以看出当前集群状态为可用。
注意:如果哈希槽配置错误的话,需要将全部节点删掉,重新开启六个服务员、握手、配置哈希槽。
2.2.4 主从复制
Redis 集群中的主从复制(Master-Slave Replication)是实现高可用性和数据冗余的重要机制。通过主从复制,Redis 能够在主节点(Master)发生故障时,将其中一个从节点(Slave)提升为主节点,从而保证服务的连续性。
槽位分配完成后,当某一个节点异常后,整个 Redis 服务就会挂掉,此时就需要给节点分主从了。
# 主从配置的语法:
redis-cli -h <ip-slave> -p <port-slave> cluster replicate <node-id-master>
# 其中的 node-id 可以通过 cluster node 查询,如下第一列:
[root@www ~]# /usr/local/bin/redis-cli -h 10.225.141.138 -p 7001 cluster nodes
ec08659c0c30d9070ed49a76fcc7a40cfecd0558 10.225.141.138:7002@17002 master - 0 1744111736908 0 connected 5462-10922
6be04389be627b46af71dfd65cb99bf0f8b5b8d6 10.225.141.138:7003@17003 master - 0 1744111735903 2 connected 10923-16383
e8dc3ba5fab05104fe63cb2401bd1969f7617ac6 10.225.141.138:7001@17001 myself,master - 0 1744111734000 1 connected 0-5461
97c82692d437136e4f417fe117cfe611e7446a9e 10.225.141.138:9001@19001 master - 0 1744111734899 5 connected
5b063fd32127fecc84308f31489dc93823d015e2 10.225.141.138:9002@19002 master - 0 1744111736000 4 connected
7e85fb3b01f045d98dc2f5e07dcd700dc5921faf 10.225.141.138:9003@19003 master - 0 1744111736000 3 connected
# 根据设计,7001-主【9001-从】、7002-主【9002-从】、7003-主【9003-从】
[root@www ~]# /usr/local/bin/redis-cli -h 10.225.141.138 -p 9001 cluster replicate e8dc3ba5fab05104fe63cb2401bd1969f7617ac6
OK
[root@www ~]# /usr/local/bin/redis-cli -h 10.225.141.138 -p 9002 cluster replicate ec08659c0c30d9070ed49a76fcc7a40cfecd0558
OK
[root@www ~]# /usr/local/bin/redis-cli -h 10.225.141.138 -p 9003 cluster replicate 6be04389be627b46af71dfd65cb99bf0f8b5b8d6
OK
# 最后再查看下集群状态,三主三从
[root@www ~]# /usr/local/bin/redis-cli -h 10.225.141.138 -p 7002 cluster nodes
ec08659c0c30d9070ed49a76fcc7a40cfecd0558 10.225.141.138:7002@17002 myself,master - 0 1744112243000 0 connected 5462-10922
e8dc3ba5fab05104fe63cb2401bd1969f7617ac6 10.225.141.138:7001@17001 master - 0 1744112242968 1 connected 0-5461
7e85fb3b01f045d98dc2f5e07dcd700dc5921faf 10.225.141.138:9003@19003 slave 6be04389be627b46af71dfd65cb99bf0f8b5b8d6 0 1744112243000 2 connected
5b063fd32127fecc84308f31489dc93823d015e2 10.225.141.138:9002@19002 slave ec08659c0c30d9070ed49a76fcc7a40cfecd0558 0 1744112241000 0 connected
97c82692d437136e4f417fe117cfe611e7446a9e 10.225.141.138:9001@19001 slave e8dc3ba5fab05104fe63cb2401bd1969f7617ac6 0 1744112244977 1 connected
6be04389be627b46af71dfd65cb99bf0f8b5b8d6 10.225.141.138:7003@17003 master - 0 1744112243973 2 connected 10923-16383
[root@www ~]#
至此,测试集群就搭建完成了。
2.3 自动搭建
Redis 官方提供了关于集群的命令,使用简单、便捷。
以--cluster
参数提供使用,其中create
命令可以用来创建集群。但是建议使用 5.0 及以上版本,因为从 5.0 版本开始,这两个命令才被集成到 redis-cli 工具。之前版本还需要安装 Ruby 语言执行环境。
在执行自动搭建命令前,也同样需要先把 6 个节点服务开起来,详见手动搭建部分。
服务开启后就可以使用自动搭建命令来一键搭建:
/usr/local/bin/redis-cli --cluster create 10.225.141.138:7001 10.225.141.138:7002 10.225.141.138:7003 10.225.141.138:9001 10.225.141.138:9002 10.225.141.138:9003 --cluster-replicas 1
如下执行结果:(其中有一步需要输入yes
确认,建议先仔细检查生成的配置是否符合预期,特别是槽位分配和主从关系)
# 执行命令
[root@www bin]# /usr/local/bin/redis-cli --cluster create 10.225.141.138:7001 10.225.141.138:7002 10.225.141.138:7003 10.225.141.138:9001 10.225.141.138:9002 10.225.141.138:9003 --cluster-replicas 1
>>> Performing hash slots allocation on 6 nodes...
Master[0] -> Slots 0 - 5460
Master[1] -> Slots 5461 - 10922
Master[2] -> Slots 10923 - 16383
Adding replica 10.225.141.138:9002 to 10.225.141.138:7001
Adding replica 10.225.141.138:9003 to 10.225.141.138:7002
Adding replica 10.225.141.138:9001 to 10.225.141.138:7003
>>> Trying to optimize slaves allocation for anti-affinity
[WARNING] Some slaves are in the same host as their master
M: af1ff734b47df915722ffa9a79586743db36c2d2 10.225.141.138:7001
slots:[0-5460] (5461 slots) master
M: 9305f12e963336ca227273e47fce3e2044a244de 10.225.141.138:7002
slots:[5461-10922] (5462 slots) master
M: fc0a9cb203a7ad95252c3728ac8de9eb87c367d4 10.225.141.138:7003
slots:[10923-16383] (5461 slots) master
S: b3f919bf46306463a5d81ce9d45464045eeeac41 10.225.141.138:9001
replicates af1ff734b47df915722ffa9a79586743db36c2d2
S: e97b87fb6cc894767557fc9c439ba9ddbdf0c144 10.225.141.138:9002
replicates 9305f12e963336ca227273e47fce3e2044a244de
S: 69e7a3f91b08671a594579ac95fc755bf394a212 10.225.141.138:9003
replicates fc0a9cb203a7ad95252c3728ac8de9eb87c367d4
Can I set the above configuration? (type 'yes' to accept): yes # 手动确认自动生成集群的配置信息(如节点分配、槽位分布等)
>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join
.
>>> Performing Cluster Check (using node 10.225.141.138:7001)
M: af1ff734b47df915722ffa9a79586743db36c2d2 10.225.141.138:7001
slots:[0-5460] (5461 slots) master
1 additional replica(s)
M: 9305f12e963336ca227273e47fce3e2044a244de 10.225.141.138:7002
slots:[5461-10922] (5462 slots) master
1 additional replica(s)
S: e97b87fb6cc894767557fc9c439ba9ddbdf0c144 10.225.141.138:9002
slots: (0 slots) slave
replicates 9305f12e963336ca227273e47fce3e2044a244de
S: 69e7a3f91b08671a594579ac95fc755bf394a212 10.225.141.138:9003
slots: (0 slots) slave
replicates fc0a9cb203a7ad95252c3728ac8de9eb87c367d4
M: fc0a9cb203a7ad95252c3728ac8de9eb87c367d4 10.225.141.138:7003
slots:[10923-16383] (5461 slots) master
1 additional replica(s)
S: b3f919bf46306463a5d81ce9d45464045eeeac41 10.225.141.138:9001
slots: (0 slots) slave
replicates af1ff734b47df915722ffa9a79586743db36c2d2
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
# 至此自动部署完成!
# 下边查看生成结果:
[root@www bin]# /usr/local/bin/redis-cli -h 10.225.141.138 -p 7001 cluster nodes
9305f12e963336ca227273e47fce3e2044a244de 10.225.141.138:7002@17002 master - 0 1744282476755 2 connected 5461-10922
af1ff734b47df915722ffa9a79586743db36c2d2 10.225.141.138:7001@17001 myself,master - 0 1744282473000 1 connected 0-5460
e97b87fb6cc894767557fc9c439ba9ddbdf0c144 10.225.141.138:9002@19002 slave 9305f12e963336ca227273e47fce3e2044a244de 0 1744282475750 2 connected
69e7a3f91b08671a594579ac95fc755bf394a212 10.225.141.138:9003@19003 slave fc0a9cb203a7ad95252c3728ac8de9eb87c367d4 0 1744282474000 3 connected
fc0a9cb203a7ad95252c3728ac8de9eb87c367d4 10.225.141.138:7003@17003 master - 0 1744282474000 3 connected 10923-16383
b3f919bf46306463a5d81ce9d45464045eeeac41 10.225.141.138:9001@19001 slave af1ff734b47df915722ffa9a79586743db36c2d2 0 1744282476000 1 connected
[root@www bin]# /usr/local/bin/redis-cli -h 10.225.141.138 -p 7002 cluster nodes
af1ff734b47df915722ffa9a79586743db36c2d2 10.225.141.138:7001@17001 master - 0 1744282484000 1 connected 0-5460
fc0a9cb203a7ad95252c3728ac8de9eb87c367d4 10.225.141.138:7003@17003 master - 0 1744282487101 3 connected 10923-16383
e97b87fb6cc894767557fc9c439ba9ddbdf0c144 10.225.141.138:9002@19002 slave 9305f12e963336ca227273e47fce3e2044a244de 0 1744282485093 2 connected
b3f919bf46306463a5d81ce9d45464045eeeac41 10.225.141.138:9001@19001 slave af1ff734b47df915722ffa9a79586743db36c2d2 0 1744282485000 1 connected
69e7a3f91b08671a594579ac95fc755bf394a212 10.225.141.138:9003@19003 slave fc0a9cb203a7ad95252c3728ac8de9eb87c367d4 0 1744282486097 3 connected
9305f12e963336ca227273e47fce3e2044a244de 10.225.141.138:7002@17002 myself,master - 0 1744282485000 2 connected 5461-10922
[root@www bin]#
参考:https://www.cnblogs.com/esofar/p/10486621.html
Redis 集群实现分布式缓存的示例操作流程【Redis 系列之五】的更多相关文章
- Redis集群与分布式介绍以及搭建Redis-Cluster
1 Redis集群 1.1 什么是集群 集群就是很多服务器组成的一个网络.指的是将多台服务器集中在一起,实现同一业务. 1.2 为什么要集群 一台服务器不能满足开发需要的时候,需要多台服务器来支持.这 ...
- Redis集群的分布式部署
3.2.2:Redis Cluster: Redis 分布式部署方案: 1) 客户端分区:由客户端程序决定 key 写分配和写入的 redis node,但是需要客户端自己处理写入 分配.高可用管 ...
- 用C、python手写redis客户端,兼容redis集群 (-MOVED和-ASK),快速搭建redis集群
想没想过,自己写一个redis客户端,是不是很难呢? 其实,并不是特别难. 首先,要知道redis服务端用的通信协议,建议直接去官网看,博客啥的其实也是从官网摘抄的,或者从其他博客抄的(忽略). 协议 ...
- JAVAEE——宜立方商城06:Redis安装、数据类型和持久化方案、Redis集群分析与搭建、实现缓存和同步
1. 学习计划 1.首页轮播图展示 2.Redis服务器搭建 3.向业务逻辑中添加缓存. 4.使用redis做缓存 5.缓存同步. 2. 首页轮播图动态展示 2.1. 功能分析 根据分类id查询内容列 ...
- redis集群+JedisCluster+lua脚本实现分布式锁(转)
https://blog.csdn.net/qq_20597727/article/details/85235602 在这片文章中,使用Jedis clien进行lua脚本的相关操作,同时也使用一部分 ...
- (转)高性能网站架构之缓存篇—Redis集群搭建
看过 高性能网站架构之缓存篇--Redis安装配置和高性能网站架构之缓存篇--Redis使用配置端口转发 这两篇文章的,相信你已经对redis有一定的了解,并能够安装上,进行简单的使用了,但是在咱们的 ...
- 分布式ID系列(4)——Redis集群实现的分布式ID适合做分布式ID吗
首先是项目地址: https://github.com/maqiankun/distributed-id-redis-generator 关于Redis集群生成分布式ID,这里要先了解redis使用l ...
- Redis集群搭建,伪分布式集群,即一台服务器6个redis节点
Redis集群搭建,伪分布式集群,即一台服务器6个redis节点 一.Redis Cluster(Redis集群)简介 集群搭建需要的环境 二.搭建集群 2.1Redis的安装 2.2搭建6台redi ...
- Linux配置Redis集群 和 缓存介绍。
// 一.什么是缓存? mybatis一级缓存和二级缓存 mybatis的一级缓存存在哪? SqlSession,就不会再走数据库 什么情况下一级缓存会失效? 当被更新,删除的时候sqlsession ...
- 高性能网站架构设计之缓存篇(5)- Redis 集群(上)
集群技术是构建高性能网站架构的重要手段,试想在网站承受高并发访问压力的同时,还需要从海量数据中查询出满足条件的数据,并快速响应,我们必然想到的是将数据进行切片,把数据根据某种规则放入多个不同的服务器节 ...
随机推荐
- Hadoop 概述(一)
Hadoop概述信息 hadoop 有三大组成部分,HDFS(分布式文件存储系统).YARN(资源管理器).MAPREDUCE(分布式计算框架) ,下边我们来简单介绍一下 HDFS 分布式文件存储系统 ...
- Redis的分布式锁详解
Redis实现的分布式锁 # 对资源key加锁,key不存在时创建,并且设置,10秒自动过期 SET key value EX 10 NX # 删除key DEL key NX的作用 NX参数是为了保 ...
- bug的合规描述
bug的合格描述: 发现问题的版本bug的合格描述: 开发人员需要知道出现问题的版本,才能够获取对应版本的代码来重现故障问题出现的环境 环境分为硬件环境和软件环境,详细的环境描述有利于故障的重现( ...
- ctfshow--web10 php代码逻辑漏洞with rollup注入
dirsearch没有扫到文件 查看源代码发现 有个style.css文件点击查看 查看index.phps代码 又是代码审计 点击查看代码 <?php $flag=""; ...
- MTV和MVC模式,初识模板
MTV和MVC模式,初识模板1.MTV和MVC模式:分层级进行管理 说到框架模式我们有必要简单的说下设计模式,了解下设计模式这个概念,因为有人对设计模式和框架模式的概念经常混淆 设计模式: 是一套被反 ...
- Flink CDC全量和增量同步数据如何保证数据的一致性
Apache Flink 的 Change Data Capture (CDC) 功能主要用于实时捕获数据库中的变更记录,并将其转换为事件流以供下游处理.为了保证全量和增量数据同步时数据的一致性.不丢 ...
- 单机麒麟kylin安装
https://archive.apache.org/dist/kylin/ 2.5.0版本 首先启动hadoop.hive.hbase 并记得设置环境变量 #JDK export JAVA_HOME ...
- 定制化训练DeepSeek模型:LoAR、COT推理与SFT技术应用
DeepSeek-R1 模型微调系列 DeepSeek-R1 模型微调系列一. 前言介绍本文内容:1.1 项目背景1.2 LoRA和 QLoRA 简介1.3 LLaMA 架构和 Qwen 架构LLaM ...
- 在GitHub上部署个人静态网站
在GitHub上部署个人静态网站 首先将网站设置文件上传到github的一个新建仓库,并公开仓库(会员可不用公开) 找到settings(设置)-page(页面)选项并进入 选择分支(root)并sa ...
- python接入百度智能云API实现ai对话
python接入百度智能云API实现ai对话 千帆大模型平台-百度智能云千帆 代码段: import requests import json # 获取访问令牌的函数 def get_access_t ...