Skip to content

键的命名方式推荐使用冒号 : 作为分隔符,表示层级关系,比如 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) 1

  • TTL 键 返回给定 key 的剩余生存时间【单位为秒】
  • PTTL 键 返回给定 key 的剩余生存时间【单位为毫秒】
bash
redis> PEXPIRE mykey 1500
(integer) 1

redis> TTL mykey
(integer) 1
redis> PTTL mykey
(integer) 1498

  • PERSIST 键名 移除 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 的名称,如果新的键名已经存在,会覆盖新键名原来的 value

  • RENAMENX 原始键名 新的键名 只有新 key 不存在时,将老 key 改名为新 key

删除 key

  • FLUSHALL 删除所有数据库中的所有 key
序号命令及描述
9MOVE key db
将当前数据库的 key 移动到给定的数据库 db 当中
13RANDOMKEY
从当前数据库中随机返回一个 key
16SCAN cursor [MATCH pattern] [COUNT count]
迭代数据库中的数据库键