Redis笔记

1.expire 和 pexpire
expire 设置过期时间为ttl秒
pexpire 设置过期时间为ttl毫秒

2.expireat 和 pexpireat
expireat 过期时间设置为timestamp所指定的秒数时间戳
pexpireat 过期时间设置为timestamp所指定的毫秒数时间戳

3.ttl 和 pttl
查看剩余生存时间(秒 / 毫秒)

4.persist
移除一个键的过期时间

过期键删除策略
Redis服务器实际使用惰性删除 和 定期删除 2种策略:通过配合使用这2种删除策略,服务器可以很好地在合理使用CPU时间和避免浪费内存空间之间取得平衡。

AOF 、RDB和复制功能对过期键的处理
RDB
在执行SAVE命令或者BGSAVE命令创建一个新的RDB文件时,程序会对数据库中的键进行检查,已过期的键不会被保存到新建的RDB文件中。
载入RDB文件
如果服务器是以主服务器模式运行,那么在载入RDB文件时,程序会对文件中保存的键进行检查,未过期的键会被载如到数据库中,而已过期键则会被忽视。所以过期键对载入RDB文件的主服务器不会造成影响。

如果服务器以从服务器模式运行,那么在载入RDB文件时,文件中保存的所有键,无论是否过期,都会被载入到数据库中。不过,因为主从服务器在进行数据同步的时候,从服务器的数据就会被清空,所以一般来讲,过期键对载入RDB文件的从服务器也不会造成影响。

AOF
当服务器已AOF持久化模式运行时,如果数据库中的某个键已经过期,但它还没有被惰性或者定期删除,那么AOF文件不会因为这个过期键而产生任何影响。
当过期键被惰性删除或定期删除后,程序会向AOF文件追加一条DEL命令,来显式地记录该键已被删除。
AOF重写
和生成RDB文件时类似,在执行AOF重写的过程中,程序会对数据库中的键进行检查,已过期的键不会被保存到重写后的AOF文件中。

RDB文件的创建与载入
有2个命令用于生存RDB文件,SAVE和BGSAVE
SAVE:会阻塞Redis服务器进程,直到RDB文件创建完毕为止,在服务器进程阻塞期间,服务器不能处理任何命令
BGSAVE:会派生出一个子进程,然后由子进程负责创建RDB文件,服务器进程继续处理命令请求

只要Redis服务器在启动时检测到RDB文件存在,它就会自动载入RDB文件。

Redis内存回收机制
C语言并不具备自动内存回收功能,所以Redis在自己的对象系统中构建了一个引用计数(reference counting)技术实现的内存回收机制,通过这一机制,程序可以通过跟踪对象的引用计数信息,在适当的时候自动释放对象并进行内存回收。
对象的引用计数信息会随着对象的使用状态而不断变化:
在创建一个新对象时,引用计数值会初始化为1;
当对象被一个新程序使用时,它的引用计数值会+1;
当对象不再被一个程序使用时,-1;
引用计数值变为0,对象所占用的内存会被释放。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值