• 1. Redis应用与运维实践
  • 2. 关于我强昌金 – 小强 目前就职: 去哪儿DBA 曾就职: 陌陌DBA 工作经验: 2年 负责酒店相关业务,Redis运维,数据库管理平台开发 TEL:18513418589 QQ:627978402
  • 3. 目录Redis概述 Redis应用注意事项 Redis运维踩过的坑 Redis cluster介绍
  • 4. Redis概述高性能的KEY-VALUE内存存储 支持主从同步 丰富的API
  • 5. Redis概述数据模型 字符串(String) 字符串列表(List) 无序不重复的字符串集合(SET) 有序不重复的字符串集合(ZSET) 键、值的字符串的哈希表(HASH)
  • 6. Redis概述数据存储 内存 ADB AOF
  • 7. Redis应用注意事项Redis list的使用 PUSH、POP操作保证在同一个节点上 队列长度添加监控 队列与别的Redis业务分开使用
  • 8. Redis应用注意事项过期KEY的使用 对于包含过期时间的KEY操作,保持在同一个节点上 对于过期KEY的redis,可以设置最大内存限制 配置LRU策略
  • 9. Redis应用注意事项HASH的使用 避免使用HGETALL、HKEYS、HVALS
  • 10. Redis应用注意事项SERVER端操作注意事项 禁用KEYS * 、SAVE、…. 默认使用数据库0、不要使用SELECT 选择多个数据库
  • 11. Redis运维踩过的坑一主多从(级联情况)
  • 12. Redis运维踩过的坑一主多从(级联情况)
  • 13. Redis运维踩过的坑一主多从(级联情况)
  • 14. Redis运维踩过的坑一主多从(级联情况)
  • 15. Redis运维踩过的坑Redis备份的问题 RDB备份 AOF备份 单机多实例的RDB问题
  • 16. Redis运维踩过的坑Redis 主从搭建问题 避免高峰期搭建,可能导致失败 Redis做RDB的时候,Redis可能出现夯死的情况 Buffer区写爆了 解决措施: 尽量在压力小的实例搭建从库 调整client-output-buffer-limit slave
  • 17. Redis运维踩过的坑Redis 连接超时问题 解决方案 慢查询监控 业务优化
  • 18. Redis运维踩过的坑MONITOR导致内存飙升 解决方案: 通过client-output-buffer-limit限制 有能力的可以修改monitor实现机制(臣妾暂时无法做到)
  • 19. Redis Cluster介绍Redis 原生Cluster 特性 高可用性与可线性扩展 数据自动路由到多个节点 节点间数据共享 可动态添加或者删除节点 数据通过异步复制,不保证数据的强一致性 可动态调整数据分布
  • 20. Redis Cluster 介绍
  • 21. Redis Cluster 介绍Redis集群数据分布 Redis 集群没有使用一致性hash,引入了哈希槽(HASH SLOT). Redis 集群中所有的主节点都负责 16384 个哈希槽中的一部分。当集群处于稳定状态时,集群中没有在执行重配置(reconfiguration)操作,每个哈希槽都只由一个节点进行处理(不过主节点可以有一个或多个从节点,可以在网络断线或节点失效时替换掉主节点) slot = CRC16(KEY) / 16384
  • 22. Redis Cluster介绍Redis 集群键HASH标签 目标: HASH标签是确保两个KEY 都能在同一个HASH槽的一种方式 实现方式: HASH 槽是用另一种不同的计算方式计算的。基本来说,如果KEY包含一个"{...}"这样的模式,只有“{” 和 “}” 之间的字符串会被用来做HASH以获取HAS槽。如果同时出现多个“{}” 计算方式如下: * 如果KEY 包含一个 “{” 字符 * 那么在 “{”的右边就会字符 "}” * 在字符 “{” 和 “}”直接会有一个或多个字符。但是第一个“}” 一定会出现在第一个“{”之后 * 只有在第一个 { 和它右边第一个 } 之间的内容会被用来计算哈希值 例子: 1、比如这两个键 user:{1000}.following 和user:{1000}.followers 会被哈希到同一个哈希槽里,因为只有 "1000" 这个子串会被用来计算哈希值。 2、对于 user{}{list} 这个键,整个键都会被用来计算哈希值,因为第一个出现的 { 和它右边第一个出现的 } 之间没有任何字符。 3、对于 user{{momoid}}following 这个键,用来计算哈希值的是 "{momoid" 这个子串,因为它是第一个 { 及其右边第一个 } 之间的内容。 4、对于 user{momoid}{following} 这个键,用来计算哈希值的是 "momoid" 这个子串,因为算法会在第一次有效或无效(比如中间没有任何字节)地匹配到 { 和 } 的时候停止。 5、按照这个算法,如果一个键是以 {} 开头的话,那么就当作整个键会被用来计算哈希值。当使用二进制数据做为键名称的时候,这是非常有用的。
  • 23. Redis Cluster 介绍相关命令 集群 1、CLUSTER INFO 打印集群的信息 2、CLUSTER NODES 列出集群当前已知的所有节点(node),以及这些节点的相关信息。 3、CLUSTER FAILOVER 手动故障转移,需要在转移的主节点的从节点上执行 节点 1、CLUSTER MEET 将 ip 和 port 所指定的节点添加到集群当中,让它成为集群的一份子。 2、CLUSTER FORGET 从集群中移除 node_id 指定的节点。 3、CLUSTER REPLICATE 将当前节点设置为 node_id 指定的节点的从节点。 4、CLUSTER SAVECONFIG 将节点的配置文件保存到硬盘里面。 槽(slot) 1、CLUSTER ADDSLOTS [slot ...] 将一个或多个槽(slot)指派(assign)给当前节点。 2、CLUSTER DELSLOTS [slot ...] 移除一个或多个槽对当前节点的指派。 3、CLUSTER FLUSHSLOTS 移除指派给当前节点的所有槽,让当前节点变成一个没有指派任何槽的节点。 4、CLUSTER SETSLOT NODE 将槽 slot 指派给 node_id 指定的节点,如果槽已经指派给另一个节点,那么先让另一个节点删除该槽,然后再进行指派。 1、CLUSTER SETSLOT MIGRATING 将本节点的槽 slot 迁移到 node_id 指定的节点中。 2、CLUSTER SETSLOT IMPORTING 从 node_id 指定的节点中导入槽 slot 到本节点。 3、CLUSTER SETSLOT STABLE 取消对槽 slot 的导入(import)或者迁移(migrate)。 键 1、CLUSTER KEYSLOT 计算键 key 应该被放置在哪个槽上。 2、CLUSTER COUNTKEYSINSLOT 返回槽 slot 目前包含的键值对数量。 3、CLUSTER GETKEYSINSLOT 返回 count 个 slot 槽中的键。 不支持的命令: 1、不支持SELECT 命令,集群只使用数据库 0 2、不支持多个KEY的操作 如 MSET、SUION、SINTER等命令 (因为KEYS 无法hash到同一个slot中)
  • 24. Redis Cluster介绍集群配置 必须配置: cluster-enabled yes --> 开启集群模式 cluster-config-file nodes-30000.conf --> 集群相关的信息 cluster-node-timeout 15000 --> 节点超时时间,用来failover的操作 可选配置: cluster-slave-validity-factor 10 cluster-migration-barrier 1 cluster-require-full-coverage yes Redis-trib.rb 相关命令 redis-trib.rb create [--replicas N] host:ip [host:ip ...] 创建集群 redis-trib.rb add-node host:ip host:ip 将前面的host:ip 添加到集群中 redis-trib.rb check host:ip 检查集群的状态 redis-trib.rb reshard host:ip OR redis-trib.rb reshard --from host:port --to host:port --slots --yes集群重新分片 redis-trib.rb del-node host:ip 'NODE ID' 将节点从集群中移除
  • 25. Redis Cluster 介绍Failover机制 节点心跳 失效检测 从选举与提升
  • 26. Redis Cluster介绍优点 redis 在主节点下线后,从节点会自动提升为主节点,提供服务 redis 宕机节点恢复后,自动会添加到集群中,变成从节点 缺点 由于redis的复制使用异步机制,在自动故障转移的过程中,集群可能会丢失写命令。然而 redis 几乎是同时执行(将命令恢复发送给客户端,以及将命令复制到从节点)这两个操作,所以实际中,命令丢失的窗口非常小。
  • 27. 广告篇关注去哪儿 关注3W教育(泰岳树人科技有限公司) 关注ACMUG
  • 28. (本页无文本内容)
  • 29. 精品课程推荐 3w教育荣誉出品《MySQL DBA脱产班》 《MySQL DBA周末加强提高班》 《HTML5 零基础全日制班》 《互联网架构师班》 《云计算周末集训营》 《Linux运维零基础脱产班》 联系方式: 咨询QQ群:167605499