Redis知识思维导图总结

2022-08-26 19:59:43 浏览数 (1)

Redis基础知识总结思维导图,系统的学习Redis。不定时更新。

主要包括:

  • 基本数据和应用场景
  • 常见问题分析
  • 性能优化
  • 持久化
  • 集群模式
  • 子模块

基本知识

基本数据类型和使用场景

基本数据类型
  • string
    • 二进制安全,可以包含任何数据,一个键最大能存储512M
  • hash
    • 键值对集合,存储、读取、修改用户属性
  • list
    • 链表(双向链表),可用于最新消息排行等功能(比如朋友圈的时间线)和消息队列
  • set
    • 哈希表实现,元素不重复。可用于利用唯一性,统计访问网站的所有独立ip和好友推荐时,根据tag求交集,大于某个阈值就可以推荐
  • Sorted sets
    • 将Set中的元素增加一个权重参数score,元素按score有序排列。
    • 可用于排行榜,带权重的消息队列
  • bitmaps
    • 通过类似 map 结构存放 0 或 1 ( bit 位 ) 作为值。
    • 可用于用户签到,百万用户在线状态统计,千万消费者数据去重。
  • HyperLogLogs
    • 可以接受多个元素作为输入,并给出输入元素的基数估算值
使用场景
  • 缓存数据;
  • 最新消息排行等功能(比如朋友圈的时间线);
  • 消息队列、带权重的消息队列
  • 共同好友
  • 好友推荐时,根据tag求交集,大于某个阈值就可以推荐
  • 排行榜
  • 用户签到
  • 百万用户在线状态统计
  • 千万消费者数据去重
  • 分布式锁

常见问题分析

客户端报错
  • Could not get a resource from the pool
    • 连接泄露,使用了的连接并未归还到连接池
    • 并发量过大,连接池最大连接配置过小
    • 存在执行较慢的命令
  • Unexpected end of stream
    • 多线程访问了Jedis对象,或者pipeline对象
    • 客户端缓冲区满了
      • 普通客户端缓冲区(normal):普通客户端缓冲区(normal):用于接受普通的命令,例如get、set、mset、hgetall、zrange等
      • slave客户端缓冲区(slave):用于同步master节点的写命令,完成复制。
      • 发布订阅缓冲区(pubsub):pubsub不是普通的命令,因此有单独的缓冲区。
  • ERR illegal address
    • ip 端口配置的不对
  • ERR max number of clients reached
    • 超过了Redis实例配置的最大maxclients
      • 服务端maxclient配置过小
      • 客户端连接池过多,过大
      • 客户端存在连接泄露,服务端没有定时关闭连接
  • java.net.SocketTimeoutException: Read timed out
    • 读写超时设置的过短。
    • 有慢查询或者Redis发生阻塞。
    • 网络不稳定。
  • NOAUTH Authentication required
    • 客户端没有传密码
  • OOM command not allowed when used memory > 'maxmemory'
    • Redis实例内存已经写满,调大maxmemory,不建议大于10G
  • LOADING Redis is loading the dataset in memory
    • 如果Redis正在加载持久化文件,无法进行正常的读写。
  • java.net.SocketTimeoutException: connect timed out
    • 连接超时设置的过短。
    • tcp-backlog满,造成新的连接失败。
    • 客户端与服务端网络不正常。
  • Please close pipeline or multi block before calling this method.
    • 使用pipeline.syncAndReturnAll()来实现
服务端报错
  • psync scheduled to be closed ASAP for overcoming of output buffer limits
    • client-output-buffer-limit slave 设置为client-output-buffer-limit slave 0 0 0

性能优化

思维导图:

持久化

思维导图

集群模式

思维导图

子模块

思维导图

内核源码详解

内核部分包括:

  • 内核启动过程

内核启动过程

TODO:将思维导图里面的东西总结的更详细。

0 人点赞