Redis非关系型数据库

一、Redis的事务管理
Redis的事务管理是基于乐观锁实现的,主要是为了保证事务的一致性;一旦开启事务后,Redis的所有命令都会进入到一个queue,只有commit,才会依次执行队列中的命令;事务必须在一个连接(Connection)中执行,通常Spring中会使用SessionCallback接口进行处理;
二、Redis的超时命令
Redis是基于内存存储数据的,所以Redis的数据存储能力是有限的;在实际开发过程中,开发人员应该操作Redis存储数据库中的热点数据;这时候需要缓存预热和超时命令;
Redis的key到期,不会立刻从内存中删除
有三种情况会移除过期的key:
1>当使用到这个key的时候,此时发现key过期了,就会删除;
2>Redis自带一个定时扫描器,默认频率是1次/s;
3>触发Redis的内存淘汰策略
三、Lua脚本
Redis是单线程模型的非关系型数据库,但是Redis的数据不一定是安全的,为了确保Redis的数据安全,Redis提供了一套Lua脚本,将一套业务操作封装到Lua脚本中,一起发送到Redis服务,Redis单线程执行这个脚本时,可以保证不会去执行其他客户端的命令,从而达到原子性的操作,保证数据的一致性;
Lua脚本可以通过Redis实现分布式锁的功能;
四、Redis的持久化
1>rdb:快照(默认行为)
快照就是将当前Redis内存数据结构直接保存到硬盘的一个文件中;
2>aof:只追加文件
记录用户所有的增删改操作的命令,写到硬盘文件中,当Redis服务重启时,直接根据aof文件依次执行这些增删改命令,从而达到恢复数据的目的
rdb与aof对比:
1、通常来说快照的恢复速度会远快于aof文件,但是aof文件相对rdb会更安全,因为aof最多只会丢失1S以内的数据,所以Redis在恢复数据的时候会优先恢复aof;
2、如果需要比较安全的做法,则同时开启rdb和aof,但是不能保证数据的绝对安全;
3、如果只是需要Redis作为缓存服务器使用,可以关闭rdb和aof,将Redis的性能提到最高;
4、rdb性能比aof要高,因为是快照,执行频率也比aof要低,rdb文件直接存储的是key-value的二进制形式,对于恢复速度也快,aof文件存储的是命令,恢复数据的时候需要逐行执行命令,所以恢复速度慢
五、Redis的内存回收策略
Redis有以下回收策略:
volatile-lru:从所有设置了超时时间的key中,选择一个最近最少被使用的key淘汰掉,如果没有课删除的key对象,会回退到noeviction策略
allkeys-lru:从所有的key中,选择一个最近最少被使用的key淘汰掉
volatile-lfu:从所有设置了超时时间的key中,选择一个总共最少被使用的key淘汰掉,如果没有课删除的key对象,会回退到noeviction策略
allkeys-lfu:从所有的key中,选择一个总共最少被使用的key淘汰掉
volatile-random:从所有设置了超时时间的key中,随机选择一个key淘汰掉,直到释足够的内存为止
allkeys-random:从所有的key中,随机选择一个key淘汰掉,直到释放足够的内存空间为止
volatile-ttl:从所有设置了超时时间的key中,选择一个存活时间最短的key淘汰掉,如果没有,就会回退到noeviction策略
noeviction(默认策略):redis内存满了之后,变成只读模式,拒绝所有写入的操作,并返回oom错误信息;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值