Redis安全与持久化(适合小白阅读)

前言:Redis的使用越来越重要、以下仅为个人学习的点点记录、仅供参考。

一、简单的redis安全性设置

1. 生产环境的redis最好建议在redis配置文件中设置bind。配置允许指定的ip登陆redis。

//下面ip仅供参考、具体根据您个人的生产环境进行配置
bind   127.0.0.1

2. 在redis.conf或者命令行中给redis设置密码(建议密码尽量设置复杂一些)

//redis.conf中添加配置
requirepass   "your password"

//或者执行命令
redis> CONFIG set requirepass "your password"

//重启完redis后使用 redis-cli -a your password 应该就可以成功使用密码登陆redis

一、redis持久化说明

1. RDB方式持久化方式 (save 和 bgsave方式)

  • save为同步的方式保存内存中的数据快照到磁盘。由于redis是单进程的。因此这种方式阻塞了redis client对redis的访问。
  • bgsave方式、redis会fork出一个子进程来处理快照保存。
  • RDB持久化方式都是将内存数据完整的写入磁盘上一个临时RDB文件中。通常为 dump.rdb文件(保存着二进制数据),使用locate dump.rdb找到这个文件可以使用以下命令查看文件内容。或者通过redis.conf中的dir xxxxx配置也可以查看你的rdb文件保存位置。
  • localhost:redis miaoshiqian [master] $ od -c dump.rdb
    0000000    R   E   D   I   S   0   0   0   6 376  \0  \0 004   m   i   a
    0000020    o  \a   s   h   i   q   i   a   n 377   C 355   N   z 264 226
    0000040  243   a
    0000042
  • dump.rdb是经过压缩的二进制文件、它占用的空间小于数据在内存中占用空间。
  • 以下简单介绍下和RDB持久化方式关系较大的几个配置项:
  • //dir配置rdb二进制文件保存再磁盘的那个位置
    dir /usr/local/var/db/redis/
    
    //dbfilename配置保存的文件名
    dbfilename dump.rdb
    
    //rdbcompression 配置是否使用压缩来保存二进制文件 默认yes
    rdbcompress  yes
    
    //save配置(最重要)
    save 900 1 //900秒之内如果有1个键被修改的话进行快照
    save 300 10 //300秒之内如果有10个键被修改的话进行快照
    save 60 10000 //60秒之内如果有10000个键被修改的话进行快照

    由于redis在启动的时候会读入磁盘上面的rdb文件、以达到数据恢复。从而达到持久化的目的,因此像RDB这种从内存问磁盘dump快照的方式有几个缺点:

  • 如果当redis异常死掉时,最近的数据会丢失(最后一次保存快照以后的所有数据修改会丢失、丢失数据的多少视你save策略的配置),所以这是它最大的缺点,当业务量很大时,丢失的数据是很多的。
  • 快照每次都是将内存中的全部数据dump到磁盘上面。势必导致磁盘大量的IO开销。数据量越大越明显。

2. AOF持久化方式

  • 说白了其实aof方式就是一个xxx.aof文件保存下了所以redis执行的写命令。因此在redis启动的时候、只需要按顺序执行该文件中保存的全部写命令就可以实现数据持久化。
  • aof的实现分为 “命令追加”、“文件写入”、“文件同步” 三个步骤。
  • 命令追加:redis再执行一条写命令后,会以协议格式写入redis在内存中开辟的一块aof_buf缓冲区的末尾。
  • 命令写入与同步:服务器结束一个事件循环之前调用flushAppendOnlyFile函数、考虑是否将aof_buf内的内容写入保存到aof文件里面。此函数的行为由redis.conf中的appendfsync 的配置项来决定的。
  • appendfsync的配置项的值说明如下:
  • //将aof_buf中的所有内容写入并同步到aof
    appendfsync  always
    
    //将aof_buf中所有内容写入aof文件、是否同步取决于上次同步到当前的时间是否超过1s。超过则同步。且同步是由一个专门的线程来完成的。
    appendfsync  everysec
    
    //讲所有aof_buf缓冲区中的内容写入aof文件。但是不进行同步操作。
    appendfsync  no

    AOF持久化相关的redis配置项除了上面的appendfsync以外还有以下几个:

  • //决定是否开启aof持久化。默认为no。redis默认使用rdb实现持久化。
    appendonly no
    
    //同rdb种的dir配置一样、决定了aof文件存放再哪里。
    dir /usr/local/opt/redis/
    
    //aof的文件名
    appendfilename   appendonly.aof
    
    //再aof文件的大小超过上次重写时aof文件的大小的 百分之多少时会进行重写。
    auto-aof-rewrite-percentage  100
    
    //当aof文件至少达到多大时才进行重写
    auto-aof-rewrite-min-size  64mb
    
    //重写概念的简单解释如下:
    //由于aof文件中保存各种写命令、而会导致文件迅速膨胀。其实很多写命令可以整理为少数几条写命令而达到一样的效果。重写简单讲就是负责对冗长的写命令进行整理。auto-aof-rewrite-min-size 限制大小就意味着比这个配置小的aof文件没有整理的必要。

    以上仅仅为个人总结~,各位选择性的吸收即可。

时间: 2024-10-12 14:28:03

Redis安全与持久化(适合小白阅读)的相关文章

Redis提供的持久化机制(RDB和AOF)

Redis提供的持久化机制 Redis是一种高性能的数据库,可以选择持久化,也可以选择不持久化. 如果要保存,就会存在数据同步的问题,可以简单认为一份数据放在内存中(快照),一份数据放在磁盘上,Redis提供了很灵活的持久化办法: Redis提供了RDB持久化和AOF持久化,本篇文章中将会对这两种机制进行一些对比 RDB机制的优势和略施 RDB持久化是指在指定的时间间隔内将内存中的数据集快照写入磁盘. 也是默认的持久化方式,这种方式是就是将内存中数据以快照的方式写入到二进制文件中,默认的文件名为

redis 系列16 持久化 RDB

原文:redis 系列16 持久化 RDB 一.概述 Redis是内存数据库,一旦服务器进程退出,服务器中的数据库内存数据状态也会消失.为了解决这个问题,Redis提供了RDB 持久化功能,这个功能可以将redis在内存中的数据库状态保存到磁盘中,避免数据意外丢失. RDB持久化可以手动执行,也可以根据服务器配置选项定期执行,是在指定的时间间隔,对你的数据进行快照存储.该RDB文件快照是一个经过压缩的二进制文件.文件名为dump.rdb,该文件保存在redis目录下,当redis服务器停机后,只

mysql主从复制、redis基础、持久化和主从复制

一.mysql(mariadb)基础 1.基础命令(centos7操作系统下) 1.启动mysql systemctl start mariadb 2.linux客户端连接自己 mysql -uroot -p -h 127.0.0.1 -u 用户 -p 密码验证 -h 连接的主机地址 3.远程链接mysql服务端 mysql -uroot -p -h 192.168.3.115 4.修改mysql密码 # 修改当前用户的密码 set password = PASSWORD('mariadb123

redis两种持久化方式的优缺点

redis两种持久化的方式 RDB持久化可以在指定的时间间隔内生成数据集的时间点快照 AOF持久化记录服务器执行的所有写操作命令,并在服务器启动时,通过重新执行这些命令来还原数据集,AOF文件中全部以redis协议的格式来保存,新命令会被追加到文件的末尾,redis还可以在后台对AOF文件进行重写,文件的体积不会超出保存数据集状态所需要的实际大小, redis还可以同时使用AOF持久化和RDB持久化,在这种情况下,当redis重启时,它会有限使用AOF文件来还原数据集,因为AOF文件保存的数据集

Redis:两种持久化方式RDB和Aof对比(3)

一.RDB快照 1.概念 默认的持久化方案. 在指定时间间隔内,执行指定次数的写操作,则会将内存中的数据写入到磁盘中. 在指定目录下生成一个dump.rdb文件. 重启会通过加载dump.rdp文件恢复数据. 2.对应配置参数 save <seconds> <changes> eg: save 900 1 save 300 10 save 60 10000 若不想用RDB方案,则为save "" # 时间策略save 900 1 save 300 10 save

redis的数据持久化

就目前自己的理解redis和memcache的区别就是redis可以数据持久化,支持的数据类型有5种 所以就数据持久化这块可以好好了解一下 我们安装的redis的2.6版本,安装之后默认就已经开启了rdb 数据持久化分rdb和aof 快照:(snapshotting)它将某一时刻的的所以数据写入硬盘 只追加文件:(append-only file) 他会在执行写命令时,将会把写命令复制到磁盘里面 快照(rdb): save 900 1     #900秒时间,至少有一条数据更新,则保存到数据文件

Redis两种持久化方式(RDB&amp;AOF)

爬虫和转载请注明原文地址;博客园蜗牛:http://www.cnblogs.com/tdws/p/5754706.html Redis所需内存 超过可用内存怎么办 Redis修改数据多线程并发—Redis并发锁 windows下redis基础操作与主从复制 从而 数据备份和读写分离 Redis两种持久化方式(RDB&AOF) Redis的持久化过程中并不需要我们开发人员过多的参与,我们要做的是什么呢?除了深入了解RDB和AOF的作用原理,剩下的就是根据实际情况来制定合适的策略了,再复杂一点,也就

23种设计模式大全(适合新手阅读)

原文:23种设计模式大全(适合新手阅读) 第Ⅰ部分 开篇 序章 第Ⅱ部分 创建型模式篇 第1章 单例模式(Single Pattern) 第2章 简单工厂模式(Sample Factory) 第3章 抽象工厂模式(Abstract Factory) 第4章 建造者模式(Builder Pattern) 第5章 原型模式(Protype Pattern) 第Ⅲ部分 结构型模式篇 第6章 适配器模式(Adapter Pattern) 第7章 桥接模式(Bridge Pattern) 第8章 装饰模式

Redis的多种持久化方式总结

话题:Redis的多种持久化方式: Redis是个支持持久化的内存数据库,redis需要经常将内存中的数据同步到磁盘来保证持久化. 1.RDB方式(Snapshotting默认快照方式): 1.1)配置: save 900 1       #在900秒(15分钟)之后,如果至少有1个key发生变化,则dump内存快照. save 300 10      #在300秒(5分钟)之后,如果至少有10个key发生变化,则dump内存快照. save 60 10000    #在60秒(1分钟)之后,如