Redis中的数据库

本文详细介绍了Redis中的数据库,包括默认的16个数据库和如何切换。此外,讨论了键的生存时间设置,如EXPIRE、PEXPIRE、EXPIREAT和PEXPIREAT命令。接着,探讨了过期键的删除策略,包括定时删除、惰性删除和定期删除的优缺点。最后,提到了AOF、RDB和复制功能对过期键的处理方式,确保数据的正确性和内存管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、Redis中的数据库

在Redis中,每个客户端都有自己的目标数据库,每当客户端执行数据库写命令或者数据库读命令的时候,目标数据库就会成为这些命令的操作对象。

默认情况下,Redis有16个数据库,从0号数据库到15号数据库。

在默认情况下,Redis客户端的数据库为0号数据库,但客户端可以通过执行select命令来切换数据库。切换之后,在客户端中会显示数据库的标号(当然0号数据库不显示)

抠张图看看

二、Redis键的生存时间或过期时间

在Redis中,通过EXPIRE或者PEXPIRE命令,你可以以秒或者毫秒为数据库中的某个键设置生存时间,在经过指定的数秒或者毫秒之后,服务器就会自动删除生存时间为0的键。

抠张图看看

 与EXPIRE或者PEXPIRE命令类似,客户端可以通过EXPIREAT或者PEXPIREAT命令,以秒或者毫秒给数据库中的某个键设置过期时间,其中,过期时间为一个UNIX时间戳,当键的过期时间来临时,服务器就会删除这个键。

抠张图看看

TTL和PTTL命令接受一个带有生存时间或者过期时间的键,返回这个键的生育生存时间,也就是,返回距离这个键被服务器自动删除还有多长时间。

抠张图看看

 在上面的四种设置键的生存时间或过期时间,但实际上EXPIRE、PEXPIRE、EXPIREAT都是使用PEXPIREAT来实现的,都是由PEXPIREAT转换而来的。

三、过期键的删除策略

在Redis中,对于键的删除,有三种策略

①定时删除:在设置键的过期时间的同时,创建一个定时器,让定时器在键的过期时间来临时,立即执行对键的删除操作

优缺点:

       a、定时删除策略对内存是最友好的,但是对CPU时间是最不友好的,因为在过期键较多的情况下,删除过期键这一行为可能会占用相当一部分CPU时间,这样便会对服务器的响应时间和吞吐量造成影响。

②惰性删除:放任键过期不管,但是每次从键空间获取键时,都检查取得的键是否过期,如果过期,则删除该键,不然,返回该键

优缺点:

       a、惰性删除策略对CPU时间是最友好的,但是对内存不友好,如果一个键已经过期,而这个键又仍然留在数据库中,那么只要这个件不被删除,它所占用的内存就不会释放。很有可能导致内存泄漏----无用的垃圾数据占用了大量的内存。

③定期删除:每隔一段时间,程序对数据库进行一次检查,删除里面的过期键。

优缺点:定期删除策略是前两种策略的一种整合和折中:

            a、定期删除策略每隔一段时间执行一次删除过期键操作,并通过限制删除操作执行的时长和频率来减少对CPU时间的影响。

            b、通过过期删除过期键,定期删除策略有效的减少了因为过期键而带来的内存浪费

四、AOF、RDB和复制功能对过期键的处理

①生成RDB文件:在执行SAVE命令或者BGSAVE命令创建一个新的RDB文件时,程序对数据库中的键进行检查,已过期的键不会被保存到新创建的RDB文件中,因此,数据库包含过期键不会对生成新的RDB文件造成影响。

②载入RDB文件:在启动Redis服务器时,如果服务器开启了RDB功能,那么服务器将对RDB文件进行载入:

       a、如果服务器以主服务器模型运行,那么在载入RDB文件时,程序会对文件中保存的键进行检查,未过期的键会被载入数据库,而过期键会被忽略

       b、如果服务器以从服务器模式启动,那么在载入RDB文件时,则不会考虑键的过期,所有键会被全部载入数据库中。不过在主从服务器进行数据同步时,从服务器的数据库就会被清空。

③AOF文件写入:当服务器以AOF持久化模式运行时,如果数据库中的某个键已经过期,但它还没有被惰性删除或者定期删除,那么AOF文件不会因为这个过期键而产生任何影响。

      当过期键被惰性删除或者定期删除之后,程序会向AOF文件追加一条DEL命令,来显式的记录该键被删除

④AOF重写:和生成RDB文件类似,在执行AOF重写的过程中,程序会对数据库中的键进行检查,已过期的键不会被保存到重写后的AOF文件中。

⑤主从复制

当服务器运行在复制模式下,从服务器的过期键删除动作由主服务器控制:

      a、主服务器在删除一个过期键之后,会显式的向所有从服务器发送一个DEL命令,告知从服务器删除这个键

      b、从服务器在执行客户端的读命令时,即使碰到过期键也不会将过期键删除,而是继续像处理未过期的键一样来处理过期键

      c、从服务器只有在接到主服务器发来的DEL命令后,才会删除过期键

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值