腾讯云大神亲码“redis深度笔记”,不讲一句废话,全是精华

前言

作为这个时代码代码的秃头人员,对Redis肯定是不陌生的,如果连Redis都没用过,还真不好意思出去面试,指不定被面试官吊打多少次。

毕竟现在互联网公司和一些创业公司都要用到Redis,像亚马逊、谷歌、阿里、腾讯都要使用,可见精通Redis使用真的很有必要。

所以,今天则分享出腾讯云大神亲自码出的“redis深度笔记”,笔记内容没有讲一句废话,全篇看下来都是精华!

PART1:Redis深度笔记开篇

1.Redis可以用来做什么?

  • 由Redis面试想到的
  • Redis可以做什么?

2.Redis基础数据结构

  • Redis安装
  • Redis基础的数据结构
  • 容器型数据结构的通用规则
  • 关于Redis使用的一些思考
  • PART2:Redis的应用总结

    1.分布式锁

    • 分布式锁
    • 超时问题
    • 可重入性

      2.延时队列

      • 异步消息队列?
      • 队列空了怎么办?
      • 队列延迟
      • 空闲连接自动断开
      • 锁冲突处理
      • 延时队列的实现
      • 进一步优化
    • 3.位图

      • 基本使用
      • 统计和查找
      • 魔术指令 bitfield

      4.HyperLogLog

      • 使用方法
      • pfadd这个pf是什么意思?
      • pfmerge适合什么场合用?
      • 注意事项
      • HyperLogLog实现原理
      • pf的内存占用为什么是12k

        5.布隆过滤器

        • 布隆过滤器是什么?
        • Redis中的布隆过滤器
        • 布隆过滤器的基本使用
        • 注意事项
        • 布隆过滤器的原理
        • 空间占用估计
        • 实际元素超出时,误判率会怎样变化?
        • 用不上Redis4.0怎么办?
        • 布隆过滤器的其他应用

          6.简单限流

          • 如何使用Redis来实现简单限流策略?

          7.漏斗限流

          • Redis-Cell
          • 一些思考

          8.GeoHash

          • 用数据库来算附近的人
          • GeoHash算法
          • Redis的Geo指令基本使用
        • 9.Scan

          • scan基础使用
          • 字典的结构
          • scan遍历顺序
          • 字典扩容
          • 对比扩容缩容前后的遍历顺序
          • 渐进式rehash
          • 更多的scan指令
          • 大Key扫描


          PART3:Redis的原理

          1.线程IO模型

          • 非阻塞IO
          • 事件轮询(多路复用)
          • 指令队列
          • 响应队列
          • 定时任务

          2.通信协议

          • RESP(Redis Serialization Protocol)
          • 客户端->服务端
          • 服务端->客户端

          3.持久化

          • 快照原理
          • fork(多进程)
          • AOF原理
          • AOF重写
          • fsync
          • 运维
          • Redis4.0混合持久化

            4.管道

            • Redis的消息交互
            • 管道压力测试
            • 深入理解管道本质

                

            5.事务

            • Redis事务的基本使用
            • 原子性
            • discard(丢弃)
            • 优化
            • Watch
          • 6.PubSub

            • 消息多播
            • PubSub
            • 模式订阅
            • 消息结构
            • PubSub缺点

              7.小对象压缩

              • 32bit vs 64bit
              • 小对象压缩存储(ziplist)
              • 内存回收机制
              • 内存分配算法

              8.主从同步

              • CAP原理
              • 最终一致
              • 主从同步
              • 增量同步
              • 快照同步
              • 增加从节点
              • 无盘复制
              • Wait指令

              PART4:Redis集群

              1.Sentinel

              • 消息丢失
              • Sentinel基本使用

              2.Codis

              • Codis分片原理
              • 不同的Codis实例之间槽位关系如何同步?
              • 扩容
              • 自动均衡
              • Codis的代价
              • Codis的优点
              • MGET指令的操作过程
              • 架构变迁
              • Codis的尴尬
              • Codis的后台管理

              3.Cluster

              • 槽位定位算法
              • 跳转
              • 迁移
              • 容错
              • 网络抖动
              • 可能下线(PFAIL-Possibly Fail)与确定下线(Fail)
              • Cluster基本使用
              • 槽位迁移感知
              • 集群变更感知

                PART5:Redis拓展

                1.Stream

                • 消息ID
                • 消息内容
                • 增删改查
                • 独立消费
                • 创建消费组
                • 消费
                • Stream消息太多怎么办?
                • 消息如果忘记ACK会怎样?
                • PEL如何避免消息丢失?
                • Stream的高可用
                • 分区Partition

                  2.Info指令

                  • Redis每秒执行多少次指令?
                  • Redis连接了多少客户端?
                  • Redisn内存占用多大?
                  • 复制积压缓存区多大?
                      

                  3.再谈分布式锁

                  • Redlock算法
                  • Redlock使用场景

                  4.过期策略

                  • 过期的key集合
                  • 定时扫描策略
                  • 从库的过期策略

                  5.LRU

                  • LRU算法
                  • 近似LRU算法

                  6.懒惰删除

                  • Redis为什么要懒惰删除(lazy free)?
                  • flush
                  • 异步队列
                  • AOF Sync也很慢
                  • 更多异步删除点

                  7.优雅地使用Jedis

                  • 重试

                  8.保护Redis

                  • 指令安全
                  • 端口安全
                  • Lua脚本安全
                  • SSL代理

                  9.Redis安全通信

                  • spiped原理
                  • spiped使用入门

                  PART6:源码

                  1.探索字符串内部结构

                  • embstr vs raw
                  • 扩容策略

                  2.探索字典内部

                  • dict 内部结构
                  • 渐进式rehash
                  • 查找过程
                  • hash 函数
                  • hash攻击
                  • 扩容条件
                  • 缩容条件
                  • set的结构

                  3.探索压缩列表内部

                  • 增加元素
                  • 级联更新
                  • IntSet 小整数集合

                  4.探索快速列表内部

                  • 每个ziplist存多少元素?
                  • 压缩深度

                  5.探索跳跃列表内部结构

                  • 基本结构
                  • 查找过程
                  • 随机层数
                  • 插入过程
                  • 删除过程
                  • 更新过程
                  • 如果score值都一样呢?
                  • 元素排名是怎么算出来的?

                  6.探索紧凑列表内部

                  • 级联更新
                  • 取代ziplist

                  7.探索基数树内部

                  • 应用
                  • 结构
                  • 增删节点

                  总结

                  最后,我想说的是,学习并非难事,而贵在坚持,尤其是在我们参与工作之后,要继续坚持学习就更不容易了。但对于程序员来说,学习是立业之根本,如若放弃学习,被市场淘汰是迟早的事情。所以,学习更多新的知识对于自己来说才是一种更大的投资。

                  以上,到此结束。

全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务