Redis事务,监视,jedis,持久化

Redis事务的本质:命令的集合。一个事务中的所有命令都会被序列化,在事务执行过程中按顺序执行,一次性、顺序性、排他性。

Redis事务没有隔离级别的概念

命令入队不会执行,而是等待执行指令下达再按顺序执行

Redis单条命令具有原子性,但事务不保证原子性

redis的事务:

开启事务(multi)

命令入队

执行事务(exec)

multi

set k1 v1 

get k1

set k2 v2

exec 事务范例

discard 取消事务

乐观锁 认为无论什么时候都不会发生问题,所以不加锁,数据更新前判断一下数据是否异常(mysql用version redis用watch)

监视  watch 监视数据的最新值,事务执行前比对是否发生变化

unwatch解除监视

jedis实例

 Jedis jedis=new Jedis("127.0.0.1",6379);
       JSONObject jsonObject=new JSONObject();
       jsonObject.put("name","wuchao");
       jsonObject.put("age", "22");
       Transaction multi=jedis.multi();
       multi.set("user1",jsonObject.toString());
       multi.set("user2",jsonObject.toString());

       try {
           multi.exec();
       } catch (Exception e) {
           multi.discard();
       } finally {
           System.out.println(jedis.get("user1"));
           System.out.println(jedis.get("user2"));
           jedis.close();
       }

redis-config解析

 

 

持久化 RDB(redis database)

父进程继续工作,fork出一个子进程生成临时RDB文件,快照写入磁盘成为正式RDB文件,会覆盖掉上一个记录

rdb保存的文件名是dump.rdb,可以在配置文件的dbfilename快照中设置

触发机制:
1.save的规则满足的情况下就会触发(例save 60 5 60秒内修改5次触发)

2.执行flushall会触发

3.退出redis会自动触发

如何恢复dump.rdb中的数据

将RDB文件放在redis的启动目录下就可以了,redis启动的时候会自动检查dump.rdb,恢复其中的数据

优点:适合大规模数据恢复,对数据的完整性要求不高

缺点:需要一定的时间间隔进行操作,如果redis意外宕机,会丢失最后一次修改的数据,

 fork子进程会消耗一定的内存

AOF(Appendonly file)

以日志的形式记录每个写操作,只允许追加文件,不许修改文件,redis启动之初会读取该文件(appendonly.aof),从前到后执行其中记录的命令,重新构建数据。

配置文件中默认关闭appendonly持久化,可将appendonly选项改为yes以开启,再重启redis就生效了。如果appendonly.aof文件有错位,则redis无法启动该文件,这时可以运行redis-check-aof修复。

优点:每一次修改后同步,文件完整性有保障

每秒同步一次,可能丢失一秒的数据

从不同步,效率最高

缺点:aof文件所占空间远大于rdb文件,修复速度也比rdb慢

aof运行效率也比rdb慢,所以redis默认使用rdb持久化

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值