Part_three:Redis持久化存储
redis持久化存储
Redis是一种内存型数据库,一旦服务器进程退出,数据库的数据就会丢失,为了解决这个问题,Redis提供了两种持久化的方案,将内存中的数据保存到磁盘中,避免数据的丢失。
1.RDB持久化
redis提供了RDB持久化的功能,这个功能可以将redis在内存中的状态数据保存到磁盘
触发机制:
- 手动执行save命令
- 或者配置触发条件
配置文件:s21_rdb.conf
- 配置核心参数:
- dbfilename s21redis.rdb
- save 900 1
daemonize yes
port 6379
logfile /data/6379/redis.log
dir /data/6379 #定义持久化文件存储位置/data/6379
dbfilename s21redis.rdb #rdb持久化文件s21redis.rdb
bind 127.0.0.1 #redis绑定地址
#save 900 1 #
#save 200 10 #在200秒中内,超过10个修改类的操作
save 20 2 #- 创建文件夹 data/6379
[root@xujunk s21redis]#mkdir -p /data/6379/- 开启redis-server
[root@xujunk s21redis]#redis-server s21_rdb.conf 查看启动状态:
[root@xujunk s21redis]#ps -ef |grep redis
"""
root 22057 1 0 17:14 ? 00:00:00 redis-server 127.0.0.1:6379 """- 启动redis-cli端,并进行操作
[root@xujunk redis-4.0.10]#redis-cli
#咱们设置save 为20秒内 操作2次。所以这里最少操作2次
[root@xujunk redis-4.0.10]#set name haha
[root@xujunk redis-4.0.10]#set name2 haha
- 查看存储为位置:
[root@xujunk s21redis]#ls /data/6379
redis.log s21redis.rdb
#此时生成2个文件。
- 杀死所有redis
pkill -9 redis
- 再次进入redis
[root@xujunk s21redis]#redis-server s21_rdb.conf
[root@xujunk s21redis]#redis-cli
127.0.0.1:6379> keys *
1) "name2"
2) "name3"
#此时数据达到持久化存储
- 配置核心参数:
2.第二个机制:AOF机制
AOF机制,将你的修改类操作命令,追加到日志文件中
- 记录服务器执行的所有变更操作命令(例如set del等),并在服务器启动时,通过重新执行这些命令来还原数据集
AOF 文件中的命令全部以redis协议的格式保存,新命令追加到文件末尾,追加文件方式。
- 优点:最大程序保证数据不丢,RDB在没有触发save机制之前就宕机了,那么数据就没了。
- 缺点:日志记录非常大
追加文件:用在文件末尾追加记录的方式,对Redis写入的数据,依次进行持久化,所以它的持久化是更加安全的。
此外,它还提供一个用appendfsync选项设置fsync的策略,确保写入的数据都落到磁盘中,具体选项包括always,everysec,no等。
修改aof 配置文件添加如下参数 ,核心功能参数是:
appendonly yes
appendfsync always 总是修改类的操作
everysec 每秒做一次持久化
no 依赖于系统自带的缓存大小机制
AOF存储示例
创建配置文件并且编辑配置:
[root@xujunk s21redis]#touch s21_aof.conf
[root@xujunk s21redis]#vim s21_aof.conf
daemonize yes
port 6379
dir /data/6379
appendonly yes
appendfsync everysec
logfile /data/6379/redis.log
以自己配置文件 启动redis
[root@xujunk 6379]#redis-server /opt/s21redis/s21_aof.conf [root@xujunk 6379]#ls
appendonly.aof redis.log
#此时6379目录生成2个文件。实时存储 #实时监控存储数据文件
[root@xujunk 6379]#tail -f appendonly.aof #另起一个窗口启动客户端,操作redis
[root@xujunk s21redis]#redis-cli
127.0.0.1:6379> set name "www"
OK #监控客户端实时输出存入结果:
*2
$6
SELECT
$1
0
*3
$3
set
$4
name
$3
www
redis 持久化方式有哪些?有什么区别?
rdb:基于快照的持久化,速度更快,一般用作备份,主从复制也是依赖于rdb持久化功能 aof:以追加的方式记录redis操作日志的文件。可以最大程度的保证redis数据安全,类似于mysql的binlog
3.redis持久化rdb切换aof备份
本文在redis4.0中,通过config set命令,达到不重启redis服务,从RDB持久化切换为AOF
查看redis版本
[root@xujunk s21redis]#redis-server -v
Redis server v=4.0.10 sha=00000000:0 malloc=jemalloc-4.0.3 bits=64 build=f4e8cdb9b08f1cb0rdb模式下的redis持久化,不重启切换为 aof模式
手动操作:
redis内切换:
config set appendonly yes
config set save ""
环境准备:更改s21_rdb.conf配置
#准备rdb配置文件
daemonize yes
port 6379
logfile /data/6379/redis.log
dir /data/6379 #定义持久化文件存储位置/data/6379
#dbfilename s21redis.rdb #rdb持久化文件s21redis.rdb
bind 127.0.0.1 #redis绑定地址
#save 900 1 #
#save 200 10 #在200秒中内,超过10个修改类的操作
save 20 2
appendonly yes
appendfsync always
删除rdb保存文件
[root@xujunk 6379]#rm -rf dump.rdb
重启redis server端部
[root@xujunk 6379]#redis-server /opt/s21redis/s21_rdb.conf
启动客户端
[root@xujunk 6379]#redis-cli
127.0.0.1:6379> keys *
1) "name"
#在没有重启redis-server端实现RDB---->AOF(切换)
注意想要永久切换为aof,还得修改配置文件方可
Part_three:Redis持久化存储的更多相关文章
- Redis持久化存储(AOF与RDB两种模式)
Redis中数据存储模式有2种:cache-only,persistence; cache-only即只做为“缓存”服务,不持久数据,数据在服务终止后将消失,此模式下也将不存在“数据恢复”的手段,是一 ...
- Redis持久化存储与复制功能简述
一.分布式系统基础理论 分布式系统的两个基础理论: 1.CAP理论 如图: Consistency(强一致性):数据一致更新,所有数据变动都是同步的.Availability(可用性):好的响应性能. ...
- Redis持久化存储详解(一)
> 为什么要做持久化存储? 持久化存储是将 Redis 存储在内存中的数据存储在硬盘中,实现数据的永久保存.我们都知道 Redis 是一个基于内存的 nosql 数据库,内存存储很容易造成数据的 ...
- Linux实战教学笔记45:NoSQL数据库之redis持久化存储(一)
第1章 redis存储系统 1.1 redis概述 REmote DIctionary Server(Redis)是一个基于key-value键值对的持久化数据库存储系统.redis和大名鼎鼎的Mem ...
- Redis持久化存储与主从复制
4. redis持久化 Redis是一种内存型数据库,一旦服务器进程退出,数据库的数据就会丢失,为了解决这个问题,Redis提供了两种持久化的方案,将内存中的数据保存到磁盘中,避免数据的丢失. 4.1 ...
- Redis持久化存储(三)
redis高级特性-发布订阅消息服务功能 Pub/Sub 订阅,取消订阅和发布实现了发布/订阅消息范式(引自wikipedia),发送者(发布者)不是计划发送消息给特定的接收者(订阅者).而是发布的消 ...
- Redis持久化存储——>RDB & AOF
Redis中两种持久化存储机制RDB和AOF redis是一个内存数据库,数据保存在内存中,但是我们都知道内存的数据变化是很快的,也容易发生丢失.幸好Redis还为我们提供了持久化的机制,分别是RDB ...
- Redis持久化存储(RDB和AOF)
参考了: https://blog.csdn.net/canot/article/details/52886923 和 https://www.cnblogs.com/zhangchao-letv/ ...
- Redis持久化存储(一)
Redis介绍 Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库. Redis 与其他 key - value 缓存产品有以下三个特点: Redis支持数据的持久化 ...
随机推荐
- SDN-based Network Management Solution
SDN-based Network Management Solution 摘要: 在此项目中,我们开发了一种网络管理应用程序,以监视和控制由支持OpenFlow的交换机和支持SNMP的设备组成的企业 ...
- free中buffer 与 cache 的区别
通常人们所说的Cache就是指缓存SRAM. SRAM叫静态内存,“静态”指的是当我们将一笔数据写入SRAM后,除非重新写入新数据或关闭电源,否则写入的数据保持不变. 由于CPU的速度比内存和硬盘的速 ...
- [转]css3自适应布局单位vw,vh你知道多少?
原文地址:https://www.cnblogs.com/luxiaoxing/p/7544375.html 视口单位(Viewport units) 什么是视口? 在PC端,视口指的是在PC端,指的 ...
- 解决VS Code开发Python3语言自动补全功能
1.打开设置界面 2)使用快捷键组合[Ctrl+Shift+p] . 输入setting,选中首选项的user setting模式设置界面 在打开的User Settings文件界面,搜索:pytho ...
- jdk1.7 64位官方下载
平时要新装一个系统环境,或者下载最新的jdk,就需要到oracle官网去下载一个jdk,而目前生产环境都是1.7的环境下开发完成的,需要下载1.7版本的jdk,oracle官方网站的默认下载页面是1. ...
- 【LeetCode算法-21】Merge Two Sorted Lists
LeetCode第21题 Merge two sorted linked lists and return it as a new list. The new list should be made ...
- django安装使用xadmin
Xadmin介绍 直接替换掉Django自带的admin系统,并提供了很多有用的东西:完全的可扩展的插件支持,基于Twitter Bootstrap的漂亮UI. 完全替代Django admin 支持 ...
- 在使用redis做缓存后,mybatis的延迟加载失效
原来使用的是EHcache,mybatis延迟加载没有问题,改成redis后,延迟加载获得数据时就会发生错误. 报:Cannot get Configuration as configuration ...
- 最常见的Java面试题及答案汇总(一)
Java 基础部分 1. JDK 和 JRE 有什么区别? JDK:Java Development Kit 的简称,java 开发工具包,提供了 java 的开发环境和运行环境. JRE:Java ...
- smb文件共享
一.服务端: #安装 yum install samba samba-common samba-client -y systemctl start smb ##开启samba服务 systemctl ...