键的命名方式推荐使用冒号 : 作为分隔符,表示层级关系,比如 satoken:login:last-active:01af07c4-3cf2-41d1-af6c-478df1c4f64f
序列化
DUMP 键名将某个键的值序列化
bash
redis> SET greeting "hello, dumping world!"
OK
redis> DUMP greeting
"\x00\x15hello, dumping world!\x06\x00E\xa0Z\x82\xd8r\xc1\xde"
# 该键在数据库中不存在
redis> DUMP not-exists-key
(nil)[!hint] 为什么要序列化 ?
为了对象可以跨平台存储,进行网络传输,而跨平台存储和网络传输的方式就是 IO,而 IO 支持的数据格式就是字节数组
- 序列化:把对象转化为可传输的字节序列
- 反序列化:把字节序列还原为对象
key 的生命周期
EXISTS 键名检查某个 key 是否存在
- 秒
SETEX 键名 时间 值创建键值对,并设置过期时间【会覆盖】SETNX 键名 时间 值创建键值对,并设置过期时间【当键名不存在时,不做任何操作】
- 毫秒
psetex ……
EXPIRE 时间为 key 设置过期时间【key 会在时间结束时自动删除】【单位是秒】PEXPIRE 时间为 key 设置过期时间【单位是毫秒】
bash
redis> PEXPIRE mykey 1500
(integer) 1TTL 键返回给定 key 的剩余生存时间【单位为秒】PTTL 键返回给定 key 的剩余生存时间【单位为毫秒】
bash
redis> PEXPIRE mykey 1500
(integer) 1
redis> TTL mykey
(integer) 1
redis> PTTL mykey
(integer) 1498PERSIST 键名移除 key 的过期时间,将 key 持久保持
查询 key
TYPE 键名返回 key 所储存的值的类型
KEY 查找模式以给定模式查找 key
bash
# 查找以 runoob 为开头的 key
redis 127.0.0.1:6379> KEYS runoob*
1) "runoob3"
2) "runoob1"
3) "runoob2"
# 查找 redis 中所有的 key
redis 127.0.0.1:6379> KEYS *
1) "runoob3"
2) "runoob1"
3) "runoob2"修改 key
RENAME 原始键名 新的键名修改 key 的名称,如果新的键名已经存在,会覆盖新键名原来的 valueRENAMENX 原始键名 新的键名只有新 key 不存在时,将老 key 改名为新 key
删除 key
FLUSHALL删除所有数据库中的所有 key
| 序号 | 命令及描述 |
|---|---|
| 9 | MOVE key db 将当前数据库的 key 移动到给定的数据库 db 当中 |
| 13 | RANDOMKEY 从当前数据库中随机返回一个 key |
| 16 | SCAN cursor [MATCH pattern] [COUNT count] 迭代数据库中的数据库键 |