常用命令
Valkey 支持 200+ 条命令。本文覆盖最常用的核心命令,按数据类型分类。
字符串 (String)
最基本的键值操作,也是其他高级功能的基础:
valkey复制
# 设置键值 SET user:name "张三" SET session:token "abc123" EX 3600 # 1小时后过期 # 获取值 GET user:name # 自增/自减 INCR page:views # 原子递增 INCRBY score 10 # 增加指定值 # 批量操作 MSET key1 "v1" key2 "v2" key3 "v3" MGET key1 key2 key3 # 仅在键不存在时设置 SETNX lock:resource "owner1"
哈希 (Hash)
适合存储对象,将多个字段组织在一个键下:
valkey复制
# 设置哈希字段 HSET user:1001 name "李四" age 30 email "[email protected]" # 获取单个/多个字段 HGET user:1001 name HMGET user:1001 name age # 获取整个哈希 HGETALL user:1001 # 字段自增 HINCRBY user:1001 login_count 1
列表 (List)
有序的元素集合,支持两端操作。常用于消息队列和时间线:
valkey复制
# 从右端推入 RPUSH tasks "发送邮件" "生成报表" "清理缓存" # 从左端弹出(FIFO 队列) LPOP tasks # 阻塞弹出(等待新元素) BLPOP tasks 30 # 最多等待30秒 # 获取范围 LRANGE tasks 0 -1 # 获取全部 LLEN tasks # 列表长度
集合 (Set) 与有序集合 (Sorted Set)
valkey复制
# --- Set: 无序、唯一 --- SADD tags:article:1 "技术" "Valkey" "数据库" SMEMBERS tags:article:1 SISMEMBER tags:article:1 "技术" # 交集/并集 SINTER tags:article:1 tags:article:2 SUNION tags:article:1 tags:article:2 # --- Sorted Set: 带分数的有序集合 --- ZADD leaderboard 100 "玩家A" 85 "玩家B" 92 "玩家C" ZRANGE leaderboard 0 -1 WITHSCORES # 从低到高 ZREVRANGE leaderboard 0 2 WITHSCORES # Top 3 ZRANK leaderboard "玩家B" # 排名
键管理
| 命令 | 说明 | 示例 |
|---|---|---|
DEL key | 删除键 | DEL user:1001 |
EXISTS key | 检查键是否存在 | EXISTS user:1001 |
EXPIRE key s | 设置过期时间(秒) | EXPIRE session 3600 |
TTL key | 查看剩余生存时间 | TTL session |
TYPE key | 查看键的值类型 | TYPE user:1001 |
KEYS pattern | 按模式匹配键(慎用) | KEYS user:* |
SCAN cursor | 增量迭代键(推荐) | SCAN 0 MATCH user:* COUNT 100 |
RENAME | 重命名键 | RENAME old_key new_key |
生产环境注意:避免使用 KEYS 命令扫描大量键,它会阻塞服务器。请使用 SCAN 替代,它通过游标增量迭代,不会阻塞。
Stream
Valkey 5.0 引入的流数据结构,适合消息队列和事件溯源:
valkey复制
# 追加消息 XADD events * user "张三" action "login" ip "192.168.1.1" # 读取消息 XRANGE events - + COUNT 10 # 消费者组 XGROUP CREATE events mygroup 0 XREADGROUP GROUP mygroup consumer1 COUNT 1 BLOCK 5000 STREAMS events >