02 2021 档案
摘要: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操作,建立子进程持久化
阅读全文
摘要:协程 又叫微线程 协程的本质 协程是编译器进行的工作,他通过插入相关的代码段能够实现分段式的执行,重新开始的地方是yield关键字指定的,一次一定会跑到一个yield对应的地方。 协程的原理是将事件回调进行了隐藏封装,本质上还是异步非阻塞。利用同步的思想进行异步编程。 协程的工作 协程的调度是在一个
阅读全文
摘要:自连接的用法 面向集合思维 增强” 面向集合 " SQL这个特性, 自连接用两张表用运算符连接起来,将每张表视为集合 等值自连接 = 非等值自连接 > , < , <> 例子:在一张表中查询价格相等的不同商品 select distinct p1.name, p1.price from produc
阅读全文
摘要:附加功能和Redis客户端 慢查询 所谓慢查询日志就是系统在命令执行前后计算每条命令的执行时间,当超过预设阀值,就将这条命令的相关信息(例如:发生时间,耗时,命令的详细信息)记录下来。 典型的数据库有MySQL 但是redis一条命令执行的过程可以细分为四步 1 发送命令 2 命令排队 3 命令执行
阅读全文

浙公网安备 33010602011771号