首页 > 技术文章 > Redis_事务+lua脚本_持久化策略

LZXX 2022-05-29 18:37 原文

Redis_事务+lua脚本

正常关系型数据库 执行事务的时候 都是遵守ACID模式-要么都执行-要么都失败

Redis的事务为了简单化,:提交失败-没有回滚,提交了就提交了-所以也就代表着没有锁,在更新的时候,其他程序改动了里面的值,redis提交也算成功

简单使用方法:如果要使用redis事务,则需要和Watch方法一起使用,而且是要监听,所有需要改动的Key

 

秒杀案列:lua脚本 如下

 

 

 

 

 

Redis_持久化-把内存数据变成为硬盘数据

两种持久化形式:

  rdb,(拍快照)-每次都是全量的备份 redis 默认开启rdb     备份慢,服务重启之后加载数据慢=快

  AOF(日志)-在之前的基础上追加  手动开启AOF  备份快,服务重启之后加载数据慢。

  但是redis看场景使用持久化,做缓存就不建议使用持久化,因为持久化必然要开启aof记录操作日志(影响性能)

4.x以前的redis 重启之后只会读取AOF内容,4.x之后, 默认开启 aof+rdb模式    Aof的数据很大到达阈值就转成1个rdb,然后重新追加 又是AOF 

 

 

   假如重启服务器缓存没了呢?可以使用主从模式   AOP三种追加形式

 

 

 

 

 手动备份策略

1.save:阻塞线程,备份大量的线程的时候 耗时长(将内存数据镜像保存为rdb文件,由于Redis是单线程模型,期间会阻塞redis的服务进程,就不再处理其他指令),其他客户端发送指令过来就会卡住

2.bgsave:后台专门有1个线程专门备份的。底层原理:有1给定时器 不停的计算1个阈值(根据配置文件里面的条件判断)。每一次bgsave之后,计数器就清零

 

AOF重写问题?

如果文件越来越多.当数据文件到达一个阈值的时候,文件会继续重写,变成1个小的文件

 

推荐阅读