随笔分类 - redis
摘要:redis学习(九) 缓存 缓存能够有效地加速应用的读写速度,同时也可以降低后端负载,对日常应用的开发至关重要。 缓存的优点: 加速读写;降低后端负载 缓存的缺点: 数据不一致性;代码维护成本;运维成本 使用场景: 开销大的复杂计算,如SQL的联表操作,分组计算;加速请求响应 缓存更新策略 缓存中的
阅读全文
摘要:字符串结构 struct sdshdr{ int len; int free; char buf[]; } 简单字符串结构中,buf存储的字符数组也是使用'\0'作为字符数组的结尾,但是在使用上对用户是透明的,这个设计能重用C的字符数组函数。 另一个好处是,redis使用了一个常数len记录字符串的
阅读全文
摘要:redis学习(八)集群 Redis Cluster是redis的分布式解决方案,采用cluster架构能打倒负载均衡的目的。 数据分布 数据分布理论 分布式数据库首先要解决把整个数据集按照分区规则映射到多个节点的问题,即把数据集划分到多个节点上,每个节点负责整体数据的一个子集。 重点是数据分区规则
阅读全文
摘要:redis学习(七)哨兵 哨兵 Redis的主从复制模式下,一旦主节点由于故障不能提供服务,需要人工将从节点晋升为主节点,同时还要通知应用方更新主节点地址,对于很多应用场景这种故障处理的方式是无法接受的。 高可用性 当主节点出现故障时,Redis Sentinel能自动完成故障发现和故障转移,并通知
阅读全文
摘要:redis学习(六) 阻塞和内存 阻塞 Redis是典型的单线程架构,所有的读写操作都是在一条主线程中完成的。当Redis用于高并发场景时,这条线程就变成了它的生命线。如果出现阻塞,哪怕是很短时间,对于我们的应用来说都是噩梦。 内在原因包括:不合理地使用API或数据结构、CPU饱和、持久化阻塞等。
阅读全文
摘要:redis学习(五) 使用redis记录日志 常见日志 使用一个列表来存储日志,并且使用ltrim限制日志的条数,使用pipe原子执行。 //name,log_rate组合成日志的列表名,log_rate是日志的级别 function (name,message string,log_rate in
阅读全文
摘要:redis学习(四) 复制 Replication 复制可以让其他服务器拥有一个不断地更新的数据副本,从而使得拥有数据副本的服务器可以用于处理客户端发送的读请求。关系数据库通常会使用一个主服务器(master)向多个从服务器(slave)发送更新,并使用从服务器来处理所有读请求。Redis也采用了同
阅读全文
摘要:redis学习(三) 数据安全和持久化 RDB快照 RDB是一个紧凑压缩的二进制文件,代表Redis在某个时间点上的数据快照。 触发机制: 手动触发 bgsave , save save命令会阻塞redis服务器,直到快照建立完成。bgsave命令,redis进程会执行fork操作,建立子进程持久化
阅读全文
摘要:附加功能和Redis客户端 慢查询 所谓慢查询日志就是系统在命令执行前后计算每条命令的执行时间,当超过预设阀值,就将这条命令的相关信息(例如:发生时间,耗时,命令的详细信息)记录下来。 典型的数据库有MySQL 但是redis一条命令执行的过程可以细分为四步 1 发送命令 2 命令排队 3 命令执行
阅读全文
摘要:Redis学习 参考书籍: Redis实战,Redis设计与实现,Redis开发与运维 数据结构 这点和常规的范围索引不同 Redis的索引以0为开始,在进行范围访问时,范围的终点(endpoint)默认也包含在这个范围之内。 字符串 在Redis里面,字符串可以存储以下三种类型的值: 字符串,整数
阅读全文

浙公网安备 33010602011771号