avatar
文章
128
标签
134
分类
17
首页
归档
标签
分类
友链
咕咕
搜索
首页
归档
标签
分类
友链

咕咕

Redis主从复制演进史与奇思妙想
发表于2022-10-01|Redis演进史|Redis
Redis 的主从复制模型从 Redis2.8 版本到 Redis7.0 经历了很多大的优化与改造,从最初版本的全量数据同步,到后续的 PSYNC 的增量数据同步,无盘数据传输方案,PSYNC2 的同源数据同步方案,无盘数据加载方案到当前的最新版本中的共享复制缓冲区的方案。同时社区中也诞生了一些奇妙的解决方案,例如基于AOF文件的增量同步等。这篇文章主要借鉴于 Redis 主从复制演进历程与百度实践 ,同时按照自己的理解绘制了一些示意图。 一、简介目前 Redis 支持两种主从数据同步方式:全量同步和增量同步。 二、Redis主从复制演进史2.1、SYNC方案 版本范围:1.3.6 ~ 2.6.17 (以下分析基于 2.6.17 版本) 方案特点: 支持全量数据同步; 持久化及传输流程: 调用 fork 生成子进程,并在子进程中将内存中的数据持久化到 rdb 文件中; 获取所有状态为 WAIT_BGSAVE_END 的从库,为其注册发送 rdb 数据的事件; 发送 rdb...
RedisModule剖析 - RedisTimer
发表于2022-09-29|RedisRedisModule|Redis•RedisModule•RedisTimer
RedisTimer 是一款基于 Redis 的时间事件来实现的计时器的模块,通过时间事件机制来实现延迟/循环执行对应的脚本(函数),由于该模块执行脚本(函数)的命令为 FCALL,因此要求Redis版本最低为7.0.0,该模块也支持数据的持久化,用于保证计时器的信息不丢失。 一、简介 GitHub 地址:https://github.com/tzongw/redis-timer 二、架构设计2.1、相关命令 timer.new : 创建一个新的计时器,会在指定的时间之后执行对应的脚本(函数),会直接覆盖同名的已经存在的计时器; timer.kill : 删除之前创建的计时器,并且删除对应的计时器key; timer.info : 查看特定的计时器的信息; 2.2、数据结构// 计时器的数据结构typedef struct TimerData { RedisModuleString *key; // 对应计时器key对象 RedisModuleString *function; // 需要执行的脚本 mstime_t...
译 - Gorilla: A Fast, Scalable, In-Memory Time Series Database
发表于2022-09-24|论文数据库时序数据库|论文•Gorilla•时序数据库
《Gorilla: A Fast, Scalable, In-Memory Time Series Database》 这篇论文讲述了 Facebook 在存储时序数据模型时的一些实践,重点讲述了他们内部的一款内存型的时序数据库 Gorilla。论文中通过使用 Delta-Of-Delta 和 XOR 方式分别对时序数据的时间戳以及浮点数据进行压缩编码,极大的节省了时序数据的存储开销,这也成为了业界时序数据库主流的数据编码压缩方式。这篇论文是时序数据库领域必读的一篇文章。 摘要Large-scale internet services aim to remain highly available and responsive in the presence of unexpected failures. Providing this service often requires monitoring and analyzing tens of millions of measurements per second across a large number...
RedisModule剖析 - RedisTimeSeries
发表于2022-07-01|RedisRedisModule|Redis•RedisModule•TSDB
RedisTimeSeries 是一款基于 RedisModule 实现的时序数据库模块,提供了基础的时序操作功能,包括不限于聚合查询,范围查询,保留周期,降采样(数据压缩),插值变更,二级索引等。由于数据存储于内存中,因此提供了高性能读写访问能力,但同时也受限于内存存储,可能并不适合用在极大数据量的时序场景中。考虑到身靠着Redis生态这棵大树,也许能够和Redis生态的众多组件碰撞出有趣的火花。 一、简介 官网:https://redis.io/docs/stack/timeseries/ GitHub 地址:https://github.com/RedisTimeSeries/RedisTimeSeries 命令文档地址:https://redis.io/commands/ts.add/ 支持功能: 大容量插入,低延迟读取; 按开始时间和结束时间查询; 任何时间桶的聚合查询( Min 、 Max 、 Avg 、 Sum 、 Range 、 Count 、 First 、 Last 、 STD.P 、 STD.S 、 Var.P 、 Var.S 、 twa...
译 - Scalable Bloom Filters
发表于2022-03-01|论文杂项|论文•算法•BloomFilter
《Scalable Bloom Filters》 这篇论文讲述了一种布隆过滤器的变体实现方式,通过将预设的误判率分配给多个子布隆过滤器来约束整体的一个误判率情况,并且可以通过新增子布隆过滤器来实现对存储元素数量的调节,以满足初始容量无法准确估计的情况,论文中详细介绍了在不同的误判率变化率以及布隆过滤器容量变化率的情况下,存储空间等的使用情况。目前了解到的,RedisBloom 和 TairBloom 都参考了这篇论文实现了各自的布隆过滤器。 摘要Bloom Filters provide space-efficient storage of sets at the cost of a probability of false positives on membership queries. The size of the filter must be defined a priori based on the number of elements to store and the desired false positive probability, being...
RedisModule剖析 - RedisBloom
发表于2022-01-01|RedisRedisModule|Redis•RedisModule•BloomFilter•CuckooFilter•Count-Min Sketch•T-Digest•TopK
RedisBloom 这个 Module 内集成了很多的小功能,其中主要包括:可扩展的布隆过滤器(BloomFilter),可扩展的布谷鸟过滤器(CuckooFilter),最小计数草图(Count-Min Sketch),近似百分位(T-Digest),头部K元素(TopK)等。 一、简介RedisBloom 是一款集成了众多功能的 RedisModule 模块,其主要包含了 BloomFilter (布隆过滤器) ,CuckooFilter (布谷鸟过滤器),Count-Min Sketch (最小计数草图),T-Digest (近似百分位) 以及 TopK 功能,其中很多功能都是依据 BloomFilter类 的相关功能来进行实现的,这里将会对它们的具体实现做一下深度的剖析。 官网:https://redisbloom.io/ GitHub 地址:https://github.com/RedisBloom/RedisBloom 命令文档地址:https://redis.io/docs/stack/bloom/ 支持功能: 可扩展的 BloomFilter (布隆过滤器)...
RedisModule剖析 - RedisIMS
发表于2021-10-04|RedisRedisModule|Redis•RedisModule•RedisIMS
RedisIMS 是一款支持了 If Modified Since(IMS) 模式的数据访问方案。If-Modified-Since 经常在 HTTP 访问过程被使用,通常是为了避免不断从服务器中拉取大量的重复的数据,以节省网络流量开销。将这种方式用作 Redis 中主要应该也是为了解决 大key 的问题,当前该模块仅支持 string 类型。 一、简介 GitHub 地址:https://github.com/Clement-Jean/RedisIMS 二、架构设计2.1、相关命令 redisims.get : 如果数据在指定时间之后被修改了,则返回实际存储的值,否则直接返回空; redisims.set : 更新特定 key 的 value 信息,然后更新对应的上次更新时间元信息; redisims.exists : 从元信息中查找对应的 key 是否有上次更新的时间记录; 2.2、存储模型该模块引入了一个元信息的 key 来存储操作 用户key 的上次的操作时间,特殊 key 的格式设计为: 数据名称 : MTIME ; 数据类型 : hash ; 数据成员...
RedisModule剖析 - RedLock
发表于2021-09-01|RedisRedisModule|Redis•RedisModule•RedLock
RedLock 是一款基于 RedisModule 实现的分布式锁模块,该模块提供了写/读锁的操作接口,相比于使用 Redis 的现有命令进行支持,这个模块的命令语义更明确,且有利于进行流量区分与筛选,在使用中能够很好的区分开其他流量与锁操作相关的流量。整体的模块实现比较简单,阅读相对比较容易。 一、简介 GitHub 地址:https://github.com/wujunwei/redlock/ 二、架构设计2.1、相关命令 slock.lock : 新增加一个写锁,可以指定该锁的过期时间; slock.unlock : 解锁之前的一个写锁,只有具有相同的客户端id的链接才可以解锁; slock.rlock : 新增加一个读锁,可以指定该锁的过期时间,多个客户端同时获取写锁时会影响该锁的读的引用计数; slock.runlock : 解锁之前的一个读锁,实际是减少对应锁的引用计数,当引用计数减少为0时,删除该key; slock.info : 获取锁的信息; 2.2、数据结构// RedLock结构体typedef struct slock { ...
译 - In Search of an Understandable Consensus Algorithm (Extended Version)
发表于2021-05-01|论文共识算法Raft|论文•Raft
《In Search of an Understandable Consensus Algorithm (Extended Version)》 直译过来就是 《寻找可理解的共识算法(扩展版)》,这篇文章中详细介绍了 Raft 算法的设计初衷以及其主要的设计实现,这是一篇学习共识算法的必读的一片论文。 摘要Raft is a consensus algorithm for managing a replicated log. It produces a result equivalent to (multi-)Paxos, and it is as efficient as Paxos, but its structure is different from Paxos; this makes Raft more understandable than Paxos and also provides a better foundation for building practical systems. In order to enhance...
RedisModule剖析 - SmartCache
发表于2021-04-15|RedisRedisModule|Redis•RedisModule•SmartCache
SmartCache 是一款基于 RedisModule 实现的数据缓存模块,目前仅支持与 MySQL 进行数据缓存交互。在客户端访问数据的时候,如果该数据不存在于 Redis 中,则 Redis 会向配置的 MySQL 发起数据请求,将数据缓存到本地,并设置一定的过期时间,之后将缓存的数据发送给客户端,从而实现了 Read-Through Cache 这种缓存模式。缓存的数据经过格式化处理(格式化方式比较简单,参考下文),因此客户端读取到访问数据后还需要进行额外的转换解析。 一、简介 GitHub 地址:https://github.com/fcerbell/redismodule-smartcache/ 二、架构设计2.1、相关命令 scache.create : 创建一个新的缓存信息,通过指定的 mysql 地址信息,该缓存维护一个与mysql的连接信息; scache.list : 遍历出所有创建的缓存信息(返回缓存信息标示); scache.info : 获取指定的缓存信息(缓存信息使用链表存储,数据量较多时访问可能有性能瓶颈); scache.test :...
1234…13
avatar
bugwz
持续学习,持续进步
文章
128
标签
134
分类
17
最新文章
Ceph Crimson 设计实现深入解析
Ceph Crimson 设计实现深入解析2025-06-01
Ceph Crimson 集群搭建指南
Ceph Crimson 集群搭建指南2025-01-12
Ceph QoS 机制深入分析
Ceph QoS 机制深入分析2024-10-25
GPFS CSI 对接 K8S 指南
GPFS CSI 对接 K8S 指南2024-09-01
GPFS 集群部署与运维记录
GPFS 集群部署与运维记录2024-08-01
分类
  • Redis17
    • RedisCluster1
    • RedisModule10
    • 异地多活1
    • 演进史3
    • 特性1
    • 相关库1
  • 论文10
标签
火焰图 SSD 代码调试 Codis lsof 编程语言 哈希表 Iptables Shadowsocks SmartCache 分布式 内存 Perf RocksDB 比特币 Docker 内网穿透 Raft rsync 爬虫 nc Interrupt 工具 存储介质 Go Base编码 Linux 许可证 Latex HAProxy Python Ubuntu RPM 常用命令 GDB RedisTimer CuckooFilter Ngrok 信号量 RedisCluster
归档
  • 六月 2025 1
  • 一月 2025 1
  • 十月 2024 1
  • 九月 2024 1
  • 八月 2024 1
  • 三月 2024 1
  • 六月 2023 4
  • 四月 2023 1
网站信息
文章数目 :
128
本站总字数 :
488.3k
©2019 - 2025 By bugwz
框架 Hexo 6.3.0|主题 Butterfly 5.3.5