精华内容
下载资源
问答
  • Redis持久化

    2017-10-27 16:29:19
    redis持久化,看完完全懂redis持久化,看完完全懂redis持久化,看完完全懂redis持久化,看完完全懂redis持久化,看完完全懂redis持久化,看完完全懂redis持久化,看完完全懂redis持久化,看完完全懂redis持久化,看...
  • redis持久化

    2017-10-11 09:27:51
    redis持久化,主要说明了redis中的两种持久化方式,是可以值得参考的
  • 【大厂面试】面试官都爱问的 Redis 持久化 (RDB) 【大厂面试】面试官都爱问的 Redis 持久化 (AOF) RDB 持久化方式能够在指定的时间间隔能对你的数据进行快照存储 AOF 持久化方式记录每次对服务器写的操作,当服务器...
  • 主要介绍Redis持久化、主从与哨兵架构详解,详细具体,可操作性好!
  • 本章节开始 我们在docker下 进行 spring Boot项目操作redis 准备工作: (1) 创建文件夹:usr/local/work/share (2) 拉取项目,这是一个打包好的jar包 (3) 将拉取的 jar包放到刚刚创建的文件夹下,同时再创建一个名字为 ...
  • Redis持久化配置

    千次阅读 2019-06-05 13:39:22
    因此对缓存中的数据定时进行持久化的必要性就相当突出了,Redis持久化分别有RDB和AOF两种方式, 以下是这两种方式的相关配置: 1第一种: RDB持久化方式 1.1 概述 默认redis是会以快照的形式将数据持久化到磁盘的...

    对于Redis来说是存储在缓存之中的,因此缓存数据丢失问题一直是程序员们相当关注的话题

    因此对缓存中的数据定时进行持久化的必要性就相当突出了,Redis持久化分别有RDB和AOF两种方式,

    以下是这两种方式的相关配置:

    1  第一种: RDB持久化方式


    1.1 概述
    默认redis是会以快照的形式将数据持久化到磁盘的(一个二进制文件,dump.rdb,这个文件名字可以指定),在配置文件中的格式是:save N M表示在N秒之内,redis至少发生M次修改则redis抓快照到磁盘。当然我们也可以手动执行save或者bgsave(异步)做快照。

    1.2 实现机制
    当redis需要做持久化时,redis会fork一个子进程;子进程将数据写到磁盘上一个临时RDB文件中;当子进程完成写临时文件后,将原来的RDB替换掉,这样的好处就是可以copy-on-write

    1.3 相关配置
    redis.conf配置文件:

    1) 持久化策略:

    #  save ""

    save 900 1

    save 300 10

    save 60 10000

    2) 文件名称:

    # The filename where to dump the DB

    dbfilename dump.rdb

    3) 文件存放目录:

    # Note that you must specify a directoryhere, not a file name.

    dir ./

     

    2  第二种:AOF持久化方式


    2.1概述
    还有一种持久化方法是Append-only:filesnapshotting方法在redis异常死掉时,最近的数据会丢失(丢失数据的多少视你save策略的配置),所以这是它最大的缺点,当业务量很大时,丢失的数据是很多的。Append-only方法可以做到全部数据不丢失,但redis的性能就要差些。AOF就可以做到全程持久化,只需要在配置文件中开启(默认是no),appendonly yes开启AOF之后,redis每执行一个修改数据的命令,都会把它添加到aof文件中,当redis重启时,将会读取AOF文件进行“重放”以恢复到redis关闭前的最后时刻。

    LOG Rewriting随着修改数据的执行AOF文件会越来越大,其中很多内容记录某一个key的变化情况。因此redis有了一种比较有意思的特性:在后台重建AOF文件,而不会影响client端操作。在任何时候执行BGREWRITEAOF命令,都会把当前内存中最短序列的命令写到磁盘,这些命令可以完全构建当前的数据情况,而不会存在多余的变化情况(比如状态变化,计数器变化等),缩小的AOF文件的大小。所以当使用AOF时,redis推荐同时使用BGREWRITEAOF。

    AOF文件刷新的方式,有三种,参考配置参数appendfsync :appendfsync always每提交一个修改命令都调用fsync刷新到AOF文件,非常非常慢,但也非常安全;appendfsynceverysec每秒钟都调用fsync刷新到AOF文件,很快,但可能会丢失一秒以内的数据;appendfsync no依靠OS进行刷新,redis不主动刷新AOF,这样最快,但安全性就差。默认并推荐每秒刷新,这样在速度和安全上都做到了兼顾。

    可能由于系统原因导致了AOF损坏,redis无法再加载这个AOF,可以按照下面步骤来修复:首先做一个AOF文件的备份,复制到其他地方;修复原始AOF文件,执行:$ redis-check-aof –fix ;可以通过diff –u命令来查看修复前后文件不一致的地方;重启redis服务。

    2.2 实现机制
    1)Redis将数据库做个快照,遍历所有数据库,将数据库中的数据还原为跟客户端发送来的指令的协议格式的字符串,

    2)然后Redis新建一个临时文件将这些快照数据保存,待快照程序结束后将临时文件名修改为正常的aof文件名,原有的文件则自动丢弃。

    由于在快照进行的过程中可能存在新增的命令修改了数据库中的数据,则在快照程序结束后需要将新修改的数据追加到aof文件中,后续的从客户端过来的命令都会不断根据不同的安全级别写到磁盘里面去。这样就支持了实时的持久化,只是可能会有短时间内的数据丢失,对一般系统还是可以容忍的。

    2.3 相关配置
    redis 127.0.0.1:6380> config get*append*
    1) "appendonly"
    2) "yes"
    3) "no-appendfsync-on-rewrite"
    4) "no"
    5) "appendfsync"
    6) "everysec"

    redis 127.0.0.1:6380> config get*aof*
    1) "auto-aof-rewrite-percentage"
    2) "100"
    3) "auto-aof-rewrite-min-size"
    4) "67108864"

    展开全文
  • Redis持久化策略

    千次阅读 2021-01-13 22:31:41
    Redis持久化策略RDBAOF注意优缺点 RDB RDB(Redis Database Backup file) 持久化策略采用的是快照模式,备份的是数据本身,redis默认的持久化策略。原理如图所示: 何时出发RDB文件的写入勒?有如下5中情形: 在...

    Redis持久化策略

    RDB

    RDB(Redis Database Backup file) 持久化策略采用的是快照模式,备份的是数据本身,redis默认的持久化策略。原理如图所示:

    在这里插入图片描述
    何时出发RDB文件的写入勒?有如下5中情形:

    • 在redis.conf配置文件中,设置了SAVE选项,如:save 900 1,表示每900s至少有一个key被修改时,redis客户端会自动发送BGSAVE命令。
    • 客户端发送BGSAVE指令,父进程fork出子进程,子进程完成RDB文件的生成。
    • 内存不足时,客户端发送SAVE指令,直接在父(主)进程完成RDB文件的生成。(注意,执行SAVEe命令期间,Redis不能处理其他命令,直到RDB过程完成为止
    • Redis接收到关闭shutdown关闭服务器的请求时或者flushall,会触发客户端发送SAVE指令。
    • 如果是redis集群,当一个redis服务器连向另外一个redis服务器发送SYNC命令时,如果主服务器目前没有在执行BGSAVE操作,或刚刚执行完,那么主服务器就会执行BGSAVE

    如何通过RDB文件进行恢复数据?

    • 只需要将RDB文件存放到redis的启动目录,即我们的redis.conf配置文件中的dir选项。redis启动时,会去扫描这个文件并恢复数据。

    AOF

    AOF(append only file) 持久化策略采用的是追加模式,备份的是操作数据的指令(读操作忽略,只有对数据有修改的命令才有意义)。原理和RDB类似,通过fork一个子进程,在子进程中完成持久化。默认配置中,redis是没有开启的。

    # Please check http://redis.io/topics/persistence for more information.
    # aof是否开启, 需要手动设置为yes
    appendonly no
    
    # The name of the append only file (default: "appendonly.aof")
    # aof 文件名
    appendfilename "appendonly.aof"
    
    # appendfsync用于设置持久化策略
    # everysec 每一秒钟
    # always 每一次
    appendfsync everysec
    
    # rewrite 重写规则的设置
    no-appendfsync-on-rewrite no
    
    # percentage 增长比例 当这一次的aof文件比上一次的aof文件大1倍时,
    # rewrite 触发重写(与其操作一个大文件,不如重写来的快)
    auto-aof-rewrite-percentage 100
    # rewrite 当前aof文件大于多少字节后才触发重写,只对第一次的aof文件生
    # size 成有用,后边是根据比例(auto-aof-rewrite-percentage)来的
    auto-aof-rewrite-min-size 64mb
    
    # truncated 指redis在恢复时,会忽略最后一条可能存在问题的指令, 即在aof写入时,突然断电,指令写了一半,这种情况下,yes会继续,而no会直接恢复失败.
    aof-load-truncated
    

    注意

    no-appendfsync-on-rewrite设置为yes时,在写aof文件时会阻塞主进程设置数据的操作。如果接下来aof重写成功,那么后边的主进程设置数据的操作正常执行,如果aof重写发生异常,后边主进程设置数据的操作将无法执行,从而发生数据丢失。

    反之,设置为no,虽然不会阻塞主进程设置数据的操作,但在写aof文件期间,新写入的数据则不能被持久化。这是,如果再下一个写aof文件操作促发之前,发生意外,新写入的数据也有丢失的风险。

    另外,aof文件是否正常可以通过redis提供的redis-check-aof程序进行检查并修复。


    优缺点

    RDB&优点

    • 存储的文件是紧凑的(需要借助特定工具,如rdbtools才能看得懂文本内容),备份速度比AOF要快
    • 方便恢复不同版本的数据,适合于容灾恢复,备份文件可以在其他服务器恢复

    RDB&缺点

    • 如果Redis因为没有正确关闭而停止工作是,则再下一个RDB操作到来之前,新增的数据可能丢失。
    • 由于通过fork子线程来进行备份操作,如果数据量很大的话,fork比较耗时,如果cpu性能不够,服务器可能是卡顿。

    AOF&优点

    • AOF是一个日志追加文件,即使因为没有正确关闭而停止工作造成aof文件末尾是一个写到一半的命令,也可以借助redis-check-aof进行恢复。
    • AOF包含一个又一个的操作命令,易于理解和解析。
    • 很多人都说AOF备份的数据完整性比RDB要强,这点不太苟同,这取决于备份时间周期的设置,越短完整性越强,不过则会牺牲其他方面的性能勒。

    AOF&缺点

    • AOF采用文件追加的方式,使得文件越来越大,如果没有设置好对应的重写策略,容易造成内存溢出。
    • AOF可能比RDB要慢(跟no-appendfsync-on-rewrite有关)。
    • AOF采用文件追加的方式更新数据,而RDB是从头开始创建,更健壮和稳定。
    展开全文
  • 之前介绍Redis特点的时候其中有一条是Redis支持数据持久化,可以将内存中的数据持久化到磁盘中,重启的时候再次加载使用。Redis4之前的数据持久化有AOF和RDB两种,从Redis4之后新增了AOF+RDB混合持久化的方式,本篇...

    目录

    介绍

    RDB

    介绍

    配置

    使用

    AOF

    介绍

    配置

    重写

    使用

    AOF和RDB的区别

    RDB优缺点

    AOF优缺点

    AOF和RDB的恢复顺序

    AOF+RDB混合[推荐]

    介绍

    配置

    使用


    之前介绍Redis特点的时候其中有一条是Redis支持数据持久化,可以将内存中的数据持久化到磁盘中,重启的时候再次加载使用。Redis4之前的数据持久化有AOF和RDB两种,从Redis4之后新增了AOF+RDB混合持久化的方式,本篇就Redis的三种数据持久化的方式进行详细介绍以及他们的场景和区别。

    Redis系列文章:

    Redis系列(一)、CentOS7下安装Redis6.0.3稳定版

    Redis系列(二)、数据类型之字符串String 

    Redis系列(三)、数据类型之哈希Hash

    Redis系列(四)、数据类型之列表List

    Redis系列(五)、数据类型之无序集合Set

    Redis系列(六)、数据类型之有序集合ZSet(sorted_set)

    Redis系列(七)、常用key命令

    Redis系列(八)、常用服务器命令 

    Redis系列(九)、Redis的“事务”及Lua脚本操作


    介绍

    上面提到Redis持久化存储有两种持久化方案,RDB(Redis DataBase)和 AOF(Append-Only File)。其中RDB是将内存中的数据进行快照存储到磁盘,AOF则为可回放的命令日志记录redis内的所有操作。它们各有特点也相互独立。Redis4之后支持RDB-AOF混合持久化的方式,结合了两者的优点,可以通过 aof-use-rdb-preamble 配置项可以打开混合开关。

    RDB

    介绍

    RDB(Redis DataBase)是将Redis内存中的数据进行Snaptshot快照存储在磁盘内,是Redis的默认持久化方案。使用RDB持久化默认有三种策略,该持久化策略在redis.conf中可配置,会以一段时间内有指定次数据修改的规则触发快照动作,快照文件名为dump.rdb,该文件默认使用LZF压缩算法 。每当Redis服务重启的时候会从该文件中加载数据进内存。

    RDB持久化除了可以根据配置中的策略触发,也可以手动触发,使用save和bgsave命令即可。这两个命令的区别的save会阻塞服务器进程,在进行save的过程中,服务器不能处理任何请求,而bgsave会通过一个子进程在后台处理rdb持久化。事实上save和bgsave调用的都是rdbSave函数,因此Redis不允许save和bgsave同时运行,这也是为了避免出现竞争导致rdb文件数据不准确。

    bgsave操作使用CopyOnWrite机制进行写时复制,是由一个子进程将内存中的最新数据遍历写入临时文件,此时父进程仍旧处理客户端的操作,当子进程操作完毕后再将该临时文件重命名为dump.rdb替换掉原来的dump.rdb文件,因此无论bgsave是否成功,dump.rdb都不会受到影响。

    另外在主从全量同步、debug reload以及shutdown的情况下也会触发RDB数据持久化。

    配置

    我们可以修改redis.conf文件中的SNAPSHOTTING中修改RDB的默认持久化策略。

    vim $REDIS_HOME/bin/redis.conf

    #RDB持久化策略 默认三种方式,[900秒内有1次修改],[300秒内有10次修改],[60秒内有10000次修改]即触发RDB持久化,我们可以手动修改该参数或新增策略
    save 900 1
    save 300 10
    save 60 10000
    
    #RDB文件名
    dbfilename "dump.rdb"
    #RDB文件存储路径
    dir "/opt/app/redis6/data"

    策略配置:

    #在seconds秒内有changes次数据修改就触发RDB持久化
    save <seconds> <changes>

    使用

    执行save/bgsave前后 rdb文件被更新: 

    将rdb文件备份后重启服务,数据没了,关闭服务将备份文件改回来,数据又回来了: 

    AOF

    介绍

    AOF(Append-Only File)记录Redis中每次的写命令,类似mysql中的binlog,服务重启时会重新执行AOF中的命令将数据恢复到内存中,RDB(按策略持久化)持久化方式记录的粒度不如AOF(记录每条写命令),因此很多生产环境都是开启AOF持久化。

    AOF中记录了操作和数据,在日志文件中追加完成后才会将内存中的数据进行变更。

    AOF持久化流程

    1. 客户端的请求写命令会被append追加到AOF缓冲区内;
    2. AOF缓冲区根据AOF持久化策略[always,everysec,no]将操作sync同步到磁盘的AOF文件中;
    3. AOF文件大小超过重写策略或手动重写时,会对AOF文件rewrite重写,压缩AOF文件容量;
    4. Redis服务重启时,会重新load加载AOF文件中的写操作达到数据恢复的目的;

    配置

    开启了AOF之后,RDB就默认不使用了。使用下面的配置开启AOF以及策略。(如果使用AOF,推荐选择always方式持久化,否则在高并发场景下,每秒钟会有几万甚至百万条请求,如果使用everysec的方式的话,万一服务器挂了那几万条数据就丢失了):

    vim $REDIS_HOME/bin/redis.conf

    #开启AOF持久化
    appendonly yes
    
    #AOF文件名
    appendfilename "appendonly.aof"
    
    #AOF文件存储路径 与RDB是同一个参数
    dir "/opt/app/redis6/data"
    
    #AOF策略,一般都是选择第一种[always:每个命令都记录],[everysec:每秒记录一次],[no:看机器的心情高兴了就记录]
    appendfsync always
    #appendfsync everysec
    # appendfsync no
    
    
    #aof文件大小比起上次重写时的大小,增长100%(配置可以大于100%)时,触发重写。[假如上次重写后大小为10MB,当AOF文件达到20MB时也会再次触发重写,以此类推]
    auto-aof-rewrite-percentage 100 
    
    #aof文件大小超过64MB时,触发重写
    auto-aof-rewrite-min-size 64mb 

    重写

    AOF持久化机制记录每个写命令,当服务重启的时候会复现AOF文件中的所有命令,会消耗太多的资源且重启很慢。因此为了避免AOF文件中的写命令太多文件太大,Redis引入了AOF的重写机制来压缩AOF文件体积。AOF文件重写是把Redis进程内的数据转化为写命令同步到新AOF文件的过程。

    重写会根据重写策略或手动触发AOF重写。

    重写流程

    1. bgrewriteaof触发重写,判断是否当前有bgsave或bgrewriteaof在运行,如果有,则等待该命令结束后再继续执行。
    2. 主进程fork出子进程执行重写操作,保证主进程不会阻塞。
    3. 子进程遍历redis内存中数据到临时文件,客户端的写请求同时写入aof_buf缓冲区和aof_rewrite_buf重写缓冲区 保证原AOF文件完整以及新AOF文件生成期间的新的数据修改动作不会丢失。
    4. 1).子进程写完新的AOF文件后,向主进程发信号,父进程更新统计信息。2).主进程把aof_rewrite_buf中的数据写入到新的AOF文件。
    5. 使用新的AOF文件覆盖旧的AOF文件,完成AOF重写。

    使用

    修改redis.conf文件开启AOF之后,AOF文件为空,此时如果重启Redis服务会从AOF中复现数据,因此之前使用RDB持久化的数据都看不到了。因此我们可以使用另一种方式开启AOF持久化,也可以将当前RDB中的数据缓存到aof文件中。

    AOF文件为文本格式存储,可以使用cat命令查看。

    在redis.conf中开启AOF,RDB中的数据丢失了:

    在命令行中热修改配置开启AOF,可以将RDB中的数据持久化到AOF文件中:

    重写:

    如果AOF文件遇到格式或编码错误可使用 redis-check-aof 命令修复AOF文件:

    #修复
    $REDIS_HOME/bin/redis-check-aof --fix $REDIS_HOME/data/appendonly.aof 

     

    使用下面的命令查看aof持久化情况:

    info persistence

     

    AOF和RDB的区别

    RDB优缺点

    优点

    1. 压缩后的二进制文件,适用于备份、全量复制及灾难恢复
    2. RDB恢复数据性能优于AOF方式

    缺点

    1. 无法做到实时持久化,每次都要创建子进程,频繁操作成本过高
    2. 保存后的二进制文件,不同版本直接存在兼容性问题

    AOF优缺点

    优点

    1. 以文本形式保存,易读
    2. 记录写操作保证数据不丢失

    缺点

    1. 存储所有写操作命令,且文件为文本格式保存,未经压缩,文件体积高
    2. 恢复数据时重放AOF中所有代码,恢复性能弱于RDB方式

    AOF和RDB的恢复顺序

    当Redis服务重启时数据恢复的顺序如下:

    1. 判断是否开启AOF持久化,若开启了AOF,则使用AOF持久化文件恢复数据,否则使用RDB持久化文件恢复数据;
    2. 若AOF文件不存在则从RDB文件恢复其实并没有】;若AOF文件存在则使用AOF文件恢复;
    3. 若AOF文件和RDB文件都不存在则直接启动Redis;
    4. 若AOF或RDB文件出现错误,则启动失败返回错误信息;

    AOF+RDB混合[推荐]

    介绍

    看了上面的RDB和AOF的介绍后,我们可以发现,使用RDB持久化会有数据丢失的风险,但是恢复速度快,而使用AOF持久化可以保证数据完整性,但恢复数据的时候会很慢。于是从Redis4之后新增了混合AOF和RDB的模式,先使用RDB进行快照存储,然后使用AOF持久化记录所有的写操作,当重写策略满足或手动触发重写的时候,将最新的数据存储为新的RDB记录。这样的话,重启服务的时候会从RDB何AOF两部分恢复数据,即保证了数据完整性,又提高了恢复的性能。

    开启混合模式后,每当bgrewriteaof命令之后会在AOF文件中以RDB格式写入当前最新的数据,之后的新的写操作继续以AOF的追加形式追加写命令。当redis重启的时候,加载 aof 文件进行恢复数据:先加载 rdb 的部分再加载剩余的 aof部分。

    配置

    修改下面的参数即可开启AOF,RDB混合持久化:

    vim $REDIS_HOME/bin/redis.conf 

    aof-use-rdb-preamble yes

    使用

    开启混合持久化模式后,重写之后的aof文件里和rdb一样存储二进制的 快照数据,继续往redis中进行写操作,后续操作在aof中仍然是以命令的方式追加。因此重写后aof文件由两部分组成,一部分是类似rdb的二进制快照,另一部分是追加的命令文本:

     

    希望本文对你有帮助,请点个赞鼓励一下作者吧~ 谢谢!

    展开全文
  • windows redis持久化功能步骤

    千次阅读 2020-04-26 18:31:40
    启动redis 打开运行窗口 在redis安装路径 F:>cd redis-2.0.2 F:\redis-2.0.2>redis-server.exe redis.conf [2944] 15 Jun 22:44:29 * Server started, Redis version 2.0.2 [2944] 15 Jun 22:44:29 * DB ...

    启动redis
    打开运行窗口
    在redis安装路径
    F:>cd redis-2.0.2

    F:\redis-2.0.2>redis-server.exe redis.conf
    [2944] 15 Jun 22:44:29 * Server started, Redis version 2.0.2
    [2944] 15 Jun 22:44:29 * DB loaded from append only file: 0 seconds
    [2944] 15 Jun 22:44:29 * The server is now ready to accept connections on port
    379
    [2944] 15 Jun 22:44:30 - DB 0: 1 keys (0 volatile) in 4 slots HT.
    [2944] 15 Jun 22:44:30 - 0 clients connected (0 slaves), 450888 bytes in use

    在打开一个窗口运行客户端

    F:\redis-2.0.2>redis-cli.exe

    redis>

    设置值:

    redis> set ajun ajun

    Reconnecting… OK
    OK

    取值:

    redis> get ajun
    “ajun”

    停止redis服务

    redis> shutdown

    如果需要redis持久化数据 需要配置redis日志开启

    在每次更新操作后进行日志记录,如果不开启,可能会在断电时导致一段时间内的数据丢失。因为redis本身同步数据文件是按上面save条件来同步的,所以有的数据会在一段时间内只存在于内存中。默认值为no

    此时要在redis.conf中修改或者添加

    appendonly yes

    更新日志文件名,默认值为appendonly.aof

    #更新日志条件,共有3个可选值。no表示等操作系统进行数据缓存同步到磁盘,always表示每次更新操作后手动调用fsync()将数据写到磁盘,everysec表示每秒同步一次(默认值)。

    appendfsync always

    appendfsync everysec

    appendfsync no

    关闭redis 服务在重启

    F:\redis-2.0.2>redis-server.exe redis.conf
    [2944] 15 Jun 22:44:29 * Server started, Redis version 2.0.2
    [2944] 15 Jun 22:44:29 * DB loaded from append only file: 0 seconds
    [2944] 15 Jun 22:44:29 * The server is now ready to accept connections on port
    379
    [2944] 15 Jun 22:44:30 - DB 0: 1 keys (0 volatile) in 4 slots HT.
    [2944] 15 Jun 22:44:30 - 0 clients connected (0 slaves), 450888 bytes in use
    此时redis根目录会有产生一个appendonly.aof的文件来记录日志
    在客户端重新连接

    F:\redis-2.0.2>redis-cli.exe

    redis>set ajun wahaha

    然后在shutdown redis服务

    查看appendonly.aof为1k

    再启动redis服务

    F:\redis-2.0.2>redis-server.exe redis.conf
    [2944] 15 Jun 22:44:29 * Server started, Redis version 2.0.2
    [2944] 15 Jun 22:44:29 * DB loaded from append only file: 0 seconds
    [2944] 15 Jun 22:44:29 * The server is now ready to accept connections on port
    379
    [2944] 15 Jun 22:44:30 - DB 0: 1 keys (0 volatile) in 4 slots HT.
    [2944] 15 Jun 22:44:30 - 0 clients connected (0 slaves), 450888 bytes in use

    再启动客户端

    F:\redis-2.0.2>redis-cli.exe

    redis>get ajun
    “wahaha”
    值还在,说明被持久化了

    linux上的操作也是类似的

    reids.conf参数配置参考,具体看官方配置文件参数注解

    1. redis.conf配置参数:

    #是否作为守护进程运行
    daemonize yes
    #如以后台进程运行,则需指定一个pid,默认为/var/run/redis.pid
    pidfile redis.pid
    #绑定主机IP,默认值为127.0.0.1
    #bind 127.0.0.1
    #Redis默认监听端口
    port 6379
    #客户端闲置多少秒后,断开连接,默认为300(秒)
    timeout 300
    #日志记录等级,有4个可选值,debug,verbose(默认值),notice,warning
    loglevel verbose
    #指定日志输出的文件名,默认值为stdout,也可设为/dev/null屏蔽日志
    logfile stdout
    #可用数据库数,默认值为16,默认数据库为0
    databases 16
    #保存数据到disk的策略
    #当有一条Keys数据被改变是,900秒刷新到disk一次
    save 900 1
    #当有10条Keys数据被改变时,300秒刷新到disk一次
    save 300 10
    #当有1w条keys数据被改变时,60秒刷新到disk一次
    save 60 10000
    #当dump.rdb数据库的时候是否压缩数据对象
    rdbcompression yes
    #本地数据库文件名,默认值为dump.rdb
    dbfilename dump.rdb
    #本地数据库存放路径,默认值为 ./
    dir /usr/local/redis/var/

    ########### Replication #####################
    #Redis的复制配置

    slaveof 当本机为从服务时,设置主服务的IP及端口

    masterauth 当本机为从服务时,设置主服务的连接密码

    #连接密码

    requirepass foobared

    #最大客户端连接数,默认不限制

    maxclients 128

    #最大内存使用设置,达到最大内存设置后,Redis会先尝试清除已到期或即将到期的Key,当此方法处理后,任到达最大内存设置,将无法再进行写入操作。

    maxmemory

    #是否在每次更新操作后进行日志记录,如果不开启,可能会在断电时导致一段时间内的数据丢失。因为redis本身同步数据文件是按上面save条件来同步的,所以有的数据会在一段时间内只存在于内存中。默认值为no
    appendonly no
    #更新日志文件名,默认值为appendonly.aof
    #appendfilename
    #更新日志条件,共有3个可选值。no表示等操作系统进行数据缓存同步到磁盘,always表示每次更新操作后手动调用fsync()将数据写到磁盘,everysec表示每秒同步一次(默认值)。

    appendfsync always

    appendfsync everysec

    appendfsync no

    ################ VIRTUAL MEMORY ###########
    #是否开启VM功能,默认值为no
    vm-enabled no

    vm-enabled yes

    #虚拟内存文件路径,默认值为/tmp/redis.swap,不可多个Redis实例共享
    vm-swap-file logs/redis.swap

    将所有大于vm-max-memory的数据存入虚拟内存,无论vm-max-memory设置多小,所有索引数据都是内存存储的 (Redis的索引数据就是keys),也就是说,当vm-max-memory设置为0的时候,其实是所有value都存在于磁盘。默认值为0。

    vm-max-memory 0
    vm-page-size 32
    vm-pages 134217728
    vm-max-threads 4

    ############# ADVANCED CONFIG ###############
    glueoutputbuf yes
    hash-max-zipmap-entries 64
    hash-max-zipmap-value 512
    #是否重置Hash表
    activerehashing yes

    注意:Redis官方文档对VM的使用提出了一些建议:
    ** 当你的key很小而value很大时,使用VM的效果会比较好.因为这样节约的内存比较大.
    ** 当你的key不小时,可以考虑使用一些非常方法将很大的key变成很大的value,比如你可以考虑将key,value组合成一个新的value.
    ** 最好使用linux ext3 等对稀疏文件支持比较好的文件系统保存你的swap文件.
    ** vm-max-threads这个参数,可以设置访问swap文件的线程数,设置最好不要超过机器的核数.如果设置为0,那么所有对swap文件的操作都是串行的.可能会造成比较长时间的延迟,但是对数据完整性有很好的保证.
    ————————————————
    版权声明:本文为CSDN博主「jevien」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/ajun_studio/article/details/7667746

    展开全文
  • Redis持久化面试题

    2020-01-04 17:04:14
    Redis持久化面试题1.redis持久化机制是什么?2.RDB原理是什么?3.RDB文件在哪?4.什么时候触发rdb持久化机制?手动触发:自动触发:5.如何手动会发redis数据?6.如何获取redis安装目录?7.如何停止RDB持久化?8.RDB...
  • Redis笔记(一)-Redis持久化

    千次阅读 多人点赞 2018-09-15 17:08:20
    Redis持久化 1、故障发生的时候会怎么样 2、如何应对故障的发生 redis的持久化,RDB,AOF,区别、工作机制,各自的特点是什么,适合什么场景。如何抉择 redis的企业级的持久化方案是什么,是用来跟哪些企业级的...
  • Redis持久化机制-浅入

    2021-01-07 12:00:00
    Redis持久化就是将数据存入磁盘,以保证数据在redis在崩溃时减小对数据的影响,redis提供两种持久化方式。 1.快照(snapshotting)方式RDB,RDB是redis默认的持久化方式,可以再redis.conf中配置其存储频度,如图: ...
  • Redis 持久化操作

    2019-03-20 17:30:17
    一、Redis 持久化操作: Redis把内部数据以文件形式在硬盘中保存一份,在服务器重启之后会自动把硬盘的数据恢复到内存(redis)里,数据保存到硬盘的过程就称为“持久化”效果。 redis有两种持久化功能: 一种是...
  • RDB是Redis内存到硬盘的快照,用于redis持久化,创建RDB二进制文件,将存储在内存中的数据,持久化的放到硬盘中,当我们需要这些数据的时候,启动载入RDB文件,数据将会被存入内存中,其实RDB就是一种快照的方式持久...
  • Java使用redis 以及 redis持久化

    千次阅读 2018-12-12 11:24:12
    ,redis持久化 一. Java使用redis 开始在 Java 中使用 Redis 前, 我们需要确保已经安装了 redis 服务及 Java redis 驱动,且你的机器上能正常使用 Java。 1.首先你需要下载驱动包 下载 jedis.jar. 在你的 ...
  • 一文带你了解Redis持久化完整版本

    千次阅读 2020-05-27 11:20:36
    Redis持久化演示环境1. 持久化简介2. RDB2-1 RDB启动方式 -- save命令2-2 RDB启动方式 -- save指令相关配置2-3 RDB数据恢复2-4 RDB -- save指令工作原理2-5 RDB -- bgsave指令工作原理2-5 RDB -- 配置文件自启动3. ...
  • Redis持久化一一RDB

    2021-01-07 15:20:21
    Redis可以实现数据的持久化存储,即将数据保存到磁盘上。 Redis持久化存储提供两种方式:RDB与AOF。RDB是默认配置。默认是关闭AOF模式的,AOF需要手动开启 RDB(Redis DataBase):在指定的时间间隔内将内存中的...
  • 1. Redis提供了哪几种持久化方式? RDB持久化方式 能够在指定的时间间隔能对你的数据进行快照存储. AOF持久化方式 记录每次对服务器写的操作,当服务器重启的时候会重新执行这些命令来恢复原始的数据, AOF命令以...
  • redis持久化的几种方式

    万次阅读 2018-11-18 21:19:24
    1、前言 Redis是一种高级key-value数据库。它跟memcached类似,不过数据可以持久化,而且支持的数据类型很丰富...Redis的所有数据都是保存在内存中,然后不定期的通过异步方式保存到磁盘上(这称为“半持久化模式”...
  • Redis持久化与过期机制

    千次阅读 2019-12-26 19:37:55
    文章目录Redis持久化与过期机制1. 持久化机制1.1 RDB(默认)1.2 AOF2. 过期机制2.1 根据过期策略删除数据2.2 当内存过大装不下新数据时,将启用淘汰机制 Redis持久化与过期机制 1. 持久化机制 1.1 RDB(默认) ...
  • Redis持久化及过期删除策略

    千次阅读 2019-05-30 13:59:32
    一、Redis 持久化之RDB和AOF 1.1 RDB 详解 RDB 是 Redis 默认的持久化方案。在指定的时间间隔内,执行指定次数的写操作,则会将内存中的数据写入到磁盘中。即在指定目录下生成一个dump.rdb文件。Redis 重启会通过...
  • Redis持久化的两种方式

    千次阅读 2018-09-28 22:22:02
    一、引言 ...二、redis持久化介绍 redis是一个支持持久化的内存数据库,也就是说redis可以将内存中的数据同步到硬盘,来实现持久化。 redis支持持久化的两种方式: 1、snapshotting(快照),这个是red...
  • 1. Redis使用的持久化机制(存储数据的方式) (1)RDB 1) RDB:是redis的默认持久化机制。 RDB相当于照快照,保存的是一种状态。如果你有几十G数据 ,它能把它压缩为 几KB的快照 2)快照是默认的持久化方式,这种方式...
  • Redis持久化数据和缓存怎么做扩容? 1、如果Redis被当做缓存使用,使用一致性哈希实现动态扩容缩容。 2、如果Redis被当做一个持久化存储使用,必须使用固定的keys-to-nodes映射关系,节点的数量一旦确定不能变化。...
  • Redis持久化之快照(RDB)

    千次阅读 2019-02-13 10:42:03
    本文主要介绍下redis持久化方式中的快照持久化 Redis教程10(事务) Redis教程09(发布和订阅) Redis持久化 所谓的持久化就是保持我们的数据不丢失,将数据通常保存在我们的硬盘中。在Redis中持久化的方式有...
  • redis持久化存储(一)

    万次阅读 2019-05-26 20:35:48
    REmote DIctionary Server(Redis)是一个基于key-value键值对的持久化数据库存储系统。redis和大名鼎鼎的Memcached缓存服务软件很像,但是redis支持的数据存储类型比memcached更丰富,包括strings(字符串),lists...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 151,657
精华内容 60,662
关键字:

redis持久化

redis 订阅