带着问题看 redis 源码 - (sunznx) 振翅飞翔
16 September 2019

尝试看几次 redis 源码,总是不着边际,看了就忘,这次打算带着问题去看源码。下面是一些我看源码的教训:
看源码的时候不必锱铢必较,要相信看得再细,忘得越多,要做到点到即止。知道大概是个什么东西,然后想想如果是自己来写这段代码会怎么写,如果和 redis 源码是一样的,那么就可以不必深究。还有一些也是不必深究的,例如:hash 函数等固定的知识,也可以不看,还有如 redis 字符串,压缩字典,listpack 等结构,这种是 redis 特有的,感觉看得再细用处不大,看过了就会忘,只要知道有这个概念以及 redis 为什么要使用这个数据结构(例如柔性数组等)就行了。

很多书都会分析 redis 的数据结构是怎么实现的,实际上这也是没必要的。想想不使用 redis,自己通过 c/php 等语言也能实现这些数据结构,这时候就没必要死扣 redis 里面的数据结构

总结几个问题:

  • [X] key 存储
  • [X] key 过期
  • [X] rehash
  • [X] 持久化
  • [X] stream
  • [X] 主从复制
    这块的代码没看,我认为如果单单是把 redis 作为缓存的,那么主从复制并不是很需要。竟然是作为缓存,那么在代码实现中,应该考虑缓存不存在或者缓存系统挂掉的情况。如果把 redis 作为 db 来使用,本身就是一件不算安全的事情
  • [X] sentinel
    没看
  • [X] cluster
    没看,打算看 https://github.com/CodisLabs/codis