Redis通用命令 & key的过期删除策略
Redis 提供了一套通用的命令来操作 key,并且 key 可以设置过期时间,过期后将根据删除策略自动删除。
Redis 通用命令
DEL key [key ...]
:删除给定的一个或多个 key。DUMP key
:返回给定 key 的序列化版本。EXISTS key [key ...]
:检查给定 key 是否存在。EXPIRE key seconds
:为给定 key 设置过期时间。EXPIREAT key timestamp
:EXPIREAT 的作用和 EXPIRE 类似,都是设置 key 的过期时间。 不同在于 EXPIREAT 命令接受的时间参数是 UNIX 时间戳。KEYS pattern
:查找所有符合给定模式的 key。MOVE key db
:将当前数据库的 key 移动到给定的数据库 db 当中。PERSIST key
:移除 key 的过期时间,key 将持久保留。PTTL key
:以毫秒为单位返回 key 的剩余的过期时间。TTL key
:返回 key 的剩余生存时间。RANDOMKEY
:随机返回数据库里的一个 key。RENAME key newkey
:将 key 改名为 newkey。RENAMENX key newkey
:仅当 newkey 不存在时,将 key 改名为 newkey。TYPE key
:返回 key 所储存的值的类型。
key 过期删除策略
Redis 的 key 过期删除策略主要有以下几种:
- 惰性删除:当访问 key 时,如果发现 key 已经过期,就立即删除。
- 定时删除:为每个 key 设置一个定时器,一旦过期就自动删除。
- 惰性+定时删除:结合两者优点,先通过惰性删除提高响应速度,再通过定时删除保证内存被有效释放。
- 惰性+定时+惰性删除:对上述方案进行优化,避免删除操作影响性能。
Redis 采用的是惰性删除和定时删除的策略。
示例代码
import redis
# 连接 Redis
r = redis.Redis(host='localhost', port=6379, db=0)
# 设置 key
r.set('key', 'value')
# 设置 key 过期时间为 10 秒
r.expire('key', 10)
# 查询 key 的剩余生存时间
ttl = r.ttl('key')
print(f'The TTL of key is: {ttl}')
# 删除 key
r.delete('key')
# 检查 key 是否存在
exists = r.exists('key')
print(f'Does key exist? {exists}')
以上代码演示了如何在 Redis 中设置 key 的过期时间,检查 key 是否存在,以及如何删除 key。当 key 过期后,Redis 会根据上述策略自动删除。
评论已关闭