Redis 基础命令
→ 返回 Redis
本文汇总 redis-cli 常用操作与按数据类型分类的命令速查。类型语义与场景见 数据结构;Hash / ZSet 深入见 Hash、ZSet。
连接与基础使用
启动客户端
# 本机默认 6379
redis-cli
# 指定主机、端口、库、密码
redis-cli -h 127.0.0.1 -p 6379 -a 'yourpassword' -n 0
# 单次执行(脚本/CI)
redis-cli GET foo认证与切换库
AUTH yourpassword
SELECT 1 # 切换逻辑库 0~15(默认 16 个)
PING # 返回 PONG
QUIT / EXIT| 说明 | 命令 |
|---|---|
| 当前库 key 数量 | DBSIZE |
| 查 key | SCAN(见下文),禁用 KEYS * |
| 服务器信息 | INFO、INFO memory、INFO replication |
| 清空当前库 | FLUSHDB(生产慎用) |
| 清空所有库 | FLUSHALL |
Key 通用命令
| 命令 | 说明 | 示例 |
|---|---|---|
EXISTS key | 是否存在 | EXISTS user:1 |
TYPE key | 数据类型 | 返回 string/hash/list… |
DEL key [key ...] | 同步删除 | DEL cache:old |
UNLINK key ... | 异步删除(4.0+,大 key 推荐) | UNLINK big:hash |
EXPIRE key seconds | 设置 TTL(秒) | EXPIRE session:abc 1800 |
PEXPIRE key ms | TTL(毫秒) | |
TTL key | 剩余秒;-1 永不过期;-2 不存在 | |
PERSIST key | 去掉过期 | |
RENAME key newkey | 重命名 | |
RENAMENX newkey key | 仅当 newkey 不存在 |
安全遍历:SCAN
SCAN 0 MATCH user:* COUNT 100
# 返回下一游标 + 一批 key,游标为 0 表示结束生产用 SCAN 代替 KEYS pattern,避免阻塞单线程。
String(字符串)
| 命令 | 说明 |
|---|---|
SET key value [EX sec|PX ms] [NX|XX] | 写入;NX 不存在才设;XX 存在才设 |
GET key | 读取 |
MSET k1 v1 k2 v2 | 批量写 |
MGET k1 k2 | 批量读 |
SETEX key sec value | 写并带过期 |
SETNX key value | 仅不存在时写(锁常用) |
GETSET key value | 写并返回旧值 |
GETEX key [EX sec] | 7.0+ 读并刷新 TTL |
INCR key / DECR key | 整数 ±1 |
INCRBY key n / DECRBY key n | 整数加减 |
INCRBYFLOAT key n | 浮点加减 |
APPEND key value | 追加字符串 |
STRLEN key | 字节长度 |
SET cache:user:1 "{\"name\":\"Alice\"}" EX 3600
SET lock:order:9 "uuid-xxx" NX EX 30
INCR page:view:home分布式锁、计数:分布式锁。
Hash(哈希)
| 命令 | 说明 |
|---|---|
HSET key field value [field value ...] | 写字段 |
HGET key field | 读单字段 |
HMGET key f1 f2 | 读多字段 |
HGETALL key | 读全部(字段多时用 HSCAN) |
HSCAN key cursor | 增量遍历 |
HDEL key field ... | 删字段 |
HEXISTS key field | 字段是否存在 |
HLEN key | 字段个数 |
HINCRBY / HINCRBYFLOAT | 数值字段加减 |
详见 Hash。
List(列表)
| 命令 | 说明 |
|---|---|
LPUSH key element [element ...] | 左侧入队 |
RPUSH key element ... | 右侧入队 |
LPOP key / RPOP key | 左/右弹出 |
BLPOP key timeout / BRPOP | 阻塞弹出(秒,0=永久) |
LRANGE key start stop | 范围;0 -1 全量 |
LLEN key | 长度 |
LINDEX key index | 按下标取值 |
LTRIM key start stop | 裁剪保留区间 |
LPUSH queue:mail "job1"
BRPOP queue:mail 10Set(集合)
| 命令 | 说明 |
|---|---|
SADD key member [member ...] | 添加(已存在则 0) |
SREM key member ... | 删除成员 |
SMEMBERS key | 全部成员(大集合用 SSCAN) |
SSCAN key cursor | 增量遍历 |
SISMEMBER key member | 是否成员 |
SCARD key | 成员数 |
SPOP key [count] | 随机弹出 |
SRANDMEMBER key [count] | 随机取不删 |
SINTER key [key ...] | 交集 |
SUNION key [key ...] | 并集 |
SDIFF key [key ...] | 差集 |
SADD tags:post:1 java redis
SISMEMBER tags:post:1 javaZSet(有序集合)
| 命令 | 说明 |
|---|---|
ZADD key [NX|XX] [GT|LT] score member [...] | 添加/更新 |
ZREM key member ... | 删除成员 |
ZSCORE key member | 查分数 |
ZINCRBY key increment member | 分数加减 |
ZRANK key member / ZREVRANK | 升序/降序排名 |
ZRANGE key start stop [WITHSCORES] | 按排名升序 |
ZREVRANGE key start stop [WITHSCORES] | 按排名降序(Top N) |
ZRANGEBYSCORE key min max | 按分数区间 |
ZCOUNT key min max | 区间内个数 |
ZCARD key | 成员总数 |
ZADD rank:daily 100 user:1 90 user:2
ZREVRANGE rank:daily 0 9 WITHSCORES
ZINCRBY rank:daily 5 user:1详见 ZSet。
Bitmap / HyperLogLog / Geo(简表)
SETBIT sign:202406 15 1
GETBIT sign:202406 15
BITCOUNT sign:202406
PFADD uv:page u1 u2 u3
PFCOUNT uv:page
GEOADD shops 116.40 39.90 shop:A
GEORADIUS shops 116.40 39.90 5 km WITHDIST更多见 数据结构。
过期与内存(命令侧)
EXPIRE key 3600
TTL key
CONFIG GET maxmemory
CONFIG GET maxmemory-policy策略说明:过期与持久化。
事务与批量
MULTI / EXEC
MULTI
SET account:1 100
DECRBY account:2 50
EXEC- 排队执行,无回滚;
DISCARD放弃 - 可用
WATCH key乐观锁,执行前 key 被改则EXEC失败 - Cluster 下多 key 须同 slot
Pipeline
客户端一次发送多条命令,一次 RTT,非原子:
# redis-cli 示例
echo -e "GET k1\nGET k2\nGET k3" | redis-cli --pipe应用层 Pipeline 见 Pipeline 与 Stream、运维与集成。
发布订阅(了解)
SUBSCRIBE channel:news
PUBLISH channel:news "hello"不持久化,离线丢消息;可靠消息用 Stream 或 Kafka。
常用选项速记
| 选项 | 含义 |
|---|---|
EX sec | 过期秒数 |
PX ms | 过期毫秒 |
NX | 仅 key 不存在 |
XX | 仅 key 已存在 |
KEEPTTL | 7.0+ 覆盖值但保留原 TTL |
命令 → 学习路径
相关
- Redis 索引
- MySQL 基础命令(对照 SQL 风格)
- 架构与线程模型(为何避免 KEYS、大 HGETALL)
- Hash、ZSet