一、Redis
1. 通用键值操作
1)键的查看操作
- keys命令
- 基本功能:查询当前数据库中的所有key,支持精确查询和模糊查询
- 与memcached区别:memcached无法查询所有key,这是Redis特有的功能
- 查询示例:
- keys * 返回所有key(如"age"和"site")
- keys site 精确查询指定key
- keys s* 查询以s开头的key
- 通配符
- 三种通配符:
- *:匹配任意多个字符(如keys o*返回"one")
- ?:匹配单个字符(如keys si?e匹配"site")
- []:匹配括号内任意一个字符(如keys on[eaw]匹配"one")
- 注意事项:
- 通配符语法类似正则表达式但不完全相同
- 错误命令key *会报错,正确命令是keys *
- 中括号匹配更精确,适合需要限定特定字符的场景
- 随机返回键
- 功能:randomkey命令随机返回数据库中的一个key
- 应用场景:适用于抽奖等需要随机选取的场景
- 特点:返回结果无规律,可能连续返回相同key(如连续返回"site"或"age")
- 判断键的类型
- 命令格式:type key(如type age返回"string")
- 返回值类型:包括string、link、set、order set、hash五种
- 特殊说明:
- Redis没有专门的int类型,数字也以字符串形式存储
- 所有数值都是64位有符号整数形式存储
- 判断键是否存在
- 命令格式:exists key(如exists age返回1,exists title返回0)
- 返回值:存在返回1,不存在返回0
- 组合应用:常与keys命令配合使用,先查询再判断具体key是否存在
2)键的生命周期操作
- 核心概念:Redis中key默认永久有效,但可通过命令设置有效期实现缓存功能
- 版本差异:Redis 2.8开始对不存在的key返回-2(之前版本返回-1),便于区分不存在/永久有效的key
- 查询键的生命周期
- TTL命令:
- 语法:ttl key
- 返回值:剩余秒数(正数)/特殊状态(负数)
- 状态码:
- -1:key存在且永久有效(或Redis 2.8前不存在的key)
- -2:key不存在(仅Redis 2.8+)
- 注意:已过期的key会被自动删除,查询结果等同于不存在的key
- PTTL命令:
- 语法:pttl key
- 区别:以毫秒为单位返回剩余生命周期
- 示例:pttl search返回5207表示剩余5.207秒
- TTL命令:
- 设置键的生命周期
- EXPIRE命令:
- 语法:expire key 秒数
- 特性:设置成功后key自动过期删除
- 示例:expire search 10设置10秒有效期
- PEXPIRE命令:
- 语法:pexpire key 毫秒数
- 应用场景:需要更精确的时间控制时使用
- 示例:pexpire search 9000设置9秒有效期
- 复合操作:
- SET+EXPIRE:set key value ex 10(原子性操作)
- 注意:避免同时指定ex和px参数,以后出现的参数为准
- EXPIRE命令:
- 将键设置为永久有效
- PERSIST命令:
- 语法:persist key
- 效果:移除key的过期时间,使其永久有效
- 返回值:1(成功)/0(key不存在或已是永久有效)
- 示例流程:
- set site www.zixue.it
- expire site 10
- persist site → 使site永久有效
- 典型应用:
- 将临时缓存转为持久化数据
- 取消已设置的过期时间
- PERSIST命令:
二、知识小结
知识点 |
核心内容 |
关键命令/操作 |
注意事项 |
Redis数据结构类型 |
字符串(string)、哈希(hash)、链表(list)、集合(set)、有序集合(sorted set) |
TYPE key |
Redis没有专门的int类型,数值都以字符串形式存储 |
通用键值操作 |
查询所有键、随机返回键、判断键存在、删除键、重命名键、移动键 |
KEYS pattern RANDOMKEY EXISTS key DEL key RENAME key newkey MOVE key db |
KEYS *会返回所有键,生产环境慎用 RENAME会覆盖已存在的键 |
键名模式匹配 |
支持通配符查询键名 |
KEYS s* (星号匹配) KEYS s?t (问号匹配) KEYS s[ae]t (字符集匹配) |
通配符规则类似正则表达式: *=任意多个字符 ?=单个字符 []=匹配括号内任一字符 |
数据库管理 |
Redis默认16个数据库(0-15) |
SELECT index (切换数据库) DBSIZE (查看键数量) |
不同数据库完全隔离,默认使用db0 |
键生命周期控制 |
设置/查询键的过期时间 |
EXPIRE key seconds TTL key PERSIST key (移除过期时间) PEXPIRE/PTTL (毫秒单位) |
TTL返回-1表示永久有效,-2表示键不存在 过期键会被自动删除 |
字符串类型操作 |
基本键值存储操作 |
SET key value GET key MSET/MGET (批量操作) |
所有命令演示都基于字符串类型开始 |
重点实践建议 |
命令学习方法论 |
- 理解命令功能 - 掌握参数格式 - 实际动手练习 |
强调不能仅靠听课,必须实际操作每个命令 |