Redis常用命令指南
一、核心数据结构操作
1. 字符串(String)
命令 |
参数 |
说明 |
示例 |
SET |
key value [EX seconds] |
设置键值 |
SET user:1 "Alice" EX 60 (带过期时间) |
GET |
key |
获取值 |
GET user:1 |
INCR |
key |
原子递增 |
INCR page_views |
MSET |
key1 value1 [key2 value2...] |
批量设置 |
MSET a 1 b 2 |
GETRANGE |
key start end |
截取子串 |
GETRANGE msg 0 4 |
2. 哈希(Hash)
命令 |
参数 |
说明 |
示例 |
HSET |
key field value |
设置字段 |
HSET user:1000 name Bob |
HGETALL |
key |
获取所有字段 |
HGETALL user:1000 |
HINCRBY |
key field increment |
数字递增 |
HINCRBY product:100 stock -1 |
HDEL |
key field [field...] |
删除字段 |
HDEL user:1000 phone |
3. 列表(List)
命令 |
参数 |
说明 |
示例 |
LPUSH |
key value [value...] |
左端插入 |
LPUSH tasks "task1" |
RPOP |
key |
右端弹出 |
RPOP tasks |
LRANGE |
key start stop |
范围查询 |
LRANGE messages 0 -1 (查询全部) |
BLPOP |
key [key...] timeout |
阻塞左弹出 |
BLPOP alerts 30 |
4. 集合(Set)
命令 |
参数 |
说明 |
示例 |
SADD |
key member [member...] |
添加元素 |
SADD tags "redis" "db" |
SINTER |
key [key...] |
求交集 |
SINTER group1 group2 |
SUNION |
key [key...] |
求并集 |
SUNION all_users |
SPOP |
key [count] |
随机移除 |
SPOP lottery 3 |
5. 有序集合(Sorted Set)
命令 |
参数 |
说明 |
示例 |
ZADD |
key [NX\ |
XX] score member |
添加元素 |
ZADD leaderboard 100 "PlayerA" |
ZRANGE |
key start stop [WITHSCORES] |
范围查询 |
ZRANGE leaderboard 0 2 WITHSCORES |
ZREVRANK |
key member |
倒序排名 |
ZREVRANK leaderboard "PlayerB" |
二、通用操作命令
1. 键管理
命令 |
参数 |
说明 |
使用建议 |
KEYS |
pattern |
查找键 |
避免生产环境使用,改用SCAN |
DEL |
key [key...] |
删除键 |
DEL user:1000 |
EXISTS |
key |
键是否存在 |
EXISTS cache_key |
EXPIRE |
key seconds |
设置过期时间 |
EXPIRE session:123 1800 |
TTL |
key |
查看剩余时间 |
TTL temp_data |
2. 批量操作
MULTI -- 开启事务
SET a 10
INCR b
EXEC -- 提交事务
WATCH key -- 乐观锁监控
三、服务器管理命令
1. 连接控制
命令 |
说明 |
示例 |
AUTH |
密码认证 |
AUTH mypassword |
SELECT |
选择数据库 |
SELECT 1 (0-15) |
CLIENT LIST |
查看连接 |
排查连接泄露 |
2. 状态监控
命令 |
说明 |
输出解析 |
INFO |
服务器信息 |
INFO memory 查看内存使用 |
CONFIG GET |
获取配置项 |
CONFIG GET maxmemory |
MONITOR |
实时命令监控 |
调试时使用,影响性能 |
3. 持久化操作
命令 |
说明 |
注意事项 |
SAVE |
同步保存 |
阻塞主线程 |
BGSAVE |
后台保存 |
检查日志是否完成 |
LASTSAVE |
最后保存时间 |
返回Unix时间戳 |
四、高级功能命令
1. 发布订阅
SUBSCRIBE news -- 订阅频道
PUBLISH news "Redis 7 released!" -- 发布消息
2. Lua脚本
EVAL "return redis.call('GET', KEYS[1])" 1 mykey
3. 地理空间
GEOADD cities 116.405285 39.904989 "Beijing"
GEOSEARCH cities FROMMEMBER Beijing BYRADIUS 200 km
五、生产环境建议
危险命令禁用:
rename-command FLUSHALL "" -- 禁用清库命令
rename-command KEYS "HIDDEN_KEYS"
内存优化:
CONFIG SET maxmemory 2gb -- 设置内存上限
CONFIG SET maxmemory-policy allkeys-lru -- 设置淘汰策略
连接管理:
CONFIG SET timeout 300 -- 设置空闲超时
CLIENT KILL addr 127.0.0.1:3456 -- 断开指定连接
六、命令速查技巧
帮助查询:
HELP @string -- 查看字符串命令组
HELP SET -- 查看具体命令用法
模式匹配:
SCAN 0 MATCH user:* COUNT 100 -- 安全遍历键
管道加速:
echo -e "SET a 1\nINCR a\nGET a" | redis-cli --pipe