在nosqlfan上面推荐的新浪技术团队田琪@摇摆巴赫提供的redis的胶片,因为公司屏蔽了slidesshares,所以就讲胶片的内容总结写下了。
redis网络接口
采用单线程的IO服用,aeEvent封装了IO和定时器,默认支持10K的链接,AE_SETSIZE(1024*10)参数设置允许链接的数目。
那redis为何不适用多线程呢,这是因为:
- 多线程的缓存一致性的维护复杂(cache coherency)
- 锁管理复杂(complexity with locks)
- Deadlocks
redis的数据类型在上一篇
redis初探中已经对基本数据类型和操作做了简单的介绍,在此不再赘述。
redis基础数据结构
数据指针+type+encoding
16字节(64位,不开启vm)
40字节(64位,开启vm)
redis里面所有存储对象(key,value)都是redisObject类型
set,get,incr等
- redis list-双向链表
- 内存占用
- list每个元素占用内存
- listNode(前后指针,数据节点指针)
- 数据本身指针(robj)
- 24字节+16字节=40字节
- 40字节+元素本身大小
- 相关参数
- list-max-ziplist-entries
- list-max-ziplist-values
- 使用场景
-
redis hash
-
数据结构实现
-
内存容量占用
-
相关参数
-
hash-max-zipmap-entries
-
hash-max-zipmap-value
-
使用场景
- redis set& sorted set
- set数据结构实现
- sorted set数据结构实现
- hashmap(element->score)
- skiplist(按element插入有序)
- 相关参数
- 使用场景
- hash&rehash
- 双hash表做rehash
- 预规划减少rehash次数
- 相关参数
- DICT_HT_INITIAL_SIZE 4
- REDIS_HT_MINFILL 10
- Activerehashing
- redis持久化机制
- snapshot
- aof
- vm
- vm is not the way to go for the future
- slow restart,slow saving,slow replicaiton,complex code
- diskstore
- key,value stored on disk
- memory works as a cache(read through,write back)
- redis复制
- 实现机制
- 快照同步
- 存在的问题
- 无增量复制
- slave表重建
今天写不完了,明天继续
链接地址http://blog.nosqlfan.com/html/2925.html
阅读(5027) | 评论(0) | 转发(0) |