Redis管理之持久化
Redis的一大重要特征就是支持持久化。
Redis提供了两种不同的持久化方式:RDB和AOF。 RDB持久化可以在指定的时间间隔内生成数据集的快照。由于是定期的生成数据集的快照,所以,如果服务器出现异常停止的时候,那可能就会造成上一次备份后面的数据没有被保存下来。
AOF持久化以纯文本的方式记录了所有的操作命令。aof支持不同的fsync策略,可以选择每秒fsync,默认是每秒。如果在写的时候出现宕机,也可以通过redis-check-aof工具来修复aof备份文件。
这两种持久化方式也可以同时使用。
持久化配置
RDB方式:在默认情况下,Redis将数据库快照保存在名字为dump.rdb的二进制文件中,也可以通过配置文件配置。
可以通过配置文件来决定RDB保存的条件,也可以通过SAVE或者BGSAVE命令来显示的执行保存操作。
例如:save 60 1000的意思是 60秒内至少有1000个键被改动过的话就自动保存一次数据集。
默认情况下是启用RDB方式持久化的。
save 900 1
save 300 10
save 60 10000
默认情况下,没900秒内有一个key被改动就保存,没300秒内有10个key被改动就保存,每60秒内有1万个key被改动就保存。
dbfilename dump.rdb:指定了保存的文件名。
dir ./:指定了保存的路径为当前目录,更改为/usr/local/redis
AOF方式:aof方式的启动只需要配置一个appendonly yes的选项就可以。
aof支持下面几种持久化策略:
1、每次有新命令就执行一次fsync
2、没秒执行一次fsync(默认)
3、从不fsync。
appendonly no:默认情况下没有开启,修改为yes就是开启。
appendfilename "appendonly.aof":默认的持久化文件名称。
# appendfsync always
appendfsync everysec:默认开启这个,每秒fsync一次。
# appendfsync no
RDB方式测试
[root@localhost 13:14 /usr/local/redis]# ll
总用量 276
-rw-rw-r--. 1 root root 127778 7月 24 22:58 00-RELEASENOTES
-rw-rw-r--. 1 root root 53 7月 24 22:58 BUGS
-rw-rw-r--. 1 root root 1815 7月 24 22:58 CONTRIBUTING
-rw-rw-r--. 1 root root 1487 7月 24 22:58 COPYING
drwxrwxr-x. 6 root root 4096 8月 15 19:35 deps
-rw-rw-r--. 1 root root 11 7月 24 22:58 INSTALL
-rw-rw-r--. 1 root root 151 7月 24 22:58 Makefile
-rw-rw-r--. 1 root root 4223 7月 24 22:58 MANIFESTO
-rw-rw-r--. 1 root root 20530 7月 24 22:58 README.md
-rw-rw-r--. 1 root root 57765 9月 3 11:32 redis.conf
-rwxrwxr-x. 1 root root 271 7月 24 22:58 runtest
-rwxrwxr-x. 1 root root 280 7月 24 22:58 runtest-cluster
-rwxrwxr-x. 1 root root 281 7月 24 22:58 runtest-sentinel
-rw-rw-r--. 1 root root 7606 7月 24 22:58 sentinel.conf
drwxrwxr-x. 3 root root 4096 9月 9 12:55 src
drwxrwxr-x. 10 root root 4096 7月 24 22:58 tests
drwxrwxr-x. 8 root root 4096 7月 24 22:58 utils
[root@localhost 13:14 /usr/local/redis]# redis-cli
127.0.0.1:6379> set name zhangsan
OK
127.0.0.1:6379> shutdown save
not connected> exit
[root@localhost 13:18 /usr/local/redis]# ll
总用量 280
-rw-rw-r--. 1 root root 127778 7月 24 22:58 00-RELEASENOTES
-rw-rw-r--. 1 root root 53 7月 24 22:58 BUGS
-rw-rw-r--. 1 root root 1815 7月 24 22:58 CONTRIBUTING
-rw-rw-r--. 1 root root 1487 7月 24 22:58 COPYING
drwxrwxr-x. 6 root root 4096 8月 15 19:35 deps
-rw-r--r--. 1 root root 177 9月 9 13:18 dump.rdb
-rw-rw-r--. 1 root root 11 7月 24 22:58 INSTALL
-rw-rw-r--. 1 root root 151 7月 24 22:58 Makefile
-rw-rw-r--. 1 root root 4223 7月 24 22:58 MANIFESTO
-rw-rw-r--. 1 root root 20530 7月 24 22:58 README.md
-rw-rw-r--. 1 root root 57765 9月 3 11:32 redis.conf
-rwxrwxr-x. 1 root root 271 7月 24 22:58 runtest
-rwxrwxr-x. 1 root root 280 7月 24 22:58 runtest-cluster
-rwxrwxr-x. 1 root root 281 7月 24 22:58 runtest-sentinel
-rw-rw-r--. 1 root root 7606 7月 24 22:58 sentinel.conf
drwxrwxr-x. 3 root root 4096 9月 9 12:55 src
drwxrwxr-x. 10 root root 4096 7月 24 22:58 tests
drwxrwxr-x. 8 root root 4096 7月 24 22:58 utils
[root@localhost 13:18 /usr/local/redis]#
发现,已经有dump.rdb文件了。
我们重新启动服务器查看:
[root@localhost 13:19 /usr/local/redis]# service redis start
Starting Redis server...
3925:C 09 Sep 13:20:03.909 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
3925:C 09 Sep 13:20:03.910 # Redis version=4.0.1, bits=32, commit=00000000, modified=0, pid=3925, just started
3925:C 09 Sep 13:20:03.910 # Configuration loaded
[root@localhost 13:20 /usr/local/redis]# redis-cli
127.0.0.1:6379> keys *
1) "name"
127.0.0.1:6379>
可以看到,此时的keys还是存在的。
但是,如果我们把dump文件移动到别的地方呢?
[root@localhost 13:21 /usr/local/redis]# service redis start
Starting Redis server...
3948:C 09 Sep 13:22:03.371 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
3948:C 09 Sep 13:22:03.371 # Redis version=4.0.1, bits=32, commit=00000000, modified=0, pid=3948, just started
3948:C 09 Sep 13:22:03.371 # Configuration loaded
[root@localhost 13:22 /usr/local/redis]# redis-cli
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379>
发现,keys又不存在了,如果我们把dump文件在拿回来,又可以继续读取到。这就可以用来实现备份和恢复了。
AOF方式测试
需要注意的是,当rdb方式和aof方式同时开启的时候,服务器重启会优先读取aof的文件。
修改配置文件如下:
appendonly yes
[root@localhost 13:32 /usr/local/redis]# redis-cli
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> set name lisi
OK
127.0.0.1:6379> set name wangwu
OK
127.0.0.1:6379> get name
"wangwu"
127.0.0.1:6379> shutdown
not connected> exit
[root@localhost 13:34 /usr/local/redis]# ll
总用量 284
-rw-rw-r--. 1 root root 127778 7月 24 22:58 00-RELEASENOTES
-rw-r--r--. 1 root root 91 9月 9 13:33 appendonly.aof
-rw-rw-r--. 1 root root 53 7月 24 22:58 BUGS
-rw-rw-r--. 1 root root 1815 7月 24 22:58 CONTRIBUTING
-rw-rw-r--. 1 root root 1487 7月 24 22:58 COPYING
drwxrwxr-x. 6 root root 4096 8月 15 19:35 deps
-rw-r--r--. 1 root root 175 9月 9 13:34 dump.rdb
-rw-rw-r--. 1 root root 11 7月 24 22:58 INSTALL
-rw-rw-r--. 1 root root 151 7月 24 22:58 Makefile
-rw-rw-r--. 1 root root 4223 7月 24 22:58 MANIFESTO
-rw-rw-r--. 1 root root 20530 7月 24 22:58 README.md
-rw-rw-r--. 1 root root 57765 9月 3 11:32 redis.conf
-rwxrwxr-x. 1 root root 271 7月 24 22:58 runtest
-rwxrwxr-x. 1 root root 280 7月 24 22:58 runtest-cluster
-rwxrwxr-x. 1 root root 281 7月 24 22:58 runtest-sentinel
-rw-rw-r--. 1 root root 7606 7月 24 22:58 sentinel.conf
drwxrwxr-x. 3 root root 4096 9月 9 12:55 src
drwxrwxr-x. 10 root root 4096 7月 24 22:58 tests
drwxrwxr-x. 8 root root 4096 7月 24 22:58 utils
[root@localhost 13:34 /usr/local/redis]#
查看appendonly.aof的文件内容:
[root@localhost 13:34 /usr/local/redis]# cat appendonly.aof
*2
$6
SELECT
$1
0
*3
$3
set
$4
name
$4
lisi
*3
$3
set
$4
name
$6
wangwu
[root@localhost 13:35 /usr/local/redis]#
重新启动服务器查看:
[root@localhost 13:36 /usr/local/redis]# redis-cli
127.0.0.1:6379> keys *
1) "name"
127.0.0.1:6379> get name
"wangwu"
127.0.0.1:6379>
这就完成了redis的持久化配置了 。
Redis管理之持久化的更多相关文章
- 超好用的Redis管理及监控工具,使用后可大大提高你的工作效率!
Redis做为现在web应用开发的黄金搭担组合,大量的被应用,广泛用于存储session信息,权限信息,交易作业等热数据.做为一名有10年以上JAVA开发经验的程序员,工作中项目也是广泛使用了Redi ...
- Shiro经过Redis管理会话实现集群(转载)
原文:http://www.myexception.cn/software-architecture-design/1815507.html Shiro通过Redis管理会话实现集群 写在前面 1.在 ...
- Redis管理及监控工具
Redis管理及监控工具 Redis做为现在web应用开发的黄金搭担组合,大量的被应用,广泛用于存储session信息,权限信息,交易作业等热数据.做为一名有10年以上JAVA开发经验的程序员,工作中 ...
- 推荐一个Redis管理工具
Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理.它支持字符串.哈希表.列表.集合.有序集合,位图,hyperloglogs等数据类型.内置复制.Lu ...
- Redis两种持久化方式(RDB&AOF)
爬虫和转载请注明原文地址;博客园蜗牛:http://www.cnblogs.com/tdws/p/5754706.html Redis所需内存 超过可用内存怎么办 Redis修改数据多线程并发—Red ...
- 完整的定时任务解决方案Spring集成+定时任务本身管理+DB持久化+集群
完整的定时任务解决方案Spring集成+定时任务本身管理+DB持久化+集群 maven依赖 <dependency> <groupId>org.quartz-scheduler ...
- Redis提供的持久化机制(RDB和AOF)
Redis提供的持久化机制 Redis是一种面向"key-value"类型数据的分布式NoSQL数据库系统,具有高性能.持久存储.适应高并发应用场景等优势.它虽然起步较晚,但发展却 ...
- php版redis插件,SSDB数据库,增强型的Redis管理api实例
php版redis插件,SSDB数据库,增强型的Redis管理api实例 SSDB是一套基于LevelDB存储引擎的非关系型数据库(NOSQL),可用于取代Redis,更适合海量数据的存储.另外,ro ...
- Redis学习手册(持久化)
一.Redis提供了哪些持久化机制: 1). RDB持久化: 该机制是指在指定的时间间隔内将内存中的数据集快照写入磁盘. 2). AOF持久化: 该机制将以日志的形式记录服务 ...
随机推荐
- Java 线程锁机制 -Synchronized Lock 互斥锁 读写锁
(1)synchronized 是互斥锁: (2)ReentrantLock 顾名思义 :可重入锁 (3)ReadWriteLock :读写锁 读写锁特点: a)多个读者可以同时进行读b)写者必须互斥 ...
- 听翁恺老师mooc笔记(4)--指针的应用场景
指针应用场景一:交换两个变量的值 在学习函数时,交换两个数的值,做一个swap函数,传递值进去,也可以将两个值交换过来,没问题,可是离开swap就没有用了,为什么?因为传进去的是两个值. #inclu ...
- C语言博客作业字符数组
一.PTA实验作业 7-12 IP地址转换 本题PTA提交列表 设计思路 3.代码截图 7-7删除字符串中的子串 本题PTA提交列表 设计思路 定义字符型数组s[81]储存主串,sub[81]储存子串 ...
- JAVA序列化基础知识
1.序列化是干什么的? 简单说就是为了保存在内存中的各种对象的状态(也就是实例变量,不是方法),并且可以把保存的对象状态再读出来.虽然你可以用你自己的各种各样的方法来保 存object states, ...
- Django 个性化管理员站点
from django.contrib import admin # Register your models here. from .models import Moment class Momen ...
- 201421123042 《Java程序设计》第10周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容. 2. 书面作业 本次PTA作业题集异常 1. 常用异常 结合题集题目7-1回答 1.1 自己以前编写的代码中经常出现 ...
- Spring Security 入门(1-4-2)Spring Security - 认证过程之AuthenticationProvider的扩展补充说明
1.用户信息从数据库获取 通常我们的用户信息都不会向第一节示例中那样简单的写在配置文件中,而是从其它存储位置获取,比如数据库.根据之前的介绍我们知道用户信息是通过 UserDetailsService ...
- 基于python的统计公报关键数据爬取
# -*- coding: utf-8 -*- """ Created on Wed Nov 8 14:23:14 2017 @author: 123 "&qu ...
- 为什么我不推荐你使用vue-cli创建脚手架?
最近在知乎看到一个问题,原问题如下: "很奇怪,为什么现在能找到自己手动创建vue脚手架的文章非常少,而且大家似乎对webpack4的热情并不高,对于想基于vue2.0+webpack4搭建 ...
- 百度echarts使用--y轴label数字太长难以全部显示
问题: 今天遇到个小问题,我们系统前端呈现使用了百度echarts.在绘制折线图的时候,因为数字过大,导致显示出现了问题. 解决方案: 左边y轴的值默认是根据我们填充进去的值来默认分割的,因为原始值就 ...