一. RDB 快照持久化 (默认)

  1. rdb机制,在满足redis.conf中配置的持久化策略后, 自动持久化数据, 默认存储在dump.rdb文件中
  2. 策略 :

    save 900 1 : 900秒内,一个key更改就持久化

    save 300 10 : 300 秒内, 10 个key更改就持久化

    save 60 10000:
  3. rdb过程:

    redis调用fork函数, 拷贝当前redis进程的作为子进程, 改子进程把内存中的数据写成文件, 然后替换旧的dump.rdb
  4. 手动触发rdb快照 :

    (1) save : 让当前redis进程进行快照操作, 会阻塞其他请求

    (2) bgsave ; 用fork后的子进程进行快照操作
  5. redis-check-dump : 修复dump.rdb文件
  6. rdb方式的缺点 :

    如果一次rdb后发生数据修改,但还未触发下一次rdb持久化时就宕机, 则会丢失这期间发生改变的数据

二. AOF日志文件持久化

  1. redis默认不开启AOF持久化, 需要修改appendonly yes开启备份
  2. 如果同时开启了rdb与aof持久化, 则只会触发aof持久化
  3. AOF默认每秒执行一次日志记录, 保存到appendonly.aof文件中, 该文件可以直接查看
  4. AOF的执行策略 :

    (1)appendfsync always 每次都会执行

    (2)appendfsync everysec 默认 每秒执行一次同步操作(推荐,默认)

    (3)appendfsync no不主动进行同步,由操作系统来做,30秒一次
  5. aof日志文件重写

    aof文件有自己的重写策略, 因为aof只是记录了每次的操作命令, 如果不进行重写, 这个文件的大小会随着操作次数的增加而变得非常庞大, 也不利于恢复数据,所以要定期重写该文件

    (1)重写流程 : aof自动生成set命令等插入命令, 来描述当前内存中的数据内容, 这些命令覆盖原来的aof文件

    (2)重写策略 :

    (a) auto-aof-rewrite-percentage 100 : 当目前aof文件大小超过上一次重写时的aof文件大小的百分之多少时会再次进行重写,如果之前没有重写,则以启动时的aof文件大小为依据

    (b)auto-aof-rewrite-min-size 64mb : 文件增加到64m后重写

    (c)手动执行bgrewriteaof进行重写
[注]:所谓的“重写”其实是一个有歧义的词语, 实际上, AOF 重写并不需要对原有的 AOF 文件进行任何写入和读取, 它针对的是数据库中键的当前值。

三. 动态切换redis持久方式

  1. CONFIG SET appendonly yes : 从RDB切换到AOF
  2. CONFIG SET save ""(可选)
 [注]:如果想把正在运行的redis数据库,从RDB切换到AOF,建议先使用动态切换方式,再修改配置文件,重启数据库。(不能自己修改配置文件,重启数据库,否则数据库中数据就为空了。)

四. config命令

  1. 使用config set可以动态设置参数信息,但在服务器重启之后就失效了。

    config set appendonly yes

    config set save "90 1 30 10 60 100"
  2. 使用config get可以查看所有可以使用config set命令设置的参数

    config get * : 获取所有设置的参数值
  3. config rewrite命令对启动 Redis 服务器时所指定的 redis.conf 文件进行改写(Redis 2.8 及以上版本才可以使用),主要是把使用config set动态指定的命令保存到配置文件中。
[注]:config rewrite命令对 redis.conf 文件的重写是原子性的, 并且是一致的: 如果重写出错或重写期间服务器崩溃, 那么重写失败, 原有 redis.conf 文件不会被修改。 如果重写成功, 那么 redis.conf 文件为重写后的新文件。

五.安全认证

  1. 设置数据库密码 (密码认证)

    (1)修改配置requirepass password

    (2)验证密码auth password

    (3)jedis.auth(String passed) 在链接时进行验证
  2. bind参数(可以让数据库只能在指定IP下访问)(主机认证)

    bind 127.0.0.1
  3. 重命名命令,防止意外的flushall输入

    (1)修改命令的名称 : rename-command flushall cleanall

    (2)禁用命令 : rename-command flushall ""

6. redis持久化,认证的更多相关文章

  1. Redis持久化存储与复制功能简述

    一.分布式系统基础理论 分布式系统的两个基础理论: 1.CAP理论 如图: Consistency(强一致性):数据一致更新,所有数据变动都是同步的.Availability(可用性):好的响应性能. ...

  2. SpringBoot整合Shiro+MD5+Salt+Redis实现认证和动态权限管理|前后端分离(下)----筑基后期

    写在前面 在上一篇文章<SpringBoot整合Shiro+MD5+Salt+Redis实现认证和动态权限管理(上)----筑基中期>当中,我们初步实现了SpringBoot整合Shiro ...

  3. [翻译自官方]什么是RDB和AOF? 一文了解Redis持久化!

    ​概述 本文提供Redis持久化技术说明,  建议所有Redis用户阅读. 如果您想更深入了解Redis持久性原理机制和底层持久性保证, 请参考文章 揭秘Redis持久化: http://antire ...

  4. redis持久化RDB和AOF

    Redis 持久化: 提供了多种不同级别的持久化方式:一种是RDB,另一种是AOF. RDB 持久化可以在指定的时间间隔内生成数据集的时间点快照(point-in-time snapshot). AO ...

  5. Redis持久化

    Redis持久化 快照(默认) 将内存中的数据以快照的方式写入到二进制文件中,默认文件名是dump.rdb. 配置自动化做快照持久化(如redis在n秒内如果超过m个key被修改就自动做快照) sav ...

  6. Redis设置认证密码 Redis使用认证密码登录 在Redis集群中使用认证密码

    Redis默认配置是不需要密码认证的,也就是说只要连接的Redis服务器的host和port正确,就可以连接使用.这在安全性上会有一定的问题,所以需要启用Redis的认证密码,增加Redis服务器的安 ...

  7. redis——持久化篇

    众所周知,redis是内存数据库,它把数据存储在内存中,这样在加快读取速度的同时也对数据安全性产生了新的问题,即当redis所在服务器发生宕机后,redis数据库里的所有数据将会全部丢失. 为了解决这 ...

  8. redis持久化机制

    redis持久化 redis的数据存在内存中,所以存取性能好.但是存在内存中的数据存在一个问题,一旦机器重启,内存数据消失.为了解决这个问题,redis支持持久化.持久化就是为了解决内存数据丢失时恢复 ...

  9. Redis-cluster集群【第二篇】:redis持久化

    Redis持久化原理: Redis支持两种持久化:RDB和AOF模式 一.名词解释: RDB:持久化可以在指定的时间间隔内生成数据集的时间点快照(point-in-time snapshot).AOF ...

  10. Redis持久化实践及灾难恢复模拟

    参考资料: Redis Persistence http://redis.io/topics/persistence Google Groups https://groups.google.com/f ...

随机推荐

  1. Ultra Pull To Refresh下拉刷新

    http://www.jcodecraeer.com/a/opensource/2014/1205/2111.html

  2. HDU5889 Barricade(最短路)(网络流)

    Barricade Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total S ...

  3. Visual Studio 2012 update3 安装后的问题及解决

    安装之后可能遇到的问题: 安装完时,打开Help Viewer时,出现了一个错误提示:”a content file required by the help viewer is missing or ...

  4. soap的简单实现(PHP)

    1.非wsdl模式 (1)函数文件 testphp/ServiceFunctions.class.php <?php /** * @author 左小兵 * */ class ServiceFu ...

  5. dede数据库文件导入失败的可能原因是数据表前缀不同,这里的失败指的是mysql添加了数据,但后台不显示

    利用dede提供的数据备份还原功能,还原数据,出现失败的可能原因是数据表前缀不同,改过来就可以了

  6. shell中[[]]和[]的主要区别

    [ ] 实际上是bash 中 test 命令的简写.即所有的 [ expr ] 等于 test expr 对 test 命令来说, 用 -eq 要进行数字比较,而你此时传入字符串,就报错了. [[ e ...

  7. 二十四种设计模式:提供者模式(Provider Pattern)

    提供者模式(Provider Pattern) 介绍为一个API进行定义和实现的分离.示例有一个Message实体类,对它的操作有Insert()和Get()方法,持久化数据在SqlServer数据库 ...

  8. Oracle数据库——SQL高级查询

    一.涉及内容 1.掌握SELECT语句的多表连接查询. 2.掌握SELECT语句的子查询. 二.具体操作 (一)根据Oracle数据库scott方案下的emp表和dept表,完成下列操作: 1.查询所 ...

  9. python pydoc

    pydoc是Python自带的模块,主要用于从python模块中自动生成文档,这些文档可以基于文本呈现的.也可以生成WEB 页面的,还可以在服务器上以浏览器的方式呈现! windows powersh ...

  10. [Android设计模式]Android退出应用程序终极方法

    如何干净彻底地退出Android应用程序,是很多开发者的心头痒.如何干净地关闭所有已打开的Activity? 如何关闭指定的Activity? 如何关闭一类Activity? 这里,我们提出一种通过实 ...