Redis事务和持久化
-
Redis服务器接受客户端命令
-
检查客户端是否处于事务状态
-
是,则将命令放入事务队列中
-
向客户端返回QUEUED字符串(表示命令已入事务列队)
-
-
否,则直接执行命令
-
向客户端返回命令执行结果
-
-
Redis事务错误
-
调用EXEC之前的错误 (语法错误/事务回滚)
-
有可能是由于语法有误导致,也可能是由于内存不足导致
-
只要出现某个命令无法成功写入缓冲队列的情况,redis 都会进行记录,在客户端调用EXEC 时,redis 会拒绝执行这一事务
-
-
调用EXEC之后的错误(数据类型错误/事务不回滚)
-
redis 不会理睬这些错误,而是继续向下执行事务中的其他命令
-
对于应用层面的错误,并不是 redis 自身需要考虑和处理的问题,所以一个事务中如果某一条命令执行失败,并不会影响接下来的其他命令的执行
-
watch命令使用
Redis事务中watch命令的作用是监视key是否被改动(可同时监视多个key)
-
如果 watch 监视的 key 在执行事务 exec 命令之前没有被改动,则 watch 命令不做任何操作,事务可以正常执行
-
如果 watch 监视的 key 在执行事务 exec 命令之前有被改动过,则在执行事务 exec命令时就会返回 nil,事务无法执行
可以利用 watch 命令实现类似于数据库“乐观锁”的效果
Redis持久化
为什么需要持久化
Redis对数据的操作基于内存,意外情况会导致Redis中的数据丢失,无法恢复。持久化机制使得Redis在下次重启时可以利用之前持久化的文件进行数据恢复。
以下二者同时使用
RDB
-
RDB(Redis DataBase)
把当前数据生成快照保存在硬盘上
可以手动触发:save和bgsave
也可以自动触发:bgsave
-
优点
紧凑的二进制压缩文件,是Redis在某个时间点的全部数据快照。所以使用RDB恢复数据的速度远远比AOF的快。
-
缺点
每次进行
bgsave
操作都要执行fork操作创建子进程,属于重量级操作,频繁执行成本过高,所以无法做到实时持久化,或者秒级持久化。
AOF
AOF (Append Only File,即只允许追加不允许改写的文件) 方式就是将执行过的写指令记录下来 (在数据恢复时按照从前到后的顺序再将指令都执行一遍)
数据回复完整度高
通过配置 redis.conf 中的 appendonly yes 可以打开 AOF 功能 如有写指令 (如SET 等),redis 就会被追加到 AOF 文件的末尾;默认的 AOF 持久化策略是每秒钟fsync 一次 (fsync 是指把缓存中的写指令记录到磁盘中) 数据恢复完整度高 redis 提供 redis-check-aof 工具,可以用来进行 AOF 文件修复· redis 提供 AOF 文件重写 (rewrite) 机制 (AOF 文件压缩) 误操作执行 flushall 导致数据全部被清空,可以通过 AOF 文件恢复 (AOF 未被重写)
-
不足
AOF 文件要比 RDB 文件体积大,AOF 方式数据恢复速度要慢于 RDB 方式
-
原理
Redis慢查询
慢查询就是系统在命令执行前后计算每条命令的执行时间,,当超过预设闽值就将这条命令的相关信息 (如发生时间、耗时、命令的详细信息)记录到慢查询日志中
慢查询的作用是帮助开发和运维人员定位和优化系统存在的慢操作 慢
-
配置项
-
slowlog-log-slower-than (慢查询预设值)
单位是微妙 (1秒=1000毫秒=1000000微秒) ,默认值 10000 微妙;假如执行了一条“很慢”的命令如果它的执行时间超过了10000 微秒,那么它将被记录在慢查询日志中。
-
slowlog-max-len (慢查询日志最大记录数)
Redis 使用了一个列表来存储慢查询日志,当慢查询日志列表已经处于最大长度时,列表中最早插入的那条记录将被移除。
-
-
Redis慢查询日志管理命令
虽然慢查询日志存放在 Redis 内存列表中,但是 Redis 并没有暴露这个列表的键,而是通过一组命令来实现对慢查询日志的访问和管理
-
获取慢查询日志
slowlog get [n]
-
获取慢查询日志列表当前长度
slowlog len
-
慢查询日志重置
__EOF__

本文链接:https://www.cnblogs.com/3-DG/p/17753431.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现