Skip to content

Commit

Permalink
intro revise.
Browse files Browse the repository at this point in the history
  • Loading branch information
hoterran committed Aug 4, 2012
1 parent df8f9a7 commit 4efa151
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 5 deletions.
7 changes: 5 additions & 2 deletions convention.md
Expand Up @@ -4,7 +4,7 @@
## Redis 的各部分命令

* string 字符串
* hash 哈希表
* hash 哈希
* list 列表
* set 集合
* sorted set 有序集合
Expand All @@ -13,6 +13,8 @@
* scripting 脚本
* connection 连接
* server 服务器
* save 快照
* aof aof


## 相关术语
Expand All @@ -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

40 changes: 37 additions & 3 deletions 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

#趋势


0 comments on commit 4efa151

Please sign in to comment.