2025年redis端口(redis端口6379)

redis端口(redis端口6379)p class f center p

大家好,我是讯享网,很高兴认识大家。




讯享网

 <p class="f_center"><img src="https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2023%2F0525%2Fadj00rv7nc1000ld000hs00a0p.jpg&thumbnail=660x&quality=80&type=jpg"/><br/></p><p id="1QJ5947E">下面我们来看看redis的集群实现。</p><p id="1QJ5947F">redis集群,即对redis的一种水平扩容,主要解决并发写量太大有性能瓶颈,单台redis容量限制的问题。</p><p class="f_center"><img src="https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2023%2F0525%2Ff4e5958aj00rv7nc3000jd000hs009cp.jpg&thumbnail=660x&quality=80&type=jpg"/><br/></p><p id="1QJ5947H">n&gt;3:一个集群至少有3个master,新master的选举需要大于半数的集群master节点同意才能选举成功,如果只有两个master节点,其中一个宕机了,达不到选举新master的条件。</p><p id="1QJ5947I">1、集群实现</p><p id="1QJ5947J">我们以三主三从来实现redis集群,对redis.conf进行配置,端口选择:6379,6380,6381,6389,6390,6391。</p><p id="1QJ5947K">1.1 创建cluster目录,并将redis.conf复制到该文件夹</p><p id="1QJ5947L">bash复制代码 mkdir clustercp /usr/local/redis/redis-6.2.1/redis.conf /opt/cluster/</p><p class="f_center"><img src="https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2023%2F0525%2Fj00rv7nc4000bd000hs002bp.jpg&thumbnail=660x&quality=80&type=jpg"/><br/></p><p id="1QJ5947N">1.2 复制redis.conf,并进行配置</p><p id="1QJ5947O">bash复制代码cp /opt/cluster/redis.conf /opt/cluster/redis-6379.confvim redis-6379.confdaemonize yesbind 192.168.23.102dir /opt/cluster/port 6379dbfilename dump_6379.rdbpidfile /var/run/redis_6379.pidlogfile "https://www.163.com/dy/article/log-6379.log"# 开启集群设置cluster-enabled yes# 设置节点配置文件cluster-config-file node-6379.conf# 设置节点失联时间,超过该时间(毫秒),集群自动进行主从切换cluster-node-timeout 15000</p><p id="1QJ5947P">其他节点的redis.conf一次进行配置,只需要将其中的端口号改成相应端口就可以了。</p><p id="1QJ5947Q">1.3 启动redis,查看启动状态</p><p id="1QJ5947R">bash复制代码redis-server /opt/cluster/redis-6379.conf</p><p id="1QJ5947S">其他端口的redis按照上述命令启动就OK。</p><p class="f_center"><img src="https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2023%2F0525%2F5be0efe6j00rv7nc5000pd000hs0063p.jpg&thumbnail=660x&quality=80&type=jpg"/><br/></p><p id="1QJ5947U">出现如图,则证明正常启动。</p><p id="1QJ5947V">1.4 合成集群</p><p id="1QJ59480">进入redis的src目录执行redis-cli --cluster create --cluster-replicas 1 ip:端口,合成集群</p><p id="1QJ59481">css复制代码redis-cli --cluster create --cluster-replicas 1 192.168.23.102:6379 192.168.23.102:6380 192.168.23.102:6381 192.168.23.102:6389 192.168.23.102:6390 192.168.23.102:6391</p><p class="f_center"><img src="https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2023%2F0525%2Fj00rv7nc8000ed000hs0040p.jpg&thumbnail=660x&quality=80&type=jpg"/><br/></p><p id="1QJ59483">回车后执行,在执行过程中会让我们确定是否同意这样的分配,输入:yes即可。等待程序执行完成,集群也就创建成功。</p><p id="1QJ59484">1.5 查看集群</p><p id="1QJ59485">进入redis中,使用cluster nodes来查看集群信息。</p><p id="1QJ59486">css复制代码redis-cli -h 192.168.23.102 -p 6379 cluster nodes</p><p class="f_center"><img src="https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2023%2F0525%2Ffda228eej00rv7nc9000jd000hs002zp.jpg&thumbnail=660x&quality=80&type=jpg"/><br/></p><p id="1QJ59488">如图:我们可以看到各个redis节点的角色,同时在slave节点上附带了对应master的id,例如:slave6390上附带的master节点的id:159b9faef8cfb3b81c72dd7d2c87ba339,而这个id对应的master就是6380。</p><p id="1QJ59489">1.6 集群读写操作</p><p id="1QJ5948A">我们使用redis-cli -h 192.168.23.102 -p 6379 进入的redis中,使用set name jiashn来写入数据。</p><p class="f_center"><img src="https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2023%2F0525%2F9be95600j00rv7nca0009d000hs0028p.jpg&thumbnail=660x&quality=80&type=jpg"/><br/></p><p id="1QJ5948C">我们发现,写入数据是redis报错了,告诉我们moved到6380。</p><p id="1QJ5948D">这是因为在cluster中存在槽(slots)概念。redis集群将内部划分成16384个slots(插槽),合并成集合的时候,会将每个slots映射到一个master上。例如:上面的三个master,映射范围如下:</p><p id="1QJ5948E">Redis主节点</p><p id="1QJ5948F">插槽(slots)范围</p><p id="1QJ5948G">master1(6379)</p><p id="1QJ5948H">[0-5460] 0是开始位置,表示第一个插槽</p><p id="1QJ5948I">master2(6380)</p><p id="1QJ5948J">[5460-10922]</p><p id="1QJ5948K">master3(6381)</p><p id="1QJ5948L">[10922-16383]</p><p id="1QJ5948M">slave1,slave2,slave3</p><p id="1QJ5948N">从节点没有插槽,slave是用来对master做替补</p><p class="f_center"><img src="https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2023%2F0525%2F35b54069j00rv7ncc000ad000hs002zp.jpg&thumbnail=660x&quality=80&type=jpg"/><br/></p><p id="1QJ5948P">而每个写入数据的key通过CRC16(key)%16384运算后得到slots的位置,然后根据slots与master的映射关系找到对应的redis节点,然后将数据写入的对应的master中。</p><p id="1QJ5948Q">如果需要在集群中读写数据,不出现上面的报错问题,那么在进入对应端口redis时在redis-cli后加上-c,即redis-cli -c -h 192.168.23.102 -p 6379。</p><p class="f_center"><img src="https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2023%2F0525%2F773b0386j00rv7ncd000ed000hs0048p.jpg&thumbnail=660x&quality=80&type=jpg"/><br/></p><p id="1QJ5948S">从图中我们可以看到,读写入数据成功了,也提示我们slot的值,以及对应master。</p><p id="1QJ5948T">注1:在同一个slot下,不能使用多键值操作,例如:mset key1 value1 key2 value2</p><p id="1QJ5948U">可以通过{}来定义组的概念,从而使key中{}内相同的键值放在同一个slot中。例如:mset key1{g1} jiashn key2{g1} queena</p><p id="1QJ5948V">注2:如果一段插槽的master都宕机了,redis服务会继续吗?</p><p id="1QJ59490">这取决于cluster-requure-full-coverage参数值:</p><p id="1QJ59491">yes:默认,整个集群都无法提供服务</p><p id="1QJ59492">no:宕机部分的插槽不能使用,其他槽位正常使用</p><p id="1QJ59493">2、SpringBoot整合redis集群</p><p id="1QJ59494">2.1 引入包</p><p id="1QJ59495">xml复制代码org.springframework.bootspring-boot-starter-data-redis</p><p id="1QJ59496">2.2 设置配置</p><p id="1QJ59497">ini复制代码# 集群节点(host:port),多个之间用逗号隔开spring.redis.cluster.nodes=192.168.23.102:6379,192.168.23.102:6380,192.168.23.102:6381,192.168.23.102:6389,192.168.23.102:6390,192.168.23.102:6391# 连接超时时间(毫秒)spring.redis.timeout=60000</p><p id="1QJ59498">2.3 使用RedisTemplate工具</p><p id="1QJ59499">kotlin复制代码@Autowiredprivate RedisTemplate redisTemplate;// 用下面5个对象来操作对应的类型this.redisTemplate.opsForValue(); //提供了操作string类型的所有方法this.redisTemplate.opsForList(); // 提供了操作list类型的所有方法this.redisTemplate.opsForSet(); //提供了操作set的所有方法this.redisTemplate.opsForHash(); //提供了操作hash表的所有方法this.redisTemplate.opsForZSet(); //提供了操作zset的所有方法</p><p id="1QJ5949A">上述就是Redis的集群实现,可能存在不详细的地方,请大家多多指出。同时也希望对大家理解redis有所帮助。谢谢</p> 

讯享网
小讯
上一篇 2025-06-01 07:13
下一篇 2025-05-17 11:09

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/177537.html