Redis深入应用-原理篇

2020-09-11  本文已影响0人  美雨知春
  1. 线程IO模型
    redis是个单线程程序。多路复用,用select事件轮询,select轮询可能开发过串口接口的同学会很清楚。
read_events,write_events = select(read_fs,write_fs,timeout)
for event in read_events:
  handle_read(event.fd)
for event in write_events:
  handle_write(event.fd)
handle_others() # 处理其它事情,如定时任务等
  1. 通信协议
    RESP是Redis序列化协议,有5种最小的单元类型,单元结束时统一加上\r\n
  2. 持久化
    Redis的数据全部在内存中,但是数据也是持久化的,有两种持久化方式:AOF和快照(COW)
    AOF:是对指令进行日志存储
    COW:copy onWrite,子进程直接拷贝内存数据
    混合持久化:快照+指令恢复
  3. Redis的消息交互-管道
    读写数据存储的缓存中,顺序读写,不需要一个请求对应一个回复。这也是管道的原理,这一点跟淳口通信非常相似
  4. 事务和原子性
    redis支持事务和原子性的
  5. PubSub,消息订阅,同时也支持模式订阅
    支持一个生产者,多个消费者模型
    模式订阅是指对消息类型进行订阅
  6. 内存管理
    内存回收,并不是总将空闲内存立即归还给操作系统
    内存分配:redis自己并不直接分配内存,而是把内存分配丢给第三方进行管理:jemalloc
上一篇下一篇

猜你喜欢

热点阅读