本文参考了 "Redis源码3.0分支" 和《Redis设计与实现》。 对象 Redis基于下面提到的底层数据结构创建了一个对象系统,这个系统包括 、`List Set Hash Sorted Set redisObject type encoding ptr`。 底层数据结构 SDS Simple ...
分类:
其他好文 时间:
2019-12-15 14:14:03
阅读次数:
107
redis设计与实现(第二版) 过期键删除策略 ? 我们知道数据库的过期时间都保存在过期字典中,又知道了如何根据过期时间去判断一个键是否过期,现在的问题是:如果一个键过期了,那么它什么时候会被删除呢? ? 这个问题有三种可能的答案,它们分别代表三种不同的 删除策略: 定时删除:在设置键的过期时间的同 ...
分类:
其他好文 时间:
2019-12-13 12:23:10
阅读次数:
79
跳跃表实现简单,空间复杂度和时间复杂度也较好,Redis中使用跳表而不是红黑树。 实现参考了: "跳跃列表 维基百科,自由的百科全书" 《Redis设计与实现》第五章 跳跃表 Redis源码3.0分支src/t_zset.c等文件 插入时的核心逻辑: 1. 找到插入的位置 2. 随机得到新插入节点的 ...
分类:
其他好文 时间:
2019-11-20 16:54:47
阅读次数:
71
本文从网络模型、数据结构和内存管理、持久化和多机协作四个角度对redis的设计思路进行分析。一.网络模型Redis是典型的基于Reactor的事件驱动模型,单进程单线程,高效的框架总是类似的。网络模型与spp的异步模型几乎一致。Redis流程上整体分为接受请求处理器、响应处理器和应答处理器三个同步模块,每一个请求都是要经历这三个部分。Redis集成了libevent/epoll/kqueue/se
分类:
其他好文 时间:
2019-10-29 17:02:05
阅读次数:
93
1、背景 数据初次清洗完成后,在做任务的过程中数据会不断衰减。当把初次清洗的数据后续衰减后,再次以做任务的方式清洗(做任务成功就代表数据可用)发现数据又可用了。由此推测部分数据可能有个冷却时间,当冷却时间过后又可以做任务,针对这种分析结果设计了旧数据循环清洗的功能。 2、设计方案 2.1、每10天的 ...
分类:
其他好文 时间:
2019-09-22 12:27:13
阅读次数:
83
<! done 1.简介 Redis中的每个Key Value在内存中都会被划分成DictEntry、RedisObject以及具体对象,其中DictEntry又分别包含指向Key和Value的指针(以RedisObject的形式)以及指向下一个DictEntry的指针。 ...
分类:
其他好文 时间:
2019-09-05 13:58:18
阅读次数:
68
八月计划 工作: 带领团队完成手头项目的第一代版本 对项目中的网络服务器用Twisted进行重构 学习: 《Rabbit实战指南》 快速看完 《Redis设计与实现》 十——十四章 《计算机网络自顶向下的方法》前两章 个人项目: 整理 、`tornado`相关的文档 七月总结: 工作: 大家一起完成 ...
分类:
其他好文 时间:
2019-08-06 00:32:23
阅读次数:
82
技术类 《码出高效 Java开发手册》 《代码的未来》 《Redis设计与实现》 管理类 《人人都是产品经理》 《系统之美:决策者的系统思考》 《高效能人士的七个习惯》 《见识》 《金字塔原理》 《如何高效学习》 《如何结交比你更优秀的人》 小说类 《房思琪的初恋乐园》 《杀死一只知更鸟》 历史类 ...
分类:
其他好文 时间:
2019-05-18 09:53:30
阅读次数:
139
redis设计关系数据库 [toc] 前言 最近需要一张用户信息表,因为数据量并不大,想先放在内存中,等需求变更了,再移到磁盘上,或者往mysql塞,那么问题来了,怎么用redis的数据类型设计一个关系数据库呢。 redis只有key value这种存储结构,如果想利用它做成想其他数据库一样具备 等 ...
分类:
数据库 时间:
2019-04-07 10:14:23
阅读次数:
168
最近在阅读redis设计与实现,关于redis数据结构zset的一种底层实现跳跃表一直没有太理解,所以在搜了一下资料,终于搞懂了它的设计思路,记录一下。 参考链接:https://mp.weixin.qq.com/s?src=11×tamp=1553915878&ver=1515&sign ...
分类:
其他好文 时间:
2019-03-30 13:32:39
阅读次数:
159