redis进阶篇

redis多数据库

一个redis实例可以包含多个数据库,客户端可以指定链接哪个数据库(与mysql链接数据库相似)。一个redis实例最多可以提供16个数据库,下表是从0到15,默认连接的是0数据库

select 1
#选择1号数据库

keys *
#查看所有的key

move list1 0
#将0号数据库中的list1移动到0号数据库中

select 0

type list1
#查看数据类型

redis事务的概念

  • 事务的基本命令
    1. multi标记一个事务的开始
    2. exec执行所有事务块内的命令
    3. discard取消事务,放弃执行事务内的所有命令
  • 事务的特性
    1. 事务中的命令都是串行执行的
    2. 事务执行期间redis不会对其他客户端提供任何服务,从而保证事务中的命令呢能够原子化执行
    3. 单个redis命令的执行是原子性的,但是redis没有在事务上增加任何维持原子性的机制,所以redis事务的执行并不是原子性的。事务可以理解为一个打包的批量执行脚本,但是批量指令并非原子化的操作,中间某条指令的失败不会导致前面已做的指令回滚,也会造成后续的指令不做
MULTI
#开启事务

SET book-name "Mastering C++ in 21 days"
SADD tag "C++" "Programming" "Mastering Series"
SMEMBERS tag
EXEC
#提交事务

redis数据持久化

  • RDB数据持久化方式

    • 优势

      1. redis数据库只会包含一个文件存储在硬盘中,对于文件备份辉简单很多
      2. 对于灾难修复,RDB是更好的选择,因为一个文件可以直接拷贝带走,拷贝回来
      3. 性能最大化,redis持久化的时候只分出一些子进程,之后这些子进程会完成持久化工作,避免了服务器进程进行io操作。数据集很大的时候启动效率会更高
    • 劣势

      1. 最大限度的避免数据丢失,RDB做的不是特别好,系统一定在定时持久化之前出现一些档期的情况,还没来得及往硬盘上写,数据就已经丢失了
      2. 因为RDB是通过开启子进程的方式进行持久化操作的,因此当数据集比较大的时候,这个过程可能导致服务器停止一定事件,几十毫秒甚至1秒
    • 配置

      Linux目录中/usr/local/redis/redis-conf目录中找到这样的几行代码

      save 500 1
      save 300 10
      save 60 10000
      

      第一行代码表示:900秒,也就是15分钟至少有一个key发生变化就会持久化一次

      第二行代码表示:300秒,至少有10个key发生变化就会往硬盘中持久化一次

      第三行代码表示:60秒,至少有10000个key发生变化就会往硬盘中持久化一次

      dbfilename dump.rdb
      

      配置中继续往下看,看到这样一行代码,这个dump是数据库的名字

      dir ./
      配置保存路径的位置,这里指的是当前目录下上面的名字,就是持久化的数据库
      
  • AOF数据持久化方式

    • 优势

      1. 可以带来更加高的数据安全性,这种数据持久化方式有三种同步策略,每秒同步,每修改同步(每一次发生数据的变化都会立即被记录到硬盘中,效率最低但是最安全)。
      2. 日志的写入操作是采用append追加的模式,在写入过程中即使出现服务器档期问题,也不会破坏日志文件中已经写入的内容。
      3. 如果日志过大,redist可以自动启动重写机制,redis会不断的将修改的数据写道老的磁盘中,同时redis会创建一个新的文件来记录期间产生了哪些命令被执行了。
      4. AOF包括一个格式非常清晰易于理解的日志文件,用于记录所有的修改操作。通过这个文件就可以完成数据的重建。
    • 劣势

      1. 对于相同的数据集文件,AOF要比RDB要大
      2. 根据同步的策略不同,AOF在运行效率上往往低于RDB,AOF每修改就同步到硬盘上效率没有RDB高。
    • 配置

      linux目录中/usr/local/redis/redis-conf目录中找到这样的几行代码

      qppendonly no
      #the name of the append only file (defaultL:"appendonly.aof")
      
      appendfilename "appendonly.aof"
      

      如果使用AOF的持久化方式,需要把appendonly后面的属性变为yes

      appendonly.aof是用来记录所有修改操作的文件,这个文件还可以用来进行数据的恢复等,例如一条删除数据操作成功后,我们在appendonly.aof文件中把命令去掉,重新运行redis,之前的数据又恢复了

      #appendfSync always
      appendsync everysec
      #appendsync no
      

      这段代码是关于同步策略的一个设置,第一条是每修改就会同步持久化,第二条是每秒同步就会持久化一次,第三条是不会持久化同步

Docker下redis的主从、持久化配置

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值