Chinaunix首页 | 论坛 | 博客

  • 博客访问: 135675
  • 博文数量: 46
  • 博客积分: 2310
  • 博客等级: 大尉
  • 技术积分: 505
  • 用 户 组: 普通用户
  • 注册时间: 2010-01-18 19:13
文章存档

2011年(14)

2010年(32)

我的朋友

分类: 数据库开发技术

2011-10-30 22:52:39

在nosqlfan上面推荐的新浪技术团队田琪@摇摆巴赫提供的redis的胶片,因为公司屏蔽了slidesshares,所以就讲胶片的内容总结写下了。
redis网络接口
采用单线程的IO服用,aeEvent封装了IO和定时器,默认支持10K的链接,AE_SETSIZE(1024*10)参数设置允许链接的数目。
那redis为何不适用多线程呢,这是因为:
  • 多线程的缓存一致性的维护复杂(cache coherency)
  • 锁管理复杂(complexity with locks)
  • Deadlocks
redis的数据类型在上一篇redis初探中已经对基本数据类型和操作做了简单的介绍,在此不再赘述。
redis基础数据结构
  • redisObject

数据指针+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
    • 数据结构实现
      • zipmap&real hash map
    • 内存容量占用
      • zipmap更省内存
    • 相关参数
      • hash-max-zipmap-entries
      • hash-max-zipmap-value
    • 使用场景
      • 用户计数器
  • redis set& sorted set
    • set数据结构实现
      • hashmap(value为NULL)
    • sorted set数据结构实现
      • hashmap(element->score)
      • skiplist(按element插入有序)
    • 相关参数
      • set-max-inset-entries
    • 使用场景
      • 用户发件箱mid
  • hash&rehash
    • 双hash表做rehash
    • 预规划减少rehash次数
    • 相关参数
      • DICT_HT_INITIAL_SIZE 4
      • REDIS_HT_MINFILL 10
      • Activerehashing
  • redis持久化机制
    • snapshot
      • save参数
    • aof
      • appendfsync参数
    • 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) |
0

上一篇:redis初探(一)

下一篇:没有了

给主人留下些什么吧!~~