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

咕咕

Redis异地多活方案杂谈
发表于2022-12-31|Redis异地多活|Redis•异地多活
Redis 的异地多活是一种跨地域容灾、并提供低延迟访问的部署方案。业界提供了很多的构建思路,这里将对比一下这里方案,并详细介绍一下业界的设计与实现。 一、简介二、思考2.1、Redis异地多活的定位在使用 Redis 的异地多活部署方案之前,为了提供 Redis 集群的高可用,我们也会提供跨地域主从的部署方式,通过这种方式我们也能实现地域级别的容灾能力。考虑到业务在使用 Redis 前的关注点一般是:性能、延迟、可用性以及数据一致性,我们将通过这四个关键点来对比一下这两种方案的不同: 性能(高性能, QPS ): 跨地域主从:跨地域写性能较差,本地域读性能较好; 异地多活:本地域读写性能较好; 延迟(低延迟, Avg , P99 等): 跨地域主从:跨地域写延迟交高,本地域读延迟较低; 异地多活:本地域读写延迟较低; 可用性(高可用): 跨地域主从:集群间的容灾切换,存在主从切换的瞬时访问问题,满足高可用需求; 异地多活:集群内的主从故障切换,满足高可用需求; 数据一致性: 跨地域主从:提供 Redis...
Redis扩缩容演进史与奇思妙想
发表于2022-12-13|Redis演进史|Redis
Redis 的扩缩容方案在 RedisCluster 中发生了很多的改造与优化,其中主要包括对于 Slot 和 Keys 映射关系的优化,从最初的跳表,到基数树,再到最新的柔性数组的相关优化。同时 Redis 的非社区Cluster 模式下的扩缩容在业界在诞生了很多有意思的设计思路,比如 Codis 提供的同步/异步迁移方案,选择性复制以及旁路扩缩容的迁移方案等。这篇文章将简略的描述一下当前业界实现的 Redis 的扩缩容方案。 一、简介这里主要描述的是 Redis 的横向扩缩容。 二、Redis 扩缩容演进史2.1、映射关系存储结构演进由于我们需要能够高效的依据 Slot 来找到对应的 Keys 信息,从而实现数据的迁移,因此我们需要记录 Slot 和 Keys 的映射关系,Redis 也在不断的优化这种存储结构,从而在实现高效遍历的时候又能够节省存储所带来的内存开销。 2.1.1、SkipList 存储结构 版本范围:3.0.0 ~ 3.2.13(以下分析基于 3.2.13 版本) 设计特点: 使用一个全局结构体变量(...
Redis持久化演进史与奇思妙想
发表于2022-12-04|Redis演进史|Redis
目前 Redis 主要支持两种持久化的方式:RDB 和 AOF 。这两者在 Redis 的演进过程中也发生了很多有意思的变化。RDB 的数据格式也已经进行了十次版本迭代,AOF 从最初的 Rewrite 到 Redis 7.0.0 的 Multi-Part-AOF 也发生了很多的变化,这里将对每个版本进行详细的剖析,学习 Redis 的持久化演进历史。这篇文章主要借鉴于 Redis 持久化机制演进与百度智能云的实践 ,同时按照自己的理解绘制了一些示意图。 一、简介Redis 支持两种持久化的方式:RDB 和 AOF 。 二、Redis RDB 持久化演进史2.1、持久化的数据版本演进2.1.1、版本一 版本范围:2.0.0 ~ 2.2.15 (以下分析基于 2.2.15 版本) RDB版本号:0001 版本特点: 首次支持对五种数据类型数据的持久化; 持久化数据内容: 标记头尾信息; 多 DB 信息( REDIS_SELECTDB ); 过期时间属性(单位秒, REDIS_EXPIRETIME...
译 - Bitcoin: A Peer-to-Peer Electronic Cash System
发表于2022-11-16|论文区块链比特币|比特币•区块链•论文
《Bitcoin: A Peer-to-Peer Electronic Cash System》 翻译过来是《 比特币:一种点对点的电子现金系统》 ,这篇文章是比特币的发明人中本聪于 2008 年发表的比特币白皮书。这篇文章介绍了比特币的设计背景,讲述了比特币的工作原理,是加密货币,区块链领域必读的一篇文章,其中讲述了很多巧妙的构思。作者翻译水平有限,翻译的语句可能会有一些出入,建议有能力的读者还是去阅读一下原文。 0、摘要A purely peer-to-peer version of electronic cash would allow online payments to be sent directly from one party to another without going through a financial institution. Digital signatures provide part of the solution, but the main benefits are lost if a trusted third party is...
Redis相关库学习 - LibMR
发表于2022-10-22|Redis相关库|Redis•RedisLibrary•LibMR
LibMR 是一款适用于 Redis 集群的 Map Reduce (分发Redis命令并获取结果)的依赖库。它基于 libevent 的事件机制,通过使用多个线程池来分发异步任务,目前已经被 RedisTimeSeries 等模块使用。 一、简介 GitHub 地址:https://github.com/RedisGears/LibMR 二、架构设计2.1、相关命令由于该依赖库在编译时可以设置自定义的 modulename ,因此可以避免在不同模块中使用的冲突。 modulename.INNERCOMMUNICATION : 从其他分片中获取消息; modulename.HELLO : 获取当前实例的集群id,仅集群模式下才可以调用; modulename.REFRESHCLUSTER : 更新当前集群的拓扑信息 modulename.CLUSTERSET : 强制设置集群的拓扑信息,该信息只会更改该依赖库中记录的拓扑信息,并不会影响实际的 Redis 集群; modulename.CLUSTERSETFROMSHARD : 与 *.CLUSTERSET...
RedisModule剖析 - RedisProtobuf
发表于2022-10-07|RedisRedisModule|Redis•RedisModule•RedisProtobuf
RedisProtobuf 是一款支持 Protobuf (目前仅支持Version 3) 的 Redis 模块,从而支持了较高级的嵌套数据结构,其设计灵感来自于 RedisJSON。 一、简介 GitHub 地址:https://github.com/sewenew/redis-protobuf 二、架构设计2.1、依赖库 Protobuf : 仅支持 version 3 ; 2.2、相关命令 pb.type : 获取指定 key 的消息类型; pb.set : 设置指定 key 的消息类型的内容信息,支持新增与变更; pb.get : 获取指定 key 的消息内容,支持 binary 和 json 的返回格式; pb.clear : 清除指定 key 的消息内容,支持指定路径; pb.len : 获取指定 key 的消息长度,支持指定路径; pb.append : 给指定 key 的特定路径中追加数据,目标路径的类型可以为 string/array ; pb.del : 删除指定 key ,或者删除指定 key 中 array/map 中的...
RedisModule剖析 - RedisRope
发表于2022-10-04|RedisRedisModule|Redis•RedisModule•RedisRope
RedisRope 是一款可用于操作大型字符串数据(插入/拼接等变动)的 Redis 模块。它通过将一个独立的字符串拆分成多个Chunk中进行存储,从而实现了针对于大型字符串的多样写操作(插入/拼接等)的高效率,并通过引入 伸展树(Splay Tree) 的数据结构来保证数据读取的高效性。 一、简介 GitHub 地址:https://github.com/ekzhang/redis-rope 二、架构设计2.1、相关命令 rope.len : 获取特定 key 的长度; rope.get : 获取特定 key 指定索引处的字符; rope.getrange : 获取特定 key 指定范围内的字符串; rope.append : 给特定 key 追加字符串; rope.insert : 在特定 key 的指定索引处插入字符串; rope.delrange : 删除特定 key 指定范围内的字符串; rope.splice : 从源字符串中选出部分字符串并将其拼接到目标字符串中(高级操作); 2.2、数据结构// 自定义的 Module 数据类型pub...
RedisModule剖析 - RedisIntervalSet
发表于2022-10-02|RedisRedisModule|Redis•RedisModule•RedisIntervalSet
RedisIntervalSet 是一款用于记录不同间隔集合(IntervalSet)的 Redis 模块,按照官方文档给出的示例,我们可以记录从学前班、中学到大学的不同阶段的信息,每个阶段都有一个最小和最大值的分数(这里含义为年龄),最后可以通过查询不同的分数(年龄)来查询对应的学习阶段,通过这种方式能够快速的得到对应数据值所在的区间信息,这种设计思路有些类似于 ZSet。 一、简介 GitHub 地址:https://github.com/danitseitlin/redis-interval-sets 二、架构设计 该模块使用 Rust 进行编写,依赖于 redismodule-rs 版本 0.26.0; 2.1、相关命令 iset.add : 在特定的 key 中增加一个间隔集合(IntervalSet),必须带有最小及最大分数,可同时指定多个; iset.del : 删除特定 key 或者删除其中的特定的间隔集合; iset.get : 获取特定 key 中的所有间隔集合或者指定的间隔集合; iset.score : 获取指定 key...
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...
123…13
avatar
bugwz
持续学习,持续进步
文章
126
标签
134
分类
17
最新文章
Ceph Crimson 设计实现深入解析
Ceph Crimson 设计实现深入解析2025-06-01
Ceph Crimson 集群搭建指南
Ceph Crimson 集群搭建指南2025-01-12
Ceph QoS 机制深入分析
Ceph QoS 机制深入分析2024-10-25
GPFS 集群部署与运维记录
GPFS 集群部署与运维记录2024-08-01
Ceph CRUSH 设计实现剖析
Ceph CRUSH 设计实现剖析2023-06-30
分类
  • Redis17
    • RedisCluster1
    • RedisModule10
    • 异地多活1
    • 演进史3
    • 特性1
    • 相关库1
  • 论文10
标签
抓包 性能分析 论文 Notes SSD 区块链 Redis Latex RedisTimer OpenVPN GitHub Pages Tools MacOS 算法 SmartCache C/C++ 哈希表 Shadowsocks RateLimit 树 HAProxy Go Docker 爬虫 nf_conntrack 刷机 Windows RedisIntervalSet 内网穿透 分布式 工具 GDB SS-Panel RedLock 代理服务器 TopK Ngrok 常用命令 负载均衡 RPM
归档
  • 六月 2025 1
  • 一月 2025 1
  • 十月 2024 1
  • 八月 2024 1
  • 六月 2023 4
  • 四月 2023 1
  • 一月 2023 1
  • 十二月 2022 3
网站信息
文章数目 :
126
本站总字数 :
469k
本站访客数 :
本站总浏览量 :
©2019 - 2025 By bugwz
框架 Hexo 6.3.0|主题 Butterfly 5.3.5