redis
文章平均质量分 92
daobuxinzi
笑着镂刻生活#水#汲取,传承
展开
-
【略有料】Redis Cluster 详解
先看一张图,大致触摸下Redis ClusterRedis Cluster要求至少需要3个master才能组成一个集群,同时每个master至少需要有一个slave节点。各个节点之间保持TCP通信。当master发生了宕机, Redis Cluster自动会将对应的slave节点提拔为master,来重新对外提供服务。Redis Cluster 功能 :,。转载 2022-09-12 03:03:30 · 418 阅读 · 0 评论 -
深入理解Redis Cluster
只有持有槽的主节点才会处理故障选举消息(FAILOVER_AUTH_REQUEST),因为每个持有槽的节点在一个配置纪元内都有唯一的一张选票,当接到第一个请求投票的从节点消息时回复FAILOVER_AUTH_ACK消息作为投票,之后相同配置纪元内其他从节点的选举消息将忽略。故障节点变为客观下线后,如果下线节点是持有槽的主节点则需要在它的从节点中选出一个替换它,从而保证集群的高可用。下线主节点的所有从节点承担故障恢复的义务,当从节点通过内部定时任务发现自身复制的主节点进入客观下线时,将会触发故障切换流程。转载 2022-09-11 21:24:00 · 292 阅读 · 0 评论 -
【有料】深入学习Redis之Redis Cluster
并且该命令会自己创建主节点和分配从节点,其中前3个是主节点,后3个是从节点,后3个从节点分别复制前3个主节点。当我们现在有三个节点,此时想增加6385节点,也就是每个节点把一部分槽和数据迁移到新的节点6385,每个节点负责的槽和数据相比之前变少了从而达到了集群扩容的目的。首次启动的节点和被分配槽的节点都是主节点,从节点负责复制主节点槽信息和相关的数据。比如:1-100个数字,要保存到3个节点上,每个节点平均存储,1-33存储在第1个节点,34-66存储到2节点,剩余存储到3节点。转载 2022-09-11 19:18:16 · 248 阅读 · 0 评论 -
【有料】如何从0到1构建一个稳定、高性能的Redis集群?(附16张图解)
好了,我们来总结一下,我们是如何一步步构建一个稳定、高性能的 Redis 集群的。首先,在使用最简单的单机版 Redis 时,我们发现当 Redis 故障宕机后,数据无法恢复的问题,因此我们想到了「数据持久化」,把内存中的数据也持久化到磁盘上一份,这样 Redis 重启后就可以从磁盘上快速恢复数据。在进行数据持久化时,我们又面临如何更高效地将数据持久化到磁盘的问题。之后我们发现 Redis 提供了 RDB 和 AOF 两种方案,分别对应了数据快照和实时的命令记录。转载 2022-09-09 16:28:38 · 183 阅读 · 0 评论 -
【有料】Redis(2)——跳跃表
跳跃表(skiplist)是一种随机化的数据结构,由在论文中提出,是一种可以于平衡树媲美的层次化链表结构——查找、删除、添加等操作都可以在对数期望时间下完成,以下是一个典型的跳跃表例子:我们在上一篇中提到了 Redis 的五种基本结构中,有一个叫做有序列表 zset的数据结构,它类似于 Java 中的SortedSet和HashMap的结合体,一方面它是一个 set 保证了内部 value 的唯一性,另一方面又可以给每个 value 赋予一个排序的权重值 score,来达到排序的目的。转载 2022-09-04 15:04:50 · 1166 阅读 · 1 评论 -
【有料】深入理解Redis跳跃表的基本实现和特性
在这里我们先回忆一下普通链表的时间复杂度,可以看到除了 操作是 O(n)O(n)O(n) 的,其他操作都是 O(1)O(1)O(1) 的时间复杂度。也就是说你需要随机访问里面的任何一个元素的话,它的时间复杂度平均值是 O(n)O(n)O(n) 的,这也就是链表它的问题所在。从这里可以看到并没有所谓完美的一种数据结构,如果完美那就不需要 Array 或者 LInked List 这两个数据结构并存了,就直接使用最牛逼的数据结构即可。所以相当于各有优劣,看你的使用场景在什么地方,作为完整性比较,我这里把两种时转载 2022-09-04 14:55:01 · 171 阅读 · 0 评论 -
【有料】分布式锁中的王者方案 - Redisson
下面的代码是单节点 Redis 的配置。/*** 对 Redisson 的使用都是通过 RedissonClient 对象* @return*/@Bean(destroyMethod="shutdown") // 服务停止后调用 shutdown 方法。// 1.创建配置// 集群模式// 2.根据 Config 创建出 RedissonClient 示例。}}复制代码。...转载 2022-08-11 11:39:38 · 201 阅读 · 0 评论 -
【有料】分布式锁的实现之 redis 篇
Redis 以其高性能著称,但使用其实现分布式锁来解决并发仍存在一些困难。Redis 分布式锁只能作为一种缓解并发的手段,如果要完全解决并发问题,仍需要数据库的防并发手段。参考:1.“Redis 分布式锁的正确实现方式( Java 版 )”Redis 分布式锁的正确实现方式( Java 版 )2.“漫画:什么是分布式锁?”漫画:什么是分布式锁?3.“搞懂“分布式锁”,看这篇文章就对了”搞懂“分布式锁”,看这篇文章就对了4.《Redis 深度历险:核心原理与应用实践》...转载 2022-08-11 11:26:10 · 349 阅读 · 0 评论 -
【有料】Redis学习笔记 - Bitmaps(位图)
Bitmaps并不是实际的数据类型,而是定义在String类型上的一个面向字节操作的集合。因为字符串是二进制安全的块,他们的最大长度是512M,最适合设置成2^32个不同字节。Bitmaps的最大优势之一在存储信息时极其节约空间。例如,在一个以增量用户ID来标识不同用户的系统中,记录用户的四十亿的一个单独bit信息(例如,要知道用户是否想要接收最新的来信)仅仅使用512M内存。...转载 2022-07-28 20:51:34 · 501 阅读 · 0 评论 -
redis分片sharding实现原理
其理论是,客户端随意与集群中的任何节点通信,服务器端负责计算某个key在哪个机器上,当客户端访问某台机器时,服务器计算对应的key应该存储在哪个机器,然后把结果返回给客户端,客户端再去对应的节点操作key,是一个重定向的过程,此方式是redis3.0正在实现,目前处于beta版本,Redis3.0的集群同时支持HA功能,某个master节点挂了后,其slave会自动接管。,此方法的好处是降低了服务器集群的复杂度,客户端实现数据分片时,服务器是独立的,服务器之前没有任何关联。有没有其它手段改善这种情况?...转载 2022-07-26 17:02:29 · 346 阅读 · 0 评论 -
【有料】厉害了,原来 Redisson 这么好用
本文由 yanglbme 原创,首发于公众号“Doocs开源社区”,欢迎转载。Redis 是最流行的 NoSQL 数据库解决方案之一,而 Java 是世界上最流行(注意,我没有说“最好”)的编程语言之一。虽然两者看起来很自然地在一起“工作”,但是要知道,Redis 其实并没有对 Java 提供原生支持。相反,作为 Java 开发人员,我们若想在程序中集成 Redis,必须使用 Redis 的第三方库。而 Redisson 就是用于在 Java 程序中操作 Redis 的库,它使得我们可以在程序中.转载 2022-05-09 23:05:39 · 368 阅读 · 0 评论 -
【有料】Redis中的LRU淘汰策略分析
Redis作为缓存使用时,一些场景下要考虑内存的空间消耗问题。Redis会删除过期键以释放空间,过期键的删除策略有两种:惰性删除:每次从键空间中获取键时,都检查取得的键是否过期,如果过期的话,就删除该键;如果没有过期,就返回该键。 定期删除:每隔一段时间,程序就对数据库进行一次检查,删除里面的过期键。另外,Redis也可以开启LRU功能来自动淘汰一些键值对。LRU算法当需要从缓存中淘汰数据时,我们希望能淘汰那些将来不可能再被使用的数据,保留那些将来还会频繁访问的数据,但最大的问题是缓存并不能转载 2022-04-28 11:40:05 · 353 阅读 · 0 评论 -
Redis | 管道 —— PipeLine
在我们使用 Redis 的时候,通常是使用一条一条的命令来进行操作,比如我们可以执行一个 “set key1 value1” 这样的操作,然后再执行一个 "set key2 value" 这样的操作。Redis 是基于客户端和服务端的模式,当客户端和服务端进行通信的时候,通常会使用 Socket 来进行网络的通信。当我们执行 "set key value" 时,客户端会对服务器发送一个数据包,当我们再次执行 "set key2 value2" 时,客户端又会对服务器发送一个数据包。这样,看起来没有什么太多的转载 2022-04-24 23:19:48 · 720 阅读 · 0 评论