From 4efa1515c8f1cf20ead8b2f2fa4202ef251e3aa4 Mon Sep 17 00:00:00 2001 From: hoterran Date: Sat, 4 Aug 2012 21:31:15 +0800 Subject: [PATCH] intro revise. --- convention.md | 7 +++++-- redis-intro.md | 40 +++++++++++++++++++++++++++++++++++++--- 2 files changed, 42 insertions(+), 5 deletions(-) diff --git a/convention.md b/convention.md index a10fe4a..79cb15c 100644 --- a/convention.md +++ b/convention.md @@ -4,7 +4,7 @@ ## Redis 的各部分命令 * string 字符串 -* hash 哈希表 +* hash 哈希 * list 列表 * set 集合 * sorted set 有序集合 @@ -13,6 +13,8 @@ * scripting 脚本 * connection 连接 * server 服务器 +* save 快照 +* aof aof ## 相关术语 @@ -34,10 +36,11 @@ * sds(simple dynamic string) 动态字符串 * dict 字典 -* hash 哈希表 +* hash table 哈希表 * double-linked list 双链表 * skip list 跳跃表 * sentinel sentinel * intset intset * ziplist ziplist * zipmap zipmap + diff --git a/redis-intro.md b/redis-intro.md index 9025092..d10810c 100644 --- a/redis-intro.md +++ b/redis-intro.md @@ -1,7 +1,41 @@ #简介 -redis是一个开源的key-value的内存数据库,与它类似的key-value数据库有memcached,Tokyo Cabinet等。redis以支持丰富的数据结构而著称,还支持主从复制、持久化等高可用特性,可以和程序无缝的结合,而无需像使用关系性数据库一样需要ORM转换成关系型,或者像memcached一样只能使用简单的key-value。 - memcached使用libevent这个已经不那么轻量级的网络事件库,而redis本身不依赖任何第三方的函数库,无论是网络事件、哈希表,数据结构都是自己实现的,全部代码只有2w行,算是一个中小型的项目,代码清晰,阅读起来非常的流畅,甚至都无须debug调试来辅助理解。 -本文将对其的源代码进行分析,版本为2.2.2。下载源代码解压redis.tar.gz包后,进入redis目录,我们从src/redis.c的主函数开始我们代码旅行。推荐读者使用cscope这样可以很方便的从函数之间跳转,如何使用cscope可见附录1,如何设置vim的快捷键可见附录2。 +Redis(REmote DIctionary Server)是一个开源的键-值内存数据库,与它类似的有 memcached,Tokyo Cabinet 等。Redis 以支持丰富的数据结构著称,同时兼具主从复制、持久化等高可用特性,与程序无缝的结合, + + +##无第三方库依赖 + +memcached 使用 libevent 这个已经不那么轻量级的网络事件库,而 Redis 本身不依赖任何第三方的函数库,无论是网络事件、哈希表,数据结构都是自己实现的,全部代码只有 2w 行,算是一个小型的项目,代码清晰,阅读起来非常的流畅,甚至都无须 debug 调试来辅助理解。 + + +##从哪里开始 + +本书将对其的源代码进行分析,版本为2.4.16。下载源代码解压 redis.tar.gz 包后,进入``redis``目录,我们从``src/Redis.c``的主函数开始我们代码旅行。 + +推荐读者使用 cscope 这样可以很方便的从函数之间跳转,如何使用 cscope 可见附录1,如何设置vim的快捷键可见附录2。 + + +##为何redis是单线程? + +由于支持复杂的数据结构,所以如果采用多线程,将非常的麻烦,试想一个双链表,要支持多线程将多么的复杂。 + +Redis 并不是一个``fit all``的键-值数据库,单线程意味着任何一个客户端连接的处理速度影响的全局的性能,所以一些较消耗性能的操作(set的操作或者zset的排序操作)都尽量移动到备库来处理。 + +受内存限制的特点使得目前Redis不能成为处理海量数据的total solutions,而仅仅是一个复杂大型系统里的一部分。 + + +##缺陷 + +Redis 有很多缺陷,比如无法做到双主库 ,无法进行同步复制(当然这些都是可以改进的)。复制做增量复制,复制容易受网络的影响, 无完美的集群方案,但这不影响 Redis 成为一个优秀的可信赖的组件。 + + +#同类项目 + +##memcached + +##tc + +#趋势 +