Redis
Redis
程序员卡卡西
架构就是取舍
展开
-
Redis——开发规范
本文介绍了使用 Redis 时的开发规范,从键值设计、命令使用等方面进行说明,通过本文的介绍可以减少使用 Redis 过程中带来的问题。 键值设计 - 规范 Level key 1.以业务名(或数据库名)为前缀(防止key冲突),用冒号分隔,比如业务名:表名:id; 2.保证语义的前提下,控制key的长度; 3.不要包含特殊字符(空格、换行、单双引号以及其他转义字符)。 强制 value 1.禁止bigkey(防止网卡流量、慢查询),string类型控制在10KB以内,hash、list原创 2020-08-10 06:18:57 · 91 阅读 · 0 评论 -
Redis——缓存
Redis 是一个开源的高性能的 Key-Value 服务器。本篇主要介绍一下缓存的设计与优化。 缓存收益与成本 - 说明 缓存的受益 1、加速读写,通过缓存加速读写速度,例如 CPU L1/L2/L3 Cache、Linux page Cache 加速硬盘读写、浏览器缓存、Ehcache 缓存数据库结果;2、降低后端负载,后端服务器通过前端缓存降低负载,业务端使用 Redis 降低后端 MySQL 负载等。 缓存的成本 1、数据不一致,缓存和数据层有时间窗口不一致,和更新策略有关;2、原创 2020-08-08 12:27:32 · 3043 阅读 · 5 评论 -
Redis——Cluster
Redis Cluster 采用无中心结构,每个节点保存数据和整个集群的状态,每个节点都和其他所有节点连接,节点之间使用流言协议 (Gossip Protocols) 去传播信息以及发现新的节点。 Redis Cluster 的主要目的是将不同的 key 分散放置到不同的 Redis 节点。 分片 分片:按照某种规则去划分数据库,分散存储在多个节点上。 常见的两种分片方式是顺序分区和 Hash 分区: 方式 说明 特点 产品 顺序分区 按顺序进行分区 数据分散度易倾斜,键值业务相关,可顺序访原创 2020-08-07 20:01:57 · 287 阅读 · 0 评论 -
Redis——Sentinel
Redis Sentinel(哨兵)是 Redis 高可用的解决方案,本身是一个独立运行的进程,它可以监视多个 Master-Slave 集群,发现 Master 宕机之后,能进行自动切换,将该 Master 下的某个 Slave 晋升为 Master,继续处理请求。 Redis Sentinel 主要功能: 监控:检查主从服务器是否运行正常; 自动故障迁移:主从切换。 架构说明 Redis Sentinel 架构: Redis Sentinel 故障转移: 如果 master 宕机了,连接出现中断原创 2020-08-07 20:01:07 · 280 阅读 · 0 评论 -
Redis——主从同步原理
单机 Redis 可能存在机器故障、容量瓶颈和 QPS 瓶颈。主从复制为一个数据提供了多个副本,扩展了读性能。 主从同步存在的问题:需要手动故障转移。 实现方式 主从同步有两种实现方式: 1、slaveof 命令实现 在 Slave 上执行 slaveof [master_ip master_port] 命令即可,slaveof 命令是异步的。取消复制只需要在 Slave 上执行 slaveof no one 命令即可,取消复制并不会清除之前复制过的数据。 优点是无需重启,缺点是不便于管理。 2、redis原创 2020-08-07 19:56:14 · 207 阅读 · 0 评论 -
Redis——过期删除策略
过期时间判定 在Redis内部,每当我们设置一个键的过期时间时,Redis就会将该键带上过期时间存放到一个过期字典中。当我们查询一个键时,Redis便首先检查该键是否存在过期字典中,如果存在,那就获取其过期时间。然后将过期时间和当前系统时间进行比对,比系统时间大,那就没有过期;反之判定该键过期。 过期删除策略 Redis的过期删除策略就是:惰性删除和定期删除两种策略配合使用 惰性删除:Redis的惰性删除策略由 db.c/expireIfNeeded 函数实现,所有键读写命令执行之前都会调用 expireI原创 2020-08-07 18:28:39 · 604 阅读 · 0 评论