常用命令
连接与 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