Redis开发与运维读书笔记之三

第2章 API的理解和使用  第1部分

  • Redis命令有上百个,理解Redis的机制,会发现这些命令有很强的通用性
  • 有些数据结构和命令必须在特定场景使用,一旦使用不当可能会对Redis本身或者应用本身造成致命伤害

全局命令
  • keys *:查看所有键
  • dbsize:键的总数
  • exists key:查看键是否存在
  • del key:删除键
  • expire key seconds:键过期
  • type key::查看键的数据类型

数据结构和内部编码
type命令返回的就是对应键的数据类型,如string/hash/list/set/zset,每种数据结构内部都有多种编码实现,Redis会根据场景选择合适的编码:
  • string:raw/int/embstr
  • hash:hashtable/ziplist
  • list:linkedlist/ziplist
  • set:hashtable/intset
  • zset:skiplist/ziplist

单线程架构
Redis使用单线程架构和IO多路复用模型实现高性能内存数据库服务。
Redis是单线程来处理命令,所有命令到达服务端都会进入一个队列后被逐个执行。
Redis单线程模型可以达到每秒万次的处理能力:
  • 纯内存访问:内存响应时间大约为100ns
  • 非阻塞I/O:使用epoll作为I/O多路复用技术的实现,加上Redis事件处理模型将epoll中的连接、读写、关闭都转换为事件,不在网络I/O上浪费过多时间
  • 单线程可以避免线程切换和竞态产生的消耗

单线程的好处:
  • 可以简化数据结构和算法
  • 避免线程切换和竞态产生的消耗

单线程的问题:对每个命令的执行时间有要求,如果时间过长,会造成阻塞

猜你喜欢

转载自xwhuang.iteye.com/blog/2377176