前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >matinal:详细聊聊Redis缓存集群的优势(一)

matinal:详细聊聊Redis缓存集群的优势(一)

作者头像
matinal
发布2023-11-25 09:43:58
发布2023-11-25 09:43:58
1970
举报
文章被收录于专栏:SAP Technical

    🚀欢迎来到本文🚀     🍉个人简介:matinal,目前职业是IT行业,一个正在慢慢前行的普通人。     🏀系列专栏:涵盖SAP各模块,Python,Excel,人工智能等     💡其他专栏:一些平时学习的技术,感兴趣的小伙伴可以看看。     🎁希望各位→点赞👍 + 收藏⭐️ + 留言📝 ​     ⛱️万物从心起,心动则万物动🏄‍♂️


        前言:Redis是一种开源的内存数据结构存储系统,它支持多种数据结构,如字符串、哈希、列表、集合、有序集合等。它可以用作数据库、缓存和消息中间件,并在性能、可扩展性和灵活性方面表现出色。

1.背景介绍

redis

        Redis是一个完全开源免费的高性能(NOSQL)的key-value数据库。它遵守BSD协议,使用ANSI C语言编写,并支持网络和持久化。Redis拥有极高的性能,每秒可以进行11万次的读取操作和8.1万次的写入操作。它支持丰富的数据类型,包括String、Hash、List、Set和Ordered Set,并且所有的操作都是原子性的。此外,Redis还提供了多种特性,如发布/订阅、通知、key过期等。Redis采用自己实现的分离器来实现高速的读写操作,效率非常高。Redis是一个简单、高效、分布式、基于内存的缓存工具,通过网络连接提供Key-Value式的缓存服务。

        Redis可以通过配置文件设置密码参数,这样客户端连接到Redis服务就需要密码验证,从而提高Redis服务的安全性。

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

为什么使用集群

大型网站应用,热点数据量往往巨大

为了提高网站响应速度,热点数据保存在内存中

单台服务主机的内存资源往往是有限制的,通过横向可伸缩扩展,使用多台主机提供服务,能够获得更好的效果

2.知识剖析

redis集群

Redis集群是一个由多个Redis服务器组成的分布式网络服务器群,集群中的各个服务器被称为节点(node),这些节点会相互连接并进行通信。分布式的Redis集群没有中心节点,所以用户不必担心某个节点会成为整个集群的性能瓶颈。

redis分布式

主从模式:Master会将数据同步到slave,而slave不会将数据同步到master。Slave启动时会连接master来同步数据。

读写分离模型:可以利用master来插入数据,slave提供检索服务。这样可以有效减少单个机器的并发访问数量

redis集群分片

1).将整个数据库分为 16384 个槽(slot)

2).计算键 key: slot_number = crc16(key) % 16384 ,其中 crc16 为 16 位的循环冗余校验函数

redis集群转向

对于一个被指派了槽的主节点来说,这个主节点只会处理属于指派给自己的槽的命令请求。如果一个节点接收到了与自己处理的槽无关的命令请求,那么节点会向客户端返回一个转向错误(redirection error),告诉客户端,哪个节点负责处理这条命令,之后客户端需要根据错误中包含的地址和端口号重新向正确的节点发送命令请求。

容错机制

Redis提供了节点之间相互发送的ping命令,用于测试每个节点的健康状态,集群中连接正常的节点接收到其他节点发送的ping命令时,会返回一个pong字符串。

投票机制

如果一个节点A给B发送ping没有得到pong返回,那么A就会通知其他节点再次给B发送ping,如果集群中超过一半的节点给B发送ping都没有得到返回,那么B就被坐实game over了,所以为了避免单点故障,一般都会为Redis的每个节点提供一个备份节点,B节点挂掉了立马启动B的备份节点服务器。

redis集群的缺点

1、集群无法正常提供服务的情况。

a:如果集群任意master挂掉,且当前master没有slave.集群进入fail状态,也可以理解成集群的slot映射[0-16383]不完整时进入fail状态. ps : redis-3.0.0.rc1加入cluster-require-full-coverage参数,默认yes.

b:如果集群超过半数以上master挂掉,无论是否有slave,集群进入fail状态.

2、Redis集群无法提供强一致性,Redis集群有可能丢失掉部分数据,尽管系统已经发送确认给客户端.(异步模式)

redis集群搭建

1.redis-trib.rb

2.ruby环境

3.配置多个redis节点

4.集群的启动(/redis-trib.rb create --replicas 1 192.168.1.1 7001)

5.客服端配置

3.编码实战

4.常见问题

1、 Sorry, can't connect to node 47.95.248.39:7001

因为绑定bind了127.0.0.1,要么改bind,要么修改启动ip为127.0.0.1

2、 the node already knows other nodes

需要清除杀掉redis实例,然后删除每个节点下的临时数据文件appendonly.aof,dump.rdb,nodes-703x.conf,然后再重新启动redis实例即可启动集群

3、 redis集群如何关闭

需要逐个关闭集群


怎么样,在了解Redis后是不是觉得这个东西很强呀?但是也好像合情合理哈,毕竟任何一门被企业主流使用的技术都是实用性比较强且受大众程序员喜爱的(毕竟能更好的摸鱼😏)


如果本文对大家有所帮助的话,还望各位能给我点赞、收藏并评论一下,感谢各位💕!!! 另如果大家有什么疑问或者建议的话,欢迎评论区留言。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-11-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.背景介绍
    • redis
    • 为什么使用集群
    • 2.知识剖析
      • redis集群
      • redis分布式
      • redis集群分片
      • redis集群转向
      • 容错机制
      • 投票机制
      • redis集群的缺点
      • redis集群搭建
    • 3.编码实战
    • 4.常见问题
      • 1、 Sorry, can't connect to node 47.95.248.39:7001
      • 2、 the node already knows other nodes
      • 3、 redis集群如何关闭
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档