![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
分布式存储
文章平均质量分 66
我们一直在路上
这个作者很懒,什么都没留下…
展开
-
简单解决redis cluster中从节点读取不了数据(error) MOVED
redis cluster集群中slave节点能成功复制master节点数据槽数据,但是无法get数据,显示只能到对应的master节点读取: (error) MOVED 742 36.112.201.233:6110 原因:Redis Cluster集群中的从节点,官方默认设置的是不分担读请求的、只作备份和故障转移用,当有请求读向从节点时,会被重定向对应的主节点来处理 解决办法:在get数据之前先使用命令readonly,这个readonly告诉 Redis Cluster 从节点客户端愿意读取可能过转载 2022-07-02 21:28:19 · 2516 阅读 · 0 评论 -
redis 集群模式原理
主从切换的过程中会丢失数据,因为只有一个master,只能单点写,没有解决水平扩容的问题。而且每个节点都保存了所有数据,一个是内存的占用率较高,另外就是如果进行数据恢复时,非常慢。而且数据量过大对数据IO操作的性能也会有影响。所以我们同样也有对Redis数据分片的需求,所谓分片就是把一份大数据拆分成多份小数据,在3.0之前,我们只能通过构建多个redis主从节点集群,把不同业务数据拆分到不冉的集群中,这种方式在业务层需要有大量的代码来完成数据分片、路由等工作,导致维护成本高、增加、移除节点比较繁琐。Redi原创 2022-07-02 21:26:41 · 2327 阅读 · 2 评论 -
redis集群中hash tag 使用
hash tag用于redis集群中。其实现方式为在key中加个{},例如test{1}。使用hash tag后客户端在计算key的crc16时,只计算{}中数据。如果没使用hash tag,客户端会对整个key进行crc16计算。下面演示下hash tag使用。将用户id为1的相关信息存储在6380实例127.0.0.1:6380> set user:info{1} 基本信息OK127.0.0.1:6380> set user:order{1} 2OK127.0.0.1:6380> ke转载 2022-07-02 16:57:19 · 1905 阅读 · 0 评论 -
Redis集群的重定向
本文主要来介绍redis集群的重定向问题。一、重定向产生的原因对于Redis的集群来说,因为集群节点不能代理(proxy)命令请求, 所以客户端应该在节点返回 或者 转向(redirection)错误时, 自行将命令请求转发至其他节点。使用时候的常用优化方法: 客户端可以将键和节点之间的映射信息保存起来, 可以有效地减少可能出现的转向次数, 籍此提升命令执行的效率。当节点需要让一个客户端长期地(permanently)将针对某个槽的命令请求发送至另一个节点时, 节点向客户端返回 转向。这个情况一般是,转载 2022-07-02 16:46:21 · 1235 阅读 · 0 评论 -
Redis集群(主从)脑裂及解决方案
redis 的集群脑裂是指因为网络问题,导致 redis master 节点跟 redis slave 节点和 sentinel 集群处于不同的网络分区,此时因为 sentinel 集群无法感知到 master 的存在,所以将 slave 节点提升为master 节点。此时存在两个不同的 master 节点,就像一个大脑分裂成了两个。 集群脑裂问题中,如果客户端还在基于原来的 master 节点继续写入数据,那么新的 master 节点将无法同步这些数据,当网络问题解决之后,sentinel 集群将原先的m转载 2022-07-02 15:14:51 · 2348 阅读 · 0 评论 -
一次生产环境redis内存占用居高不下问题排查
服务器在一次常规发布上线后,发现缓存过期速度远远小于配置的10min过期。现象:刚刚登录进系统后台,过了1分钟就发现缓存过期,登录不上后台,进到阿里云的redis服务器,发现登录的key没有了,期间还遇到各种诡异的问题,莫名其妙登录进系统但过一会儿掉线,后来进入阿里云后台发现redis内存占用高达100%。我就猜到可能是有线程在大量的写缓存,然后把redis空间给吃满了,由于redis服务器配置的是volatile-lru策略:当内存要满的时候,又有大量缓存写入的时候,就删除设置了过期时间的key中的最近最转载 2022-07-02 14:26:49 · 837 阅读 · 0 评论 -
redis主从中的Master自动选举之Sentinel哨兵机制
顾名思义,哨兵的作用就是监控Redis系统的运行状况,它的功能包括两个哨兵是一个独立的进程,使用哨兵后的架构如图所示,同时为了保证哨兵的高可用,我们会对Sentinel做集群部署,因此Sentinel不仅仅监控Redis所有的主从节点,Sentinel也会实现相互监控。在前面主从复制的基础上,增加三个sentinel节点,来实现对redis中master选举的功能。192.168.221.128(sentinel)192.168.221.129(sentinel)192.168.221.130(se原创 2022-07-02 14:24:36 · 3277 阅读 · 0 评论 -
redis主从模式
Redis作为一个高性能Nosq中间件,会有很多热点数据存放在Redis中,一旦Redis-server出现故障,会导致所有相关业务访问都出现问题。另外,即便是设计了数据库兜底的方案,大量请求对数据库的访问也很容易导致数据库出现瓶颈,造成更大的灾难。除此之外,Redis的集群部署还可以带来额外的收益:需要注意,Redis的主从复制,是直接在从节点发起就行,主节点不需要做任何事情通过启动命令来配置,也就是启动slave节点时执行如下命令启动redis-server之后,直接在客户端窗口执行下面命原创 2022-07-02 12:40:06 · 4503 阅读 · 0 评论 -
redis的持久化机制原理
Redis支持两种方式的持久化,一种是RDB方式、另一种是AOF(append-only-file)方式,两种持久化方式可以单独使用其中一种,也可以将这两种方式结合使用。RDB:根据指定的规则“定时”将内存中的数据存储在硬盘上,AOF:每次执行命令后将命令本身记录下来。RDB的持久化方式是通过快照(snapshotting)完成的,它是Redis默认的持久化方式,配置如下。Redis允许用户自定义快照条件,当符合快照条件时,Redis会自动执行快照操作。快照的条件可以由用户在配置文件中配置。配置格式原创 2022-06-30 22:50:24 · 1039 阅读 · 0 评论 -
redis淘汰策略
redis 默认的最大的内存设置为0,相当于基于物理机的最大值主要是4种算法,针对不同的key,形成的策略。算法:key :LRU是Least Recently Used的缩写,也就是表示最近很少使用,也可以理解成最久没有使用。也就是说当内存不够的时候,每次添加一条数据,都需要抛弃一条最久时间没有使用的旧数据。标准的LRU算法为了降低查找和删除元素的时间复杂度,一般采用Hash表和双向链表结合的数据结构,hash表可以赋予链表快速查找到某个key是否存在链表中,同时可以快速删除、添加节点,如图所示。原创 2022-06-24 16:18:36 · 22738 阅读 · 5 评论 -
redis数据结构分析
string 类型的数据结构 是SDS,是动态长度根据你存储的字符串长度,来决定使用那个sds类型存储结构quickli 内部默认定义的单个 ziplist 的大小为 8k 字节. 超过这个大小,就会重新分配一个 ziplist 了。这个长度可以由参数list-max-ziplist-size来控制。用户标签节点的层数是随机的......原创 2022-06-20 23:51:08 · 126 阅读 · 0 评论