Redis 设计与实现 (二)--数据库】的更多相关文章

1. 服务器中数据库结构 Redis 服务器将所有数据库都保存在服务器状态 redisServer 结构的 db 数组中,由 redisDb 结构代表一个数据库 struct redisServer { // ... // 一个数组,保存着服务器中的所有数据库 redisDb *db; } Redis 服务器默认会创建16个数据库,默认情况下,Redis客户端的目标数据库是0号数据库. 2. 切换数据库 SELECT 命令用来切换数据库 redis> SELECT 2 OK redis[2]>…
数据库 服务器中的数据库 redisClient切换数据库 redis客户端默认目标数据库为0号数据库,可以通过SELECT命令来切换目标数据库. 客户端状态redisClient结构的db属性记录了客户端当前的目标数据库,这个属性是指向redisdb结构的指针. typedef struct redisClient{ //记录客户端当前正在使用的数据库 redisDb *db; } redisClient; 数据库键空间 Redis是一个键值对数据库服务器,服务器中的每个数据库都由一个redi…
本文的分析都是基于 Redis 6.0 版本源码 redis 6.0 源码:https://github.com/redis/redis/tree/6.0 服务器中的数据库 Redis 服务器将绝大部分的信息都保存在 server.h/redisServer.redis 的数据是保存在 redisServer 中的 redisDb 结构中. struct redisServer { // ... redisDb *db; // 数据库列表 // ... int dbnum; // 数据库数量 /…
Redis实现为双链表结构, 列表键的底层实现之一就是链表,  发布与订阅, 慢查询, 监视器等功能都用到了链表. Redis本身也使用链表维持多个客户端. 节点定义, 位于 adlist.h/listNode typedef struct listNode { // 前置节点 struct listNode *prev; // 后置节点 struct listNode *next; // 节点的值 void *value; } listNode; 链表结构定义, 位于adlist.h/list…
数据库和事件 这是<Redis设计与实现>系列的文章,系列导航:Redis设计与实现笔记 数据库 数据库的结构定义在 redis.h/redisServer 这个结构体中,这个结构体有许多的字段用以记录 Redis 数据库的状态.学习数据库的过程中会慢慢地接触这里面的各种字段. struct redisServer { //... } 不同的数据库 在上述结构中, int dbnum 保存了数据库的数量,默认为16:redisDb *db 指向了服务器中所有的数据库(如下 1 处) 而客户端…
本文转自互联网 本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下Star哈 文章首发于我的个人博客: www.how2playlife.com 本文是微信公众号[Java技术江湖]的<探索Redis设计与实现>其中一篇,本文部分内容来源于网络,为了把本文主题讲得清晰透彻,也整合了很多我认为不错的技术博客内容,引用其中了一些比较好的博客文章,如有…
面试问题记录 二 (数据库.Linux.Redis) 前言 接着上次的面试问题记录,在最后还有几道问的数据结构方面的知识点要补充 还是那句话:如果文中解释有明显错误,劳烦请及时指正我,在这不胜感激!!! 一.MySQL 1.说说MySQL与MongoDB的区别? 答:首先就是MySQL是关系型数据库,由二维表及其自身之间的关系组成的数据组织,这样易于维护,而且适用于SQL复杂的查询.支持事务等:MongoDB的话是以数据结构化的方式存储,而且和MySQL不同,它是只能存储在随机存储器上的,底层数…
单机数据库实现 九.数据库 1.服务器中的数据库 一个redis服务器保存多个数据库. struct redisServer { //一个数组,多个数据库 redisDb *db; } 当执行select 1,就是切换数据库到db[1],具体就是会修改redisClient.db指针到redisServer.db[1] 2.数据库键空间 typedef struct redisDb{ dict *dict;//数据库键空间 dict *expires;//过期时间 } 这里的dict就是上面说的…
目录 前言 1. Redis中的数据库 2. 数据库的键空间 3. 键的生成时间与过期时间 4. Redis中的过期键删除策略 5. AOF.RDB和复制功能对过期键的处理 5.1 生成 RDB 文件 5.2 载入 RDB 文件 5.3 AOF 文件写入 5.4 AOF 重写 5.5 复制 6. 数据库通知 最后 前言 参考资料:<Redis设计与实现 第二版>: 第二部分为单机数据库的实现,主要由以下模块组成:数据库.持久化.事件.客户端与服务器: 本篇将介绍 Redis 中的数据库: 1.…
Redis设计与实现(一~五整合版) by @飘过的小牛 一 前言 项目中用到了redis,但用到的都是最最基本的功能,比如简单的slave机制,数据结构只使用了字符串.但是一直听说redis是一个很牛的开源项目,很多公司都在用.于是我就比较奇怪,这玩意不就和 memcache 差不多吗?仅仅是因为memcache是内存级别的,没有持久化功能.而redis支持持久化?难道这就是它的必杀技? 带着这个疑问,我在网上搜了一圈.发现有个叫做huangz的程序员针对redis写了一本书叫做<redis设…