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个数据变化,则进行持久化
        • 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
        • 检查数据