创建网站目录应注意,UE做的比较好的网站,建筑设计公司起名,网页设计与网站规划目录
redis实现持久化
RDB
触发机制-定期方法
定期-手动触发
save
bgsave
定期-自动触发
AOF
开启AOF功能
刷新缓冲区策略
重写机制
混合持久化
Redis事务
事务相关的命令
MULTI
EXEC
DISCARD
WATCH redis实现持久化
RDB
RDB叫做Redis数据备份文件#xf…目录
redis实现持久化
RDB
触发机制-定期方法
定期-手动触发
save
bgsave
定期-自动触发
AOF
开启AOF功能
刷新缓冲区策略
重写机制
混合持久化
Redis事务
事务相关的命令
MULTI
EXEC
DISCARD
WATCH redis实现持久化
RDB
RDB叫做Redis数据备份文件也被叫做Redis数据快照。简单来说就是把内存中的所有数据都记录到磁盘中。当Redis实例故障重启后从磁盘读取快照文件恢复数据。快照文件称为RDB文件默认是保存在当前运行目录
触发机制-定期方法
定期-手动触发
通过redis客户端执行特定的命令来触发快照生成
save
执行save的时候redis就会全力以赴的执行“快照生成”操作此时就会阻塞redis的其他客户端的命令一般不建议使用save
bgsave
运作流程 1.执行bgsave命令, Redis 父进程判断当前进是否存在其他正在执行的子进程如RDB/AOF子进星如果存在bgsave命令直接返回。 2.父进程执行fork创建子进程fork 过程中父进程会阻塞通过info stats命令查看latest_fork_usec 选项,可以获取最近一次fork操作的耗时单位为微秒。 3.父进程fork完成后bgsave命令返回Background saving started信息并不再阻塞父进程可以继续响应其他命令。 4.子进程创建RDB文件根据父进程内存生成临时快照文件。完成后对原有文件进行原子替换。执行lastsave命令可以获取最后-次生成RDB的时间对应info统计的rdb_ last_save_time选项。 5.进程发送信号给父进程表示完成父进程更新统计信息。
定期-自动触发
在redis配置文件中设置一下让redis每隔多长时间/没产生多少次修改就触发 RDB问题不能实时的持久化保存数据在两次生成快照之间实时的数据可能会随着重启而丢失 AOF
类似于mysql的binblog就会把用户的每个操作都记录到文件中。当redis重新启动的时候就会读取这个aof文件中的内容用来恢复数据。
开启AOF功能
默认此功能是关闭的修改配置文件来开启aof功能 刷新缓冲区策略
1、AOF 机制并非是直接让工作线程把数据写入硬盘而是先写入一个内存中的缓冲区积累到一定数量的时候再统一写入硬盘
2、AOF 每次是把新的操作命令顺序写入原有文件的末尾输入顺序写入这样的方式相比于随机访问的速度要快很多的
redis 给出了一些选项让我们可以根据实际情况来决定怎么取舍——缓冲区刷新策略
1、always 每操作一次就保存一次频率是最高的数据可靠性最高性能最低.
2、everysec 每秒保存一次频率低一些数据可靠性降低性能会提高.
3、 no 跟随系统的同步策略频率最低数据可靠性最低性能是最高的.
重写机制
此机制能够针对aof文件进行整理操作这个整理就是能够剔除其中的冗余操作并且合并一些操作达到给aof文件瘦身的效果
Redis也会在触发阈值时自动去重写AO文件阈值也可以在redis.conf中配置 流程 混合持久化
结合了rdb和aof的特点按照aof的方式每一个请求/操作都记录入文件在触发aof重写后就会把当前内存的状态按照rdb的二进制格式写入到新的aof文件中后续再进行的操作仍然是按照aof文本的方式追加到文件后面
Redis事务
本质上是在服务器上搞了一个“事务队列”每次客户端在事务中进行了一个操作都会把命令先发给服务器放到“事务队列”中但是并不会立即执行而是会在真正收到EXEC命令之后才真正执行队列中的所有操作 redis事务和mysql事务的区别 弱化的原子性redis没有“回滚机制”只能做到这些操作“批量执行”不能做到“一个失败就恢复到初始状态” 不保证一致性不涉及“约束”也没有回滚。MySQL的一致性体现的是运行事务前和运行后结果都是合理有效的不会出现中间非法状态 不需要隔离性也没有隔离级别因为不会并发执行事务redis单线程处理请求 不需要持久性是保存在内存的是否开启持久化是redis-server自己的事情和事务无关 事务相关的命令
MULTI
开启事务
EXEC
执行事务
DISCARD
放弃当前事务
WATCH
监控某个key是否在事务执行之前发生了改变