Redis 基础命令

返回 Redis

本文汇总 redis-cli 常用操作与按数据类型分类的命令速查。类型语义与场景见 数据结构;Hash / ZSet 深入见 HashZSet


连接与基础使用

启动客户端

# 本机默认 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
查 keySCAN(见下文),禁用 KEYS *
服务器信息INFOINFO memoryINFO 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 msTTL(毫秒)
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 10

Set(集合)

命令说明
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 java

ZSet(有序集合)

命令说明
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 已存在
KEEPTTL7.0+ 覆盖值但保留原 TTL

命令 → 学习路径

阶段文档
入门本文 + 数据结构
缓存业务缓存与一致性
高可用主从与哨兵Cluster
JavaRedis 集成

相关