redis3.0.7源码阅读(十)redis数据库
来源:互联网 发布:数控机床与编程教程 编辑:程序博客网 时间:2024/05/22 05:03
版本:3.0.7
1.源文件
redis.h
db.c
2.数据结构
/* * 客户端 */typedef struct redisClient { ... // 当时连接使用的数据库 redisDb *db; ...} redisClient;/* * 服务器 */struct redisServer { ... // db数组 redisDb *db; // db数量 int dbnum; /* Total number of configured DBs */ ...};struct evictionPoolEntry { unsigned long long idle; /* Object idle time. */ sds key; /* Key name. */};/* * redis数据库 *//* Redis database representation. There are multiple databases identified * by integers from 0 (the default database) up to the max configured * database. The database number is the 'id' field in the structure. */typedef struct redisDb { // 数据库键空间,保存着数据库中的所有键值对 dict *dict; /* The keyspace for this DB */ // 键的过期时间,字典的键为键,字典的值为过期的时间戳 dict *expires; /* Timeout of keys with a timeout set */ // 正处于阻塞状态的键 dict *blocking_keys; /* Keys with clients waiting for data (BLPOP) */ // 可以解除阻塞的键 dict *ready_keys; /* Blocked keys that received a PUSH */ // 正在被 WATCH 命令监视的键 dict *watched_keys; /* WATCHED keys for MULTI/EXEC CAS */ // LRU淘汰候选池 struct evictionPoolEntry *eviction_pool; /* Eviction pool of keys */ // 数据库号码 int id; /* Database ID */ // 数据库的键的平均 TTL ,统计信息 long long avg_ttl; /* Average TTL, just for stats */} redisDb;
3.内存分布
4.一些特性
4.1 默认情况下,redis客户端连接的是0号数据库,可以通过命令切换,redisClient会记录当前客户端的目标数据库
4.2 redis使用一个独立的字典expires保存key的过期时间,使用三种过期删除策略,定时删除(定时器),惰性删除(访问时删除),定期删除(比如随机检查算法)
4.3 从服务即使发现键过期了,也不会主动删除,而是等待主节点通知
4.4 新生成的rdb和aof文件都不会包含过期的key,当一个过期键被删除时,会在aof文件追加DEL
原文出自:http://blog.csdn.net/daiyudong2020/article/details/54236705
0 0
- redis3.0.7源码阅读(十)redis数据库
- redis3.0.7源码阅读(十一)redis数据库rdb
- redis3.0.7源码阅读(四)redis双端链表
- redis3.0.7源码阅读(五)redis字典
- redis3.0.7源码阅读(九)redis对象
- redis3.0.7源码阅读(三)redis动态字符串
- redis3.0.7源码阅读(六)redis整数集合
- redis3.0.7源码阅读(七)redis跳跃表
- redis3.0.7源码阅读(八)redis压缩表
- redis3.0.7源码阅读(十二)redis事件处理
- redis3.0.7源码阅读(一)源码文件
- redis3.0.7源码阅读(十三)main函数
- redis3.0.7源码阅读(二)源码文件归类
- 【Redis】redis3.0源码目录
- Redis源码阅读笔记--数据库redisDb
- Redis源码阅读
- 如何阅读 Redis 源码?
- redis源码阅读笔记
- Swift-析构方法与内存管理(初级)
- CentOS yum源配置小技巧
- DP (4) -- Largest Divisible Subset, Coin Change, Unique Substrings in Wraparound String
- JAVA基础学习
- BZOJ4676 Xor-Mul棋盘/BZOJ3254 Xor-Mul Chessboard
- redis3.0.7源码阅读(十)redis数据库
- Java学习篇之IO流(字节流)
- 远程实习第一周学习总结
- 同时安装python2.x和python3.x用pip
- Oracle优化07-分析及动态采样-DBMS_STATS 包
- 关闭csrf办法
- python数据结构学习笔记-2017-01-08-01-N皇后问题、迷宫问题和跳马问题的递归解决
- OpenGL 入门13
- 翻译:结合卫星图像和机器学习预测贫穷