Redis 键(key)
键的命名、过期、查找、删除。
Key Points键用 冒号 分层命名(user:1:name);缓存务必设过期,否则内存只增不减。
命名与过期
Shell
SET session:abc "token" EX 3600 # 设值并 1 小时后过期
TTL session:abc # 剩余秒数;-1 永不过期,-2 不存在
EXPIRE session:abc 7200 # 改过期时间
PERSIST session:abc # 取消过期Output
(integer) 3600
(integer) 1查找与删除
Shell
KEYS user:* # 列出匹配键(生产禁用,会阻塞)
SCAN 0 MATCH user:* COUNT 100 # 渐进遍历,安全
DEL session:abc # 删除键
EXISTS session:abc # 是否存在Output
1) "session:abc"
(integer) 0Always set a TTL on cache keys — without it memory only grows and eventually triggers eviction or OOM.
KEYS stalls the server on big datasets; always use SCAN.命名与过期
Shell
SET session:abc "token" EX 3600 # 设值并 1 小时后过期
TTL session:abc # 剩余秒数;-1 永不过期,-2 不存在
EXPIRE session:abc 7200 # 改过期时间
PERSIST session:abc # 取消过期Output
(integer) 3600
(integer) 1查找与删除
Shell
KEYS user:* # 列出匹配键(生产禁用,会阻塞)
SCAN 0 MATCH user:* COUNT 100 # 渐进遍历,安全
DEL session:abc # 删除键
EXISTS session:abc # 是否存在Output
1) "session:abc"
(integer) 0缓存一定要设过期时间,否则数据只进不出,内存迟早打满触发淘汰甚至 OOM 杀进程。
KEYS 在百万键实例上会卡死服务,永远用 SCAN 替代。