![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Redis
笑吥语
这个作者很懒,什么都没留下…
展开
-
多机数据库的实现
复制(备份数据 负载均衡) redis通过设置 slaveof选项或运行 slaveof命令让一个服务器去复制另一个服务器。 旧版复制功能 同步(sync) 当客户向从服务器发送slaveof命令,从服务器进行同步操作,即将从服务器的数据库状态更新至主服务器当前所处的数据库状态。 从服务器对主服务器的同步通过sync命令: 从服务器向主服务器发送sync命令。 收到sync的主服务器执行bgsave命令,生成一个RDB数据快照文件。对快照之后进行的写操作保持一致性,使用一个缓冲区记录写命令。 当主服务器的原创 2020-07-06 20:51:07 · 219 阅读 · 0 评论 -
单机数据库的实现
数据库 服务器状态结构 redis服务器将所有的数据库都保存在服务器状态 redis.h/redisServer结构的db数组中,db数组的每一个项都是一个redis.h/redisDb结构,代表一个数据库。 struct redisServer { //... //一个数组,保存着服务器中的所有数据库. redisDb *db; //服务器的数据库数量,初始化服务器时,会根据该属性决定有多少数据库。 int dbnum; //... }; 客户端状态结构 客户端可以通过执行原创 2020-07-06 20:47:49 · 1125 阅读 · 0 评论 -
Redis基本对象
对象 redis的对象系统实现了基于引用计数技术的内存回收机制,当程序不再使用某个对象的时候,这个对象所占用的内存就会被自动释放。 redis通过引用计数技术实现了对象共享机制,这一机制可以在适当的条件下,通过让多个数据库键共享同一个对象来节约内存。 redis对象带有访问时间记录信息,可以计算数据库键的空转时长,在服务器启用了maxmemory功能情况下,空转时长大的键可能会被有限删除。 redisObject typedef struct redisObject { //类型:指定对象的类型 unsig原创 2020-07-06 20:44:25 · 129 阅读 · 0 评论 -
Redis数据结构
简单动态字符串(SDS) 当redis需要的是一个可以被修改的字符串值时,redis就会使用SDS来表示字符串值。 使用场景 redis数据库中,包含字符串值的键值对在底层都是由SDS实现的。 缓冲区:AOF模块中的AOF缓冲区,以及客户端状态中的输入缓冲区。 SDS定义 struct sdshdr { //记录buf 数组中已使用字节的数量 //等于SDS所保存字符串的长度 int len; //记录buf数组中未使用字节的数量 int free; //字节数组,用于保存字符串 char buf[];原创 2020-07-06 20:43:41 · 137 阅读 · 0 评论