前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Redis知识思维导图总结

Redis知识思维导图总结

作者头像
zeekling
发布2022-08-26 19:59:43
3310
发布2022-08-26 19:59:43
举报

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

性能优化

思维导图:

Redis性能优化
Redis性能优化

持久化

思维导图

Redis持久化
Redis持久化

集群模式

思维导图

Redis集群模式
Redis集群模式

子模块

思维导图

Redis子模块
Redis子模块

内核源码详解

内核部分包括:

  • 内核启动过程

内核启动过程

内核启动过程
内核启动过程

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021.11.07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 基本知识
    • 基本数据类型和使用场景
      • 基本数据类型
      • 使用场景
    • 常见问题分析
      • 客户端报错
      • 服务端报错
    • 性能优化
      • 持久化
        • 集群模式
          • 子模块
          • 内核源码详解
            • 内核启动过程
            相关产品与服务
            云数据库 Redis
            腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档