redis 通用命令详解
Redis 通用命令详解Redis 通用命令是不区分数据类型、对所有类型的 key 都生效的命令主要用于对 key 本身进行管理查询、删除、存在性判断、设置过期等1. KEYS 命令命令作用按照指定的匹配规则查找并返回所有符合条件的 key。语法格式KEYS pattern支持的通配符规则*匹配 0 个或多个任意字符?匹配恰好 1 个任意字符[abc]匹配括号内的任意一个字符a / b / c重要注意事项Redis 是单线程模型KEYS命令会全量遍历所有 key。当数据库中 key 数量很大时会长时间阻塞 Redis 主线程导致服务无法响应其他请求。生产环境严禁使用生产环境推荐使用SCAN命令进行增量迭代查询不会阻塞服务。示例# 先准备几个测试 key127.0.0.1:6379setuser:1 zhangsan OK127.0.0.1:6379setuser:2 lisi OK127.0.0.1:6379setproduct:100 phone OK127.0.0.1:6379setage20OK# 1. 查询所有 key* 匹配所有127.0.0.1:6379KEYS *1)user:12)user:23)product:1004)age# 2. 查询所有以 user: 开头的 key127.0.0.1:6379KEYS user:*1)user:12)user:2# 3. 查询名字只有3个字符的 key? 匹配单个字符127.0.0.1:6379KEYS ???1)age2. DEL 命令命令作用删除指定的一个或多个 key不存在的 key 会被自动忽略。语法格式DEL key [key ...]返回值成功被删除的 key 的数量支持批量删除多个 key操作是原子性的示例# 准备测试数据127.0.0.1:6379setk1 v1 OK127.0.0.1:6379setk2 v2 OK127.0.0.1:6379setk3 v3 OK# 1. 删除单个 key127.0.0.1:6379DEL k1(integer)1# 返回1表示成功删除1个key# 2. 删除多个 key包含一个不存在的 k4127.0.0.1:6379DEL k2 k3 k4(integer)2# 返回2k2、k3被删除k4不存在被自动忽略3. EXISTS 命令命令作用判断指定的 key 是否存在支持同时判断多个 key。语法格式EXISTS key [key ...]返回值存在的 key 的总数量如果传入多个 key不会要求全部存在才返回而是统计存在的个数。实操示例# 准备测试数据127.0.0.1:6379setname tom OK127.0.0.1:6379setage18OK# 1. 判断单个 key 是否存在127.0.0.1:6379EXISTS name(integer)1# 1 表示存在# 2. 判断不存在的 key127.0.0.1:6379EXISTS gender(integer)0# 0 表示不存在# 3. 同时判断多个 key127.0.0.1:6379EXISTS name age gender(integer)2# 有 2 个 key 存在name、agegender 不存在4. EXPIRE 命令命令作用给指定的 key 设置过期时间单位秒过期时间结束后该 key 会被 Redis 自动删除。语法格式EXPIRE key seconds返回值设置成功返回1key 不存在或者无法设置过期时间时返回0。同类扩展命令PEXPIRE key milliseconds毫秒级设置过期时间EXPIREAT key timestamp通过 Unix 时间戳秒级指定具体过期时间点PERSIST key移除 key 的过期时间让 key 变为永久有效实操示例# 准备测试 key127.0.0.1:6379setcode8848OK# 1. 给 code 设置 60 秒的过期时间127.0.0.1:6379EXPIRE code60(integer)1# 设置成功# 2. 给不存在的 key 设置过期时间127.0.0.1:6379EXPIRE not_exist100(integer)0# key 不存在设置失败# 3. 移除过期时间让 key 永久有效127.0.0.1:6379PERSIST code(integer)1# 移除成功5. TTL 命令命令作用查看指定 key 的剩余过期时间单位为秒。语法格式TTL key返回值有 3 种典型情况正整数key 剩余的有效秒数-1key 存在但没有设置过期时间永久有效-2key 不存在同类扩展命令PTTL key返回毫秒级的剩余过期时间。实操示例# 准备一个带过期时间的 key127.0.0.1:6379settoken abc123 OK127.0.0.1:6379EXPIRE token120(integer)1# 1. 查看剩余过期时间127.0.0.1:6379TTL token(integer)115# 还剩 115 秒过期# 2. 查看永久有效的 key127.0.0.1:6379setname jack OK127.0.0.1:6379TTL name(integer)-1# -1 表示永久有效# 3. 查看不存在的 key127.0.0.1:6379TTL not_exist(integer)-2# -2 表示 key 不存在补充help 命令命令作用在 redis-cli 中查看任意 Redis 命令的官方说明包括语法、作用、引入版本、所属分组等。语法格式help 命令名实操示例127.0.0.1:6379helpdel DEL key[key...]summary: Delete a key since:1.0.0 group: generic