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设计与实现>读书笔记 很喜欢这本书的创作过程,以开源的方式,托管到Git上进行创作: 作者通读了Redis源码,并分享了详细的带注释的源码,让学习Redis的朋友轻松不少: 阅读优秀的源码作品能快速的提升编码内功,而像Redis这样代码量不大(2万多行)却句句精致的作品,当然不能错过: 有兴趣的朋友当好好享用: 源码:https://github.com/huangz1990/annotated_redis_source 以下是这本书重点环节的读书笔记: Redis的内部字符串实现…
数据库和事件 这是<Redis设计与实现>系列的文章,系列导航:Redis设计与实现笔记 数据库 数据库的结构定义在 redis.h/redisServer 这个结构体中,这个结构体有许多的字段用以记录 Redis 数据库的状态.学习数据库的过程中会慢慢地接触这里面的各种字段. struct redisServer { //... } 不同的数据库 在上述结构中, int dbnum 保存了数据库的数量,默认为16:redisDb *db 指向了服务器中所有的数据库(如下 1 处) 而客户端…
Redis学习资料与过程记录 在实习中经常会用到很多Redis,对Redis有了一些模糊的了解,总觉得隔靴搔痒的不痛快,所以决定开始深入的了解Redis,也作为我实习期间的目标. 这篇只是为了占个位置,方便后面的笔记与章节对齐.:) 目前有的资料: 源码: https://github.com/antirez/redis <Redis设计与实现>第二版 黄建宏著…
Redis 是一个使用 C 语言编写的 NoSql 的数据库,本篇就讲解在 Redis 中数据库是如何存储的?以及和数据库有关的一些操作. Redis 中的所有数据库都保存在 redis.h/redisServer 结构中的 db 数组中,如下: struct redisServer { ...... // 数据库 redisDb *db; ...... } Redis 默认会创建 16 个数据库,每个数据库互不影响. 切换数据库 每个 Redis 客户端也都有自己的目标数据库,默认情况下,Re…
本文转自互联网 本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下Star哈 文章首发于我的个人博客: www.how2playlife.com 本文是微信公众号[Java技术江湖]的<探索Redis设计与实现>其中一篇,本文部分内容来源于网络,为了把本文主题讲得清晰透彻,也整合了很多我认为不错的技术博客内容,引用其中了一些比较好的博客文章,如有…
目录 前言 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.…
第2章 简单动态字符串(SDS) redis的字符串不是直接用c语言的字符串,而是用了一种称为简单动态字符串(SDS)的抽象类型,并将其作为默认字符串. redis中包含字符串值的键值对在底层都是由SDS实现的. 2.1 SDS定义 /* * 保存字符串对象的结构 */ struct sdshdr { // buf 中已占用空间的长度 int len; // buf 中剩余可用空间的长度 int free; // 数据空间 char buf[]; }; SDS遵循C字符串以空字符结尾的惯例,但是…