redis事务

1.原子性:
redis执行批量操作前,先开启mutil命令,然后将操作请求加入队列缓存(list lpush 操作) ,收到exec命令后,进入事务执行,队列中操作失败不影响其他操作
事务执行过程中,其他客户端发出的命令请求,不会影响当前事务执行;      redis放弃回滚
2.一致性:
事务执行前后数据状态一致,例如扣钱后,用于余额不可能为负数,redis放弃了回滚,也就是说放弃了对数据一致性的保证;redis大多采用分片和集群,数据一致性无法依靠事务机制,可以通过应用层解决
3.隔离性:
redis采用单线程设计,其他客户端命令操作无法看到进行中事务状态
4.持久性:
redis持久化有两种方式:rdb快照以及aof(append only file)
rdb快照:借助fork命令copy-on-write机制,生成快照时,fork出一个子进程,在子进程中循环所有的数据,例如某个数据达到了1分钟内更改60次,则将此数据放到rdb文件中
在redis配置文件中配置:1、save  900 1              #当900秒内有一条Keys数据被改变时,生成RDB;
aof:每修改一条数据,都生成一条日志,这样会导致日志数据量很大,redis提供了AOF-rewriter功能,重新生成一个日志文件,新的AOF文件中,对同一个数据操作只会记录一次,写入新文件过程中,写入老文件日志,会同时写入内核缓冲区,重写操作完成后,会将内核缓存区数据一次写入到新文件中,然后rename新文件,取代老的AOF文件
aof日志同步到磁盘方式:
1.appendfsync no 
appendfsync这是为no,redis不会主动调用fsync将日志同步到磁盘,此时,依赖操作系统,大多数linux操作系统,每隔30s,调用一次fsync,将缓冲区日志同步到磁盘
2.appendfsync everysec
redis每隔1秒,调用fsync,将缓冲区数据写入磁盘,如果fsync超过1是,就会延迟到第二秒时fsync,但是最多2s,
3.appendfsync always
每一个写操作,redis都会调用fsync,将缓冲区数据写入磁盘,这样数据最安全,但是性能下降

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值