Skip to content
On this page

常用命令

连接与 CLI

本地连接

bash
redis-cli

远程、端口、密码

bash
redis-cli -h 127.0.0.1 -p 6379
redis-cli -h 127.0.0.1 -p 6379 -a yourpassword

选择库

bash
redis-cli -n 2

连接后切换:

bash
SELECT 2

执行单条命令(脚本友好)

bash
redis-cli SET foo bar
redis-cli GET foo

交互模式退出

bash
QUIT

管道批量

bash
echo -e "SET a 1\nGET a\nINCR counter" | redis-cli --pipe

服务端与运维

连通检测

bash
PING

服务信息

bash
INFO
INFO memory
INFO replication
INFO stats

库键数量

bash
DBSIZE

清空当前库 / 全部库

bash
FLUSHDB
FLUSHALL

生产慎用;可加异步:

bash
FLUSHDB ASYNC
FLUSHALL ASYNC

配置查看与修改

bash
CONFIG GET maxmemory
CONFIG SET maxmemory 256mb
CONFIG REWRITE

认证(连接后)

bash
AUTH yourpassword

持久化触发

bash
SAVE
BGSAVE

阻塞直到保存完成

bash
LASTSAVE

实时命令监控

bash
MONITOR

客户端连接

bash
CLIENT LIST
CLIENT KILL ID 123
CLIENT SETNAME myapp

慢查询日志

bash
SLOWLOG LEN
SLOWLOG GET 10
SLOWLOG RESET

关闭服务

bash
SHUTDOWN
SHUTDOWN NOSAVE

键(Key)

匹配查找(慎用 KEYS)

bash
KEYS user:*

安全遍历(推荐)

bash
SCAN 0 MATCH user:* COUNT 100
SCAN 123 MATCH user:* COUNT 100

判断存在

bash
EXISTS key
EXISTS k1 k2 k3

删除

bash
DEL key
DEL k1 k2 k3
UNLINK key

过期时间(秒)

bash
EXPIRE key 3600
EXPIREAT key 1716000000
TTL key
PTTL key

过期时间(毫秒)

bash
PEXPIRE key 60000
PERSIST key

重命名

bash
RENAME oldkey newkey
RENAMENX oldkey newkey

随机键

bash
RANDOMKEY

类型

bash
TYPE key

内存占用(近似)

bash
MEMORY USAGE key

复制键

bash
COPY src dst
COPY src dst DB 1 REPLACE

字符串(String)

写入

bash
SET key value
SET key value EX 3600
SET key value PX 60000
SET key value NX
SET key value XX
SET key value GET

读取

bash
GET key
MGET k1 k2 k3

批量写入

bash
MSET k1 v1 k2 v2
MSETNX k1 v1 k2 v2

数值增减

bash
INCR counter
INCRBY counter 10
DECR counter
DECRBY counter 5
INCRBYFLOAT price 0.5

追加与长度

bash
APPEND key suffix
STRLEN key

范围读写(二进制安全)

bash
SETRANGE key 6 "world"
GETRANGE key 0 -1

仅当不存在时设置

bash
SETNX key value

哈希(Hash)

写入字段

bash
HSET user:1 name alice
HSET user:1 name alice age 30

读取字段

bash
HGET user:1 name
HMGET user:1 name age
HGETALL user:1

删除字段

bash
HDEL user:1 age

判断字段存在

bash
HEXISTS user:1 name

字段数量

bash
HLEN user:1

所有字段名 / 值

bash
HKEYS user:1
HVALS user:1

字段数值增减

bash
HINCRBY user:1 age 1
HINCRBYFLOAT user:1 score 1.5

仅当字段不存在时设置

bash
HSETNX user:1 email a@b.com

列表(List)

头尾入队

bash
LPUSH queue task1 task2
RPUSH queue task3

头尾出队

bash
LPOP queue
RPOP queue

阻塞出队

bash
BLPOP queue 30
BRPOP queue 30

范围查看

bash
LRANGE queue 0 -1
LRANGE queue 0 9

长度

bash
LLEN queue

按下标读写

bash
LINDEX queue 0
LSET queue 0 newtask

修剪

bash
LTRIM queue 0 99

在 pivot 前/后插入

bash
LINSERT queue BEFORE task2 task1.5

集合(Set)

增删

bash
SADD tags golang redis
SREM tags redis

成员列表

bash
SMEMBERS tags

判断成员

bash
SISMEMBER tags golang
SMISMEMBER tags golang java

基数

bash
SCARD tags

随机弹出

bash
SPOP tags
SRANDMEMBER tags 3

集合运算

bash
SINTER set1 set2
SUNION set1 set2
SDIFF set1 set2
SINTERSTORE dest set1 set2

遍历

bash
SSCAN tags 0 COUNT 100

有序集合(Sorted Set)

添加 / 更新分数

bash
ZADD rank 100 user1 200 user2
ZADD rank NX 150 user3
ZADD rank XX 250 user1

按排名范围(升序)

bash
ZRANGE rank 0 -1
ZRANGE rank 0 9 WITHSCORES

按排名范围(降序)

bash
ZREVRANGE rank 0 9 WITHSCORES

按分数范围

bash
ZRANGEBYSCORE rank 100 200
ZRANGEBYSCORE rank 100 200 WITHSCORES LIMIT 0 10
ZREVRANGEBYSCORE rank 200 100

查分数与排名

bash
ZSCORE rank user1
ZRANK rank user1
ZREVRANK rank user1

增减分数

bash
ZINCRBY rank 10 user1

删除成员

bash
ZREM rank user2
ZREMRANGEBYRANK rank 0 2
ZREMRANGEBYSCORE rank 0 50

基数

bash
ZCARD rank
ZCOUNT rank 100 200

集合运算

bash
ZINTERSTORE dest 2 z1 z2 WEIGHTS 1 2
ZUNIONSTORE dest 2 z1 z2

遍历

bash
ZSCAN rank 0 COUNT 100

位图(Bitmap)

设置 / 获取位

bash
SETBIT signin:20240519 10086 1
GETBIT signin:20240519 10086

统计为 1 的位数

bash
BITCOUNT signin:20240519

位运算

bash
BITOP AND dest key1 key2
BITOP OR dest key1 key2

HyperLogLog

基数估计(去重计数)

bash
PFADD uv:page1 user1 user2 user1
PFCOUNT uv:page1
PFMERGE uv:total uv:page1 uv:page2

地理(GEO)

添加坐标

bash
GEOADD cities 116.4 39.9 beijing 121.5 31.2 shanghai

距离

bash
GEODIST cities beijing shanghai km

附近查询

bash
GEORADIUS cities 116.4 39.9 500 km WITHDIST COUNT 10
GEORADIUSBYMEMBER cities beijing 500 km

坐标

bash
GEOPOS cities beijing

Stream

写入

bash
XADD mystream * field1 value1 field2 value2

范围读取

bash
XRANGE mystream - +
XREVRANGE mystream + - COUNT 10

消费组创建

bash
XGROUP CREATE mystream mygroup 0 MKSTREAM

消费组读取

bash
XREADGROUP GROUP mygroup consumer1 COUNT 10 STREAMS mystream >

确认

bash
XACK mystream mygroup 1234567890-0

长度

bash
XLEN mystream

发布订阅(Pub/Sub)

发布

bash
PUBLISH news:tech "hello"

订阅频道

bash
SUBSCRIBE news:tech

模式订阅

bash
PSUBSCRIBE news.*

取消订阅

bash
UNSUBSCRIBE news:tech
PUNSUBSCRIBE news.*

事务

开启与提交

bash
MULTI
SET account:1 100
DECRBY account:1 10
INCRBY account:2 10
EXEC

放弃

bash
DISCARD

乐观锁(WATCH)

bash
WATCH account:1
MULTI
DECRBY account:1 10
EXEC

EXEC 返回 (nil) 表示被监视键已变更,需重试。


Lua 脚本

执行脚本

bash
EVAL "return redis.call('GET', KEYS[1])" 1 mykey

加载脚本(按 SHA 调用)

bash
SCRIPT LOAD "return redis.call('GET', KEYS[1])"
EVALSHA <sha> 1 mykey

脚本管理

bash
SCRIPT EXISTS <sha>
SCRIPT FLUSH

复制与哨兵(速查)

查看复制状态

bash
INFO replication
ROLE

只读从库查询

bash
READONLY

主从手动切换(旧版)

bash
SLAVEOF host port
SLAVEOF NO ONE

集群(速查)

集群信息

bash
CLUSTER INFO
CLUSTER NODES

键槽

bash
CLUSTER KEYSLOT mykey
CLUSTER SLOTS

迁移(运维)

bash
CLUSTER MEET ip port
CLUSTER REPLICATE node-id

技术文库