常用命令

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 >