Redis事务+内存管理策略(淘汰机制)
2021-03-01 23:42:04 0 举报
AI智能生成
Redis事务+内存管理策略(淘汰机制)
作者其他创作
大纲/内容
Redis 事务
概念
Redis 事务的本质是一组命令的集合。事务支持一次执行多个命令,一个事务中所有命令都会被序列化
一句话:Redis 事务就是一次性、顺序性、排他性的执行一个队列中的一系列命令
特点
没有隔离级别的概念
批量操作在事务提交前被放入缓存队列,并不会被实际执行
不保证原子性
Redis中单条命令是原子性执行的,但事务不保证原子性,且没有回滚
事务中任意命令执行失败,其余的命令仍会被执行
三阶段
开始事务、命令入队、执行事务
相关命令
watch key1 key2 ...:监视一或多个key,如果在事务执行前,被监视的key被其他命令改动,则事务执行失败
multi:标记一个事务块的开始
exec:执行所有事务块的命令(一旦执行exec后,不论成功与否,之前加的监控锁都会被取消掉)
discard:取消事务,放弃事务块中的所有命令
unwatch:取消watch对所有key的监控
常见问题
若在事务队列中存在「命令性错误」,则执行EXEC命令时,所有命令都不会执行
若在事务队列中存在「语法性错误」,则执行EXEC命令时,错误命令抛出异常,其他正确命令会被执行
内存管理策略
定时删除
创建一个定时器
消耗内存,不推荐使用
惰性删除
用到的时候发现过期才删,可能存在大量过期key
定期删除
redis默认每隔100ms就随机抽取一些过期的key删除
内存淘汰机制
no-enviction:禁止驱逐数据,再写入会报错(默认不回收)
allkeys-lru:从数据集中挑选最近最少使用的数据淘汰(推荐使用)
allkeys-random:从数据集中任意选择数据淘汰
volatile-lru:从已设置过期时间的数据集中挑选最近最少使用的数据淘汰
volatile-ttl:从已设置过期时间的数据集中挑选将要过期的数据淘汰
volatile-random:从已设置过期时间的数据集中任意选择数据淘汰
0 条评论
下一页