Redis 事务与持久化

Redis的事务

事务的概念

事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。

事务是一个原子操作:事务中的命令要么全部被执行,要么全部都不执行。(其实在数据库中的操作基本都可以理解成是事务)

 

Redis 事务命令

MULTI     标记一个事务块的开始。

EXEC   执行所有事务块内的命令。

DISCAR  取消事务,放弃执行事务块内的所有命令。

WATCH key [key ...]   用于在进行事务操作的最后一步也就是在执行exec 之前对某个key进行监视,如果这个被监视的key被改动,那么事务就被取消,否则事务正常执行

UNWATCH   取消 WATCH 命令对所有 key 的监视

 

用Jedis完成Redis的事务操作

1.创建一个事务对象(代表开启事务)

Tracnsaction mulit=jedis.multi();

2.用事务对象进行对redis的操作

#举例为存储一个string对象,可以存储多个

mulit.set("key","value");

3.提交或回滚

mulit.exec() 提交

mulit.discar() 回滚

 

用stringRedisTemplate完成Redis事务操作

1.开启事务

stringRedisTemplate.multi()

代表从此行开始的代码直至提交或回滚前都是一次事务

2.执行命令

3.提交或回滚

stringRedisTemplate.exec();提交

此方法返回值为一个执行结果的list集合

stringRedisTemplate.discard();回滚

 

Redis持久化

RDB

rdb模式是redis默认开启的模式

redis的数据一开始是在内存上的,rdb持久化的方式会在经过一段时间后将数据持久化,形成dump.rdp文件

在redis.windows.conf(linux中为redis.conf)文件中的


save  可以改变rdb模式的保存时间。

save 900 1 表示如果数据库发生了一次改变,那么900秒后将会触发数据库的持久化功能

save 300 10 表示如果数据库发生了至少十次改变,那么300秒后将会触发数据库的持久化功能

dbfilename  字段表示持久化之后的文件名记住用.rdb首尾

dir ./  字段表示持久化数据所保存的文件地址./为默认地址

stop-writes-on-bgsave-error yes   当snapshot时出现错误无法继续时,是否阻塞客户端“变更操作”,“错误”可能因为磁盘已满/磁盘故障/OS级别异常等

rdbcompression yes  是否启用rdb文件压缩,默认为“yes”,压缩往往意味着“额外的cpu消耗”,同时也意味这较小的文件尺寸以及较短的网络传输时间  

AOF

是基于日志的持久化方式

1.可以关闭rdb持久化模式(将生成时间和保存路径注释掉即可)

2.开启AOF持久化模式

在redis.windows.conf(linux中为redis.conf)中

appendonly no改为appendonly yes

appendfilename aof持久化保存到本地的文件名称用.aof首尾

appendfsync aof模式的持久化机制,有三个取值

always 每一次操作持久化一次

everysec 每秒进行一次持久化

no redis 并不直接调用文件同步,而是交给操作系统来处理,操作系统可以根据 buffer 填充情况 / 通道空闲时间等择机触发同步;这是一种普通的文件操作方式。性能较好,在物理服务器故障时,数据丢失量会因 OS 配置有关

no-appendfsync-on-rewrite no  在aof-rewrite期间,appendfsync是否暂缓文件同步,"no"表示“不暂缓”,“yes”表示“暂缓”,默认为“no” 

aof-rewrite的含义

因为aof模式会记录每一条操作,所以redis提供了一种可以在不接触原aof文件的情况下,获得一份数据层面上完全相同的aof整合备份的文件

详细可见

AOF重写和其实现原理  转载

auto-aof-rewrite-min-size 64mb 触发重写的最小文件大小默认为64mb推荐使用512mb

auto-aof-rewrite-percentage 100  相对于“上一次”rewrite,本次rewrite在aof文件体积增长百分之多少后再一次触发

Redis的发布和订阅

简单来说就是有监听功能和广播功能的信息交互

可以参考redis发布与订阅

猜你喜欢

转载自www.cnblogs.com/codenamehuhuhu/p/12767933.html