数据持久化

redis知识梳理

孤者浪人 提交于 2020-03-05 22:12:01
redis: redis的数据类型 redis支持的几种数据类型: String(字符串) Hash(哈希) List(有序可重复元素集合) Set(无序不重复元素集合) ZSet(有序不重复元素集合) String: 键和值都是字符串,存储简单字符串数据类型,一个键最大能存储512M 。 命令 功能 set key value 设置值(多次设置相同的key的value值会覆盖) get key 获取值 setnx key value 不存在则设置值 del key 删除键值 setex key 有效期时间 value 键值有效期之后自动失效 mset key1 value1 key2 value2 …keyn valuen 一次设置多个值 getset key value 一次获取多个值 incr / decr key 对一个值进行自增或自减 incrby / decrby key 步长 对一个值进行步长自增或自减 append key val 给key的value追加val的字符串 strlen key 返回key对应的字符串的长度 mget key1 key2 …keyn 一次获取多个值 Hash: Redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象。 可以理解为:filed=对象,key=对象的属性,value

Redis(四)---持久化

自作多情 提交于 2020-03-05 21:28:47
文章目录 Redis 持久化 #1 什么是Redis持久化 #2 持久化方案 #3 Redis持久化方案--RDB #3.1 RDB配置 #4 Redis持久化方案--AOF #4.1 AOF配置 #5 从持久化中恢复数据 #6 RDB和AOF对比 #7 Redis4.0 混合持久化 Redis 持久化 #1 什么是Redis持久化 Redis是Cache级别的缓存,数据存在内存中,如果突然掉电或者宕机,数据将会全部丢失,所以需要将Redis的数据备份到硬盘中永久保存 #2 持久化方案 目前Redis持久化方案主要有两种: RDB和AOF RDB: 快照 快照是一次全量备份 AOF: 日志 AOF日志是持续的增量备份,AOF日志在长期的运行过程中会变得无比的巨大,数据库重启时需要加载AOF日志进行命令重放,所以需要定期对AOF重写,给AOF日志进行瘦身 #3 Redis持久化方案–RDB Redis是单线程程序,这个线程要同时负责多个客户端的并发读写操作,同时还需要进行进行内存快照,内存快照要求Redis必须进行文件I/O操作,可文件I/O操作不能使用多路复用API,这时Redis就需要一边持久化,一边响应客户端的请求,持久化的同时,内存数据结构还在改变,那么就存在一个问题: 一个大型的hash数据正在持久化,这时,客户端请求是要把这个hash数据删掉,可是还没持久化完

redis的持久化RDB与AOF

柔情痞子 提交于 2020-03-05 07:54:10
redis 持久化    Redis 是一种内存型数据库,一旦服务器进程退出,数据库的数据就会丢失,为了解决这个问题, Redis 提供了两种持久化的方案,将内存中的数据保存到磁盘中,避免数据的丢失。 RDB 持久化 redis 提供了 RDB持久化 的功能,这个功能可以将 redis 在内存中的的状态保存到硬盘中,它可以 手动执行。 也可以再 redis.conf 中配置, 定期执行 。 RDB持久化产生的RDB文件是一个 经过压缩 的 二进制文件 ,这个文件被保存在硬盘中,redis可以通过这个文件还原数据库当时的状态。 RDB(持久化) 内存数据保存到磁盘 在指定的时间间隔内生成数据集的时间点快照(point-in-time snapshot) 优点:速度快,适合做备份,主从复制就是基于RDB持久化功能实现 rdb通过再redis中使用save命令触发 rdb rdb配置参数: dir /data/6379/ dbfilename dbmp.rdb 每过900秒 有1个操作就进行持久化 save 900秒 1个修改类的操作 save 300秒 10个操作 save 60秒 10000个操作 save 900 1 save 300 10 save 60 10000 实验 1. 启动redis服务端,准备配置文件 redis.conf 写入(也可以在新建个文件--s15redis

深入理解Redis的持久化

▼魔方 西西 提交于 2020-03-04 19:57:41
深入理解Redis的持久化 另参考 https://www.jianshu.com/p/9f4a3915df71 RDB RDB是将当前数据生成快照保存到硬盘上。 RDB的工作流程: 执行bgsave命令,Redis父进程判断当前是否存在正在执行的子进程,如RDB/AOF子进程,如果存在bgsave命令直接返回。 父进程执行fork操作创建子进程,fork操作过程中父进程被阻塞。 父进程fork完成后,bgsave命令返回“* Background saving started by pid xxx”信息,并不再阻塞父进程,可以继续响应其他命令。 父进程创建RDB文件,根据父进程内存生成临时快照文件,完成后对原有文件进行原子替换。根据lastsave命令可以获取最近一次生成RDB的时间,对应info Persistence中的rdb_last_save_time。 进程发送信号给父进程表示完胜,父进程更新统计信息。 对于大多数操作系统来说,fork都是个重量级操作,虽然创建的子进程不需要拷贝父进程的物理内存空间,但是会复制父进程的空间内存页表。 子进程通过fork操作产生,占用内存大小等同于父进程,理论上需要两倍的内存来完成持久化操作,但Linux有写时复制机制(copy-on-write)。父子进程会共享相同的物理内存页,当父进程处理写请求时会把要修改的页创建副本

redis介绍

落花浮王杯 提交于 2020-03-03 16:47:02
redis简介 redis VS mysql redis: 内存数据库(读写快)、非关系型(操作数据方便、数据固定) mysql: 硬盘数据库(数据持久化)、关系型(操作数据间关系、可以不同组合) 大量访问的临时数据,用redis数据库更优 redis VS memcache redis: 操作字符串、列表、字典、无序集合、有序集合 | 支持数据持久化(数据丢失可以找回(默认持久化,主动持久化save)、可以将数据同步给mysql) | 高并发支持 memcache: 操作字符串 | 不支持数据持久化 | 并发量小 Redis操作 redis安装 1、官网下载:安装包或是绿色面安装 2、安装并配置环境变量 启动服务 """ 前提:前往一个方便管理redis持久化文件的逻辑再启动服务:dump.rdb 1)前台启动服务 >: redis-server 2)后台启动服务 >: redis-server --service-start 注)Linux系统后台启动(或是修改配置文件,建议采用方式) >: redis-server & 3)配置文件启动前台服务 >: redis-server 配置文件的绝对路径 4)配置文件启动后台服务 注)windows系统默认按Redis安装包下的redis.windows-service.conf配置文件启动 >: redis-server -

Redis 配置

北战南征 提交于 2020-03-03 15:49:52
Redis 配置 数据持久化 1)配置文件默认配置 save 900 1 # 超过900秒有1个键值对操作,会自动调用save完成数据持久化 save 300 10 # 超过300秒有10个键值对操作,会自动调用save完成数据持久化 save 60 10000 # 超过60秒有10000个键值对操作,会自动调用save完成数据持久化 2)安全机制 当redis服务不可控宕机,会默认调用一下save完成数据持久化(如果数据量过大,也可能存在部分数据丢失) 3)主动持久化 >: save # 连入数据库时,主动调用save完成数据持久化 注:数据持久化默认保存文件 dump.rdb,保存路径默认为启动redis服务的当前路径 Redis 相关配置 """ 1)绑定的ip地址,多个ip用空格隔开 bind 127.0.0.1 2)端口,默认6379,一般不做修改 port 6379 3)是否以守护进程启动,默认为no,一般改为yes代表后台启动(windows系统不支持) daemonize no 4)定义日志级别,默认值为notice,有如下4种取值: debug(记录大量日志信息,适用于开发、测试阶段) verbose(较多日志信息) notice(适量日志信息,使用于生产环境) warning(仅有部分重要、关键信息才会被记录) loglevel notice 5

Redis配置文件详解

↘锁芯ラ 提交于 2020-03-03 14:28:18
Redis配置文件详解 原文地址 #redis.conf # Redis configuration file example. # ./redis-server /path/to/redis.conf ################################## INCLUDES ################################### #这在你有标准配置模板但是每个redis服务器又需要个性设置的时候很有用。 # include /path/to/local.conf # include /path/to/other.conf ################################ GENERAL ##################################### #是否在后台执行,yes:后台运行;no:不是后台运行(老版本默认) daemonize yes #3.2里的参数,是否开启保护模式,默认开启。要是配置里没有指定bind和密码。开启该参数后,redis只会本地进行访问,拒绝外部访问。要是开启了密码 和bind,可以开启。否 则最好关闭,设置为no。 protected-mode yes #redis的进程文件 pidfile /var/run/redis/redis-server.pid #redis监听的端口号。 port

Redis 详解 (二) redis的配置文件介绍

怎甘沉沦 提交于 2020-03-03 14:05:55
目录 1、开头说明 2、INCLUDES 3、MODULES 4、NETWORK 5、GENERAL 6、SNAPSHOTTING 7、REPLICATION 8、SECURITY 9、CLIENTS 10、MEMORY MANAGEMENT 11、APPEND ONLY MODE 12、LUA SCRIPTING 13、REDIS CLUSTER   上一篇博客我们介绍了如何安装Redis,在Redis的解压目录下有个很重要的配置文件 redis.conf (/opt/redis-4.0.9目录下),关于Redis的很多功能的配置都在此文件中完成的,在上一讲我也说过,一般为了不破坏安装的文件,出厂默认配置最好不要去改,所以我们将此配置文件复制到 /etc/redis/目录下了。   通过 vim /etc/redis/redis.conf 命令打开此文件。下面我们将详细介绍此配置文件。   ps:大家不懂这些配置意思没关系,后面会在具体实例中进行介绍,先过个眼熟即可。 回到顶部 1、开头说明      这里没什么好说的,需要注意的是后面需要使用内存大小时,可以指定单位,通常是以 k,gb,m的形式出现,并且 单位不区分大小写 。 回到顶部 2、INCLUDES      我们知道Redis只有一个配置文件,如果多个人进行开发维护,那么就需要多个这样的配置文件

Redis持久化--RDB和AOF

萝らか妹 提交于 2020-03-03 11:51:20
RDB: RDB持久化是把当前进程数据生成快照保存到硬盘的过程,Redis 默认的方式。 触发机制: 1)save命令: 阻塞当前Redis服务器, 直到RDB过程完成为止。 对于内存比较大的实例会造成长时间阻塞, 线上环境不建议使用。 2)bgsave命令: Redis进程执行fork操作创建子进程, RDB持久化过程由子进程负责, 完成后自动结束。 阻塞只发生在fork阶段, 一般时间很短。持久化过程, 主线程还可以执行命令 bgsave流程: 3)自动触发: redis.conf中配置: save 900 1 save 300 10 save 60 10000 ##900s 内更改一次,就储存; 300s 内更改了 10 次就储存 其他自动触发情况: 主从复制时,全量复制操作时 执行shutdown命令时,如果没有开启AOF持久化功能则自动执行bgsave 执行debug reload命令重新加载Redis时, 也会自动触发save操作 二者区别 : RDB优缺点: 优点:RDB是一个紧凑压缩的二进制文件,压缩后的文件远远小于内存大小。 Redis加载RDB恢复数据远远快于AOF的方式。 缺点:耗时、耗性能 - - bgsave每次运行都要执行fork操作创建子进程, 属于重量级操作, 频繁执行成本过高 RDB不适合实时持久化。 AOF: Redis持久化的主流方式

学习笔记之redis持久化

女生的网名这么多〃 提交于 2020-03-03 10:40:00
RDB持久化原理 自动触发 save 900 1 采用时间策略, 900s后如果有一条写入命令就触发一次快照 手动触发 save: 阻塞redis服务器,直到持久化完成 bgsave: fork一个子进程,由子进程负责持久化过程,因此阻塞只会发生在fork子进程的时候 AOF持久化原理 appendfsync同步模式 always 把每个写入命令都立即同步到aof,很慢,很安全 everysec 每秒同步一次 no 交给操作系统处理,非常快,但是不安全 AOF整体流程 命令的实时写入 对AOF文件进行重写 graph TD A[命令写入] --> B(追加到aof_buf缓冲区) B --> C(通过时间事件调用flushAppendOnlyFile函数同步到aof磁盘) Redis持久化恢复过程 先检测AOF进行恢复,如果没有才检测RDB进行恢复 RDB的优缺点 优点: RDB最大限度的提高了redis的性能,父进程不需要参与磁盘的I/O 与AOF相比,RDB允许进行大数据集更快重启 缺点: 如果需要在redis停止工作的时候将数据丢失的可能性降至最低,RDB并不好 RDB经常需要fork才能使用子进程持久存储在磁盘上,如果数据集很大,fork很可能会非常耗时间 AOF的优缺点 优点: 数据更加安全 当redis太大时,Redis能够在后台自动重写AOF