![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Redis源码分析
文章平均质量分 79
caishenfans
这个作者很懒,什么都没留下…
展开
-
Redis中的内存管理:关于zmalloc
Redis是一种使用C语言编写的NoSQL数据库,特点是高性能,高灵活性。但由于C语言没有自带GC,所以Redis在实际使用过程中,内存的分配和释放的合理性和高效性就非常重要。为了达到这个目的,Redis的实现中封装了C里的malloc,calloc,realloc和free函数来对自己的内存进行管理。这些实现都在zmalloc.h和zmalloc.c中。程序中维护一个use_memory,表示已原创 2015-03-24 20:37:01 · 3469 阅读 · 2 评论 -
Redis的五种对象类型及其底层实现
Redis对象类型简介Redis是一种key/value型数据库,其中,每个key和value都是使用对象表示的。比如,我们执行以下代码:redis>SET message "hello redis"其中的key是message,是一个包含了字符串"message"的对象。而value是一个包含了"hello redis"的对象。Redis共有五种对象的类型,分别是:原创 2015-04-01 16:19:51 · 45088 阅读 · 14 评论 -
Redis中的内存释放与过期键删除
简介在Redis中,内存的大小是有限的,所以为了防止内存饱和,需要实现某种键淘汰策略。主要有两种方法,一种是当Redis内存不足时所采用的内存释放策略。另一种是对过期键进行删除的策略,也可以在某种程度上释放内存。相关数据结构Redis中的数据库结构如下:/* * 数据库结构 */typedef struct redisDb { // key space,包括键原创 2015-04-06 17:31:52 · 43261 阅读 · 4 评论 -
Redis中的RDB持久化和AOF持久化(一)
概述Redis是一种内存数据库,运行时数据和状态都保存在内存中,为了避免服务器进程结束而导致的数据丢失,需要将数据保存到磁盘上。Redis提供了两种策略,分别是RDB持久化和AOF持久化。本文先介绍RDB持久化。RDB持久化手动创建RDB文件的两个命令是SAVE和BGSAVE,他们的区别是SAVE在主进程中进行文件写入,保存时会阻塞主进程,使其不能执行任何其他操作。BGSAVE是for原创 2015-04-07 19:52:54 · 1214 阅读 · 0 评论