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个小的文件