2024-01-23
主从数据不一致主从数据不一致,就是指客户端从从库中读取到的值和主库中的最新值并不一致。
其实这是因为主从库间的命令复制是异步进行的。
延迟两个原因
主从库间的网络可能会有传输延迟,所以从库不能及时地收到主库发送的命令,从库上执行同步命令的时间就会被延后。
即使从库及时收到了主库的命令,但是,也可能会因为正在处理其它复杂度高的命令(例如集合操作命令)而阻塞。...
阅读全文
2024-01-23
##数据结构
Redis数据结构String(字符串)、List(列表)、Hash(哈希)、Set(集合)和Sorted Set(有序集合)
Redis 底层数据结构简单字符串、双向链表、压缩列表、哈希表、跳表和整数数组
对映关系String: 简单动态字符串
List: 双向链表、压缩列表
Hash: 压缩列表、哈希表
Sorted Set: 压缩列表、跳...
阅读全文
2024-01-23
哨兵机制哨兵机制是实现主从库自动切换的,主要解决主从复制模式下故障转移。比如下面的问题
主库真的挂了吗?该选择哪个从库作为主库?怎么把新主库的相关信息通知给从库和客户端呢?
哨兵主要任务就是三个任务:监控、选主(选择主库)和通知
监控监控就是指哨兵进程在运行时,周期给所有的主从库发送PING命令,检测它们是否在线运行。如果从库没有在规定的时间没有响应ping...
阅读全文
2024-01-23
Redis持久化主要两大机制,AOF日志和RDB快照。
AOF日志特点AOF日志是写后日志,先执行完命令然后在写入内存,然后才记录日志。是因为先让系统执行命令,只有命令执行成功才会被写到日志中。这样避免出现记录错误命令。
AOF还有一个好处: 它是命令执行后才记录日志,不会阻塞当前的写操作。
两个潜在风险点:
刚执行完命令,没有记日志就宕机,这个命令就会有...
阅读全文
2024-01-23
String类型结构保存数据结构(SDS)保存数据包含字符串类型,String类型简单字符串(simple Dynamic String, SDS)结构保存,len、alloc、buf。len、alloc是额外的开销。
buf:字节数组,保存实际的数据。在字节最后加”\0”表示结束,额外占用1字符。
len:占4字节,表示buf的已用长度。
alloc...
阅读全文
2024-01-23
主从同步Redis 高可靠性
数据尽量少丢失
AOF和RDB保证数据少量丢失
服务经常少中断
增加副本的冗余,将一份数据同时保存在多个实例上
Redis 提供了主从同步模式,保证数据副本的一致,主从库之间采用的是读写分离的方式。
读操作:主库从库都可以接收
写操作: 首先到主库执行,然后主库将写操作同步到从库
为什么要采用读写分离的方式呢?在三台...
阅读全文
2024-01-23
主流CPU架构一个CPU处理器中有多个运行核心,一个运行核心称为一个物理核,每个物理核拥有私有一级缓存和二级缓存。一级缓存包括一级指令缓存和一级数据缓存。
每个物理核都可以运行应用程序。物理核的私有缓存,指缓存空间只能被当前的这个物理核使用,其他的物理核无法对这个核的缓存空间进行数据存取。
每个物理核访问一级和二级缓存超级快,存储只有 KB 级别。
不同的物...
阅读全文
2024-01-23
声明: 本人搭建openvpn目的是用于腾讯云服务和轻量级服务之间内网打通。
制作证书安装easy-rsa和openvpn软件包
1yum install openvpn easy-rsa
创建目录,并复制easy-rsa 目录
123//注意easy-rsa的版本号,你的有可能不一样cp /usr/share/doc/easy-rsa-3.0.8/var...
阅读全文
2024-01-23
基本原理主备数据都是使用binlog进行主备同步数据。
备用节点建议设置成只读(readonly)模式,这样做,有以下几个考虑:
有时候一些运营类的查询语句会被放到备库上去查,设置为只读可以防止误操作;
防止切换逻辑有 bug,比如切换过程中出现双写,造成主备不一致;
可以用 readonly 状态,来判断节点的角色。
备用节点设置成只读,也能执行与主库...
阅读全文
2024-01-23
主备延迟如何查询主备延迟时间?在备库上执行 show slave status 命令,它的返回结果里面会显示seconds_behind_master,用于表示当前备库延迟了多少秒。
seconds_behind_master 的计算方法是这样的:
每个事务的 binlog 里面都有一个时间字段,用于记录主库上写入的时间;
备库取出当前正在执行的事务的时间...
阅读全文