呼呼呼!第四天作者早上为了不吵醒舍友,没收拾书包就走了,早上!今天就开始使用Redis了,加油!
SELECT+库索引 切换数据库
Redis事务
一致性更深方面就是数据库状态在事务提交前后保持不变!
multi单独一行,直接开始事务。然后所有的操作都会被放到队列中,不会被立即执行。
Redis持久化概要
AOF能确保事务的持久性!为什么呢?下文就讲到啦! 上面的命令作者没有用,就直接跑到redis.conf文件修改去了,理论上来说二者皆可。
RDB方式:先自定义保存目录,设置保存文件.rbd名称。
基于某些条件才能触发RDB持久化方式!
Redis数据持久化
一个是追加文件,一个是快照。
日志记录写命令set....,不记录get等读取命令!AOF缓冲区在内存当中,每隔一段时间(很短)缓冲区的内容都会写入到日志文件中,这样就实现了持久化。
啊,作者遇到错误了,redis服务打不开,忙碌了半个小时,气死了!!!
给大家建议,遇到错误不要怕,不要烦,现在gpt很强,你只需要跟着做就行。对于redis,最好先在redis.conf配置文件中找logfile,默认是“ ”,也就是不产生log日志文件,那错误就难找了呀!所以我们先修改一波,我直接放在当前目录redis-7.2.1里了,如下:
redis.conf下面就是新配置的Log日志文件,然后查看,交给gpt,发现重点是:
# Warning: Could not create server TCP listening socket 0:0:0:0:6379: Name or service not known
# Failed listening on port 6379 (tcp), aborting.
这些日志条目表示Redis尝试在地址0:0:0:0
的端口6379
上创建TCP监听套接字时失败了。涉及到地址问题: 0:0:0:0
看起来像一个不正确的IPv6地址。你可能需要确保你的redis.conf
文件中的bind
配置项正确地设置为IPv4地址0.0.0.0
或其他有效的地址。作者发现,bind确实写成0:0:0:0的形式了,不知道为什么会这样,反正修改后成功运行服务了!
新版好像不是单独的.aof文件了,作者的情况是这样的:
在redis7中貌似被设为文件夹形式,然后就是模拟数据丢失,在Redis中使用flushall命令,然后发现.aof存储了flushall命令:
所以说,要恢复原来的数据,就要删除.aof文件中的刷新指令,否则最后同样会被刷新,没有什么意义。vim修改过后,模拟宕机,把redis重启,结果居然tm真还原了!这下真的是永久化存储了!
注意是二进制,不能查看,.aof是文本形式,虽然看不懂但是可以查看可以修改。核心概念是快照
如果系统出错,重新启动的时候就会读.rdb文件,从而恢复数据。
实时存储,使用AOF;定期存储,使用RDB。
Redis支持两种主要的持久化方法:RDB (Snapshotting) 和 AOF (Append-Only File)。这两种持久化方式旨在满足不同的需求和场景。下面是它们的主要特点和适用的场景:
RDB (Snapshotting)
特点:
- RDB执行快照持久化,它将整个内存中的数据集保存到磁盘中,生成一个二进制文件(例如
dump.rdb
)。- 它可以配置为在指定的时间间隔内,当满足指定数量的写操作时执行。
- 文件小,恢复快,非实时
应用场景:
-
备份 & Disaster Recovery: 如果你需要定期备份你的Redis数据,RDB是一个非常好的选择。你可以很方便地将RDB文件备份到其他服务器或存储服务上。
-
快速数据恢复: 由于RDB是一个单独的文件,Redis启动时,使用RDB恢复数据会比AOF要快得多。
-
数据分析: 你可以很容易地将RDB文件转移到其他服务器,然后在那里执行数据分析操作,而不会影响生产Redis服务器的性能。
AOF (Append-Only File)
特点:
AOF持久化会记录服务器接收到的所有写操作命令,并将它们写入AOF文件。当Redis重启时,它可以通过重新执行文件中的命令来重建数据集。
AOF文件是一个纯文本文件,可以轻松地读取或修复。
Redis提供了三种不同的同步策略:每秒同步、每写入操作同步、或者完全不同步。
文件大,恢复慢,实时
应用场景:
-
数据安全性: 如果你不能承受数据丢失,AOF可能是一个更好的选择。通过配置为每次写入操作都同步,可以确保不会丢失任何数据。
-
数据完整性: AOF会记录每一次写操作,所以即使在发生故障时,你也只会丢失最近的一次写操作。
-
可解释的日志: 由于AOF是一个纯文本文件,它可以被审查和解释,帮助诊断问题。
总结
-
如果需要最高级别的数据安全性,应使用AOF。
-
如果对数据恢复速度有要求,RDB可能是更好的选择。
-
在许多实际应用中,人们经常同时使用RDB和AOF,以便结合两者的优点。例如,RDB可以为灾难恢复提供快照,而AOF可以确保数据完整性。
如果同时使用:
- 在Redis故障恢复时,AOF会优先于RDB,因为AOF提供更高的数据完整性。
- 事实上,当两者都被配置时,AOF是主要的持久化策略,而RDB则可以被看作是数据备份或迁移的策略。