Redis

Redis内核概念

July 9, 2012 · 1 分钟阅读

在Redis里的每一个东西都是用字符串表示的。即使像列表,集合,有序集合和图都是字符串的组合。Redis定义了一个特殊的结构,它调用一个叫"简单动态字符串"(Simple dynamic string, SDS)。这个结构有3个部分组成,分别是:

虽然你会觉得分开地存储数组长度会造成额外的开销,因为这应该可以很容易地根据buff数组来计算出它的长度,但是这样做允许字符串长度的检索在固定的时间内完成。

Redis将它的数据集保存在主内存中,在需要的时候才持久性地写到磁盘上。不像MongoDB,它不使用内存映射文件来达到那个目的。确实,Redis实现有它自己的虚拟内存子系统。当一个数值被交换到硬盘时,一个指向那个硬盘页面的指针和它的键值一起存储。关于虚拟内存的技术文档,可以在此地址阅读http://code.google.com/p/redis/wiki/VirtualMemorySpecification.

除了虚拟内存管理,Redis还包含一个事件库以帮助协调非死锁(non-locking)的socket操作。
为什么Redis不依靠操作系统的虚拟内存的交换机制呢?

Redis不依赖操作系统的内存交换,因为:

Salvatore Sanfillipo, Redis的作者,在他的博客中有谈到Redis的虚拟内存系统,“Redis Virtual Memory: the story and the code,” at http://antirez.com/post/redis-virtual-memory-story.html.

← 返回所有文章