Redis-入门笔记-15min带你一览redis
部(go to top)回到顶部(go to top)回到顶部(go to top)回到顶部(go to top)https://redis.io/clients ,redis-py是redis官方网站首选的python客户端开发包,本人只会点点python,所以从这个入门。
redis-py的github地址:https://github.com/andymccurdy/redis-py
回到顶部(go to top)回到顶部(go to top)回到顶部(go to top)回到顶部(go to top)
8 redis的持久化
redis的高性能是因为数据都在内存中,如果数据库重启,则所有数据都会丢失,那么如何进行数据持久化呢?- RDB持久化
- 默认支持,在指定的时间内,把内存的数据写入磁盘
- AOF持久化
- 以日志的形式记录每一个操作,启动的时候,重新执行所有log
- 无持久化
- 不进行持久化,则认为redis的作用为缓存,无需持久化数据
- RDB与AOF同时使用
8.1 RDB持久化
- 优势
- redis数据库仅包含一个文件,对于文件备份是非常方便的,如果系统出现灾难时,较容易恢复
- 灾难恢复时,备份文件较为容易单独转移到其他存储介质
- 数据量很大的时候,启动速度快
- 劣势
- 不能够保证数据无丢失,数据丢失时间 = 当前时间-最近备份时间
- 子进程完成持久化工作,如果数据集很大的时候,可能会造成短时间内redis所在服务器停止对外服务
- 配置
- RDB默认配置文件中就有,可以查看redis.conf文件中关于save的设置
-
- save 900 1 :900秒内至少有1个数据变化,则进行持久化
-
- RDB默认配置文件中就有,可以查看redis.conf文件中关于save的设置
-
-
-
- save 300 10 :300秒内至少有10个数据发生变化,则进行持久化
- save 60 10000 : 60秒内至少有1w个数据发生变化,则进行持久化
- dbfilename 则是命名当前持久文件的名字
- dir,则是定义当前持久化文件的存放路径
-
-
8.2 AOF持久化
- 优势
- 更高的数据安全性
- 每秒同步,最高丢失1s数据
- 每操作数同步,每次发生数据的变化都会立即记录到磁盘中,性能最低
- append追加文件备份
- 备份过程中出现问题,不会破坏之前的日志备份
- 如果写入了一半数据,然后出现系奔溃的问题,在redis下一次启动之前,可以通过redis_check_aof工具解决数据一致性问题
- 如果日志备份过大
- redis会自动启动日志重写机制,append过程中,会把备份数据写入到老的备份文件中,并且会用一个新文件,记录此期间的修改数据语句
- AOF包含一个格式清晰的数据修改操作语句的日志文件
- 劣势
- 相同数量的数据集文件,比RDB的要打
- AOF效率低于RDB
- 需要人员配置,非默认配置
- 配置
- 在redis.conf文件中,配置一下内容
- appendonly yes:启动appendonly,开启AOF备份
- appendfilename "appendonly.aof" :AOF备份的文件名
- appendfsync always :每个修改操作同步备份一次
- appendfsync everysec:1s同步备份一次
- appendfsync no :不同步
- 测试配置
- 简单测试案例
- redis中配置AOF,选择每操作一次就备份的机制,增删改数据后,执行flushall,然后通过备份文件来恢复数据到flushall之前
- 步骤
- 启动AOF,选择每操作一次就备份
- appendonly yes
- appendfsync always
- 重启redis
- /usr/local/redis/bin/redis-cli shutdown
- /usr/local/redis/bin/redis-server /etc/redis.conf
- 造数据
- 执行flushall
- 处理备份文件
- vim /usr/local/redis/appendonly.aof
- 删除flushall的操作记录
- 重启数据库
- /usr/local/redis/bin/redis-cli shutdown
- /usr/local/redis/bin/redis-server /etc/redis.conf
- 检查数据