Redis 命令速查
Redis 常用命令速查:五大数据类型、过期内存、持久化与主从复制
🔌 连接与通用
redis-cli -h <主机> -p 6379 -a <密码>连接实例;密码带特殊字符用单引号包住
redis-cli -h 10.0.0.6 -a "P@ss123"redis-cli -n 1直接选 1 号库(默认 0 号,共 16 个)
redis-cli -n 1PING探活,正常返回 PONG
PINGSELECT <db>切库,集群模式只有 0 号库
SELECT 1INFO全量信息;加段名只看一段:server / clients / memory / stats / replication / persistence
INFO memoryDBSIZE当前库的 key 总数
DBSIZESCAN <游标> MATCH <模式> COUNT 1000渐进式遍历 key;生产禁用 KEYS *(会阻塞)
SCAN 0 MATCH order:* COUNT 1000TYPE <key> / EXISTS <key> / DEL <key>看类型 / 是否存在 / 删除(大 key 用 UNLINK 异步删)
TYPE user:1UNLINK <key>异步删除,删大集合不会卡住主线程(DEL 的替代品)
UNLINK big:listRENAME <旧> <新> / RENAMENX <旧> <新>改名;NX 版本只在目标不存在时才改
RENAME tmp final🔤 字符串 String
SET <key> <值>写入;加 EX 秒 / PX 毫秒设过期,NX 不存在才写,XX 存在才写
SET token abc EX 3600 NXSET <key> <值> NX EX 30最简分布式锁:不存在才写 + 30 秒自动释放
SET lock:order 1 NX EX 30GET <key> / MGET <k1> <k2>单个 / 批量读取,批量能省掉多次往返
MGET user:1 user:2MSET <k1> <v1> <k2> <v2>批量写入(原子操作)
MSET a 1 b 2INCR <key> / INCRBY <key> <步长>自增计数,原子操作(点赞、库存、限流都用它)
INCRBY stock:1 -5SETEX <key> <秒> <值> / PSETEX <key> <毫秒> <值>写入同时设过期时间
SETEX code 300 8821APPEND <key> <值> / STRLEN <key>追加 / 取字符串长度(字节数)
STRLEN user:1GETRANGE <key> <start> <end> / SETRANGE <key> <offset> <值>截取 / 覆盖写入,适合大文本部分更新
GETRANGE log 0 99🗂️ 哈希 Hash
HSET <key> <field> <值>写字段(可一次写多个 field value)
HSET user:1 name 张三 age 30HGET <key> <field> / HMGET <key> <f1> <f2>读单个 / 多个字段
HMGET user:1 name ageHGETALL <key>读全部字段(字段多会阻塞,大 hash 用 HSCAN)
HGETALL user:1HDEL <key> <field>删除字段
HDEL user:1 ageHINCRBY <key> <field> <步长>字段自增,购物车数量、计数器常用
HINCRBY cart:1 sku99 2HLEN <key> / HEXISTS <key> <field> / HKEYS <key>字段数 / 字段是否存在 / 所有字段名
HLEN user:1HSCAN <key> <游标> COUNT 100渐进遍历大 hash,避免 HGETALL 卡死
HSCAN big:hash 0 COUNT 100📜 列表 List
LPUSH <key> <值> / RPUSH <key> <值>从左侧 / 右侧推入元素
LPUSH queue task1LPOP <key> / RPOP <key>从两端弹出;组合起来就是队列或栈
RPOP queueBLPOP <key> <超时秒> / BRPOP <key> <超时秒>阻塞式弹出,没元素就等,做消息队列用
BLPOP queue 30LRANGE <key> <start> <end>取区间元素,0 -1 表示全部
LRANGE queue 0 9LLEN <key> / LINDEX <key> <下标> / LSET <key> <下标> <值>长度 / 按下标读 / 按下标改
LLEN queueLTRIM <key> <start> <end>裁剪只保留区间,做固定长度的最新列表
LTRIM logs 0 999LREM <key> <个数> <值>删除指定个数的相同元素
LREM queue 0 task1🎯 集合与有序集合
SADD <key> <成员> / SREM <key> <成员>集合增删(自动去重)
SADD tags:1 redis mysqlSMEMBERS <key> / SCARD <key> / SISMEMBER <key> <成员>全部成员 / 数量 / 是否存在(去重、标签、共同好友)
SISMEMBER tags:1 redisSINTER <k1> <k2> / SUNION <k1> <k2> / SDIFF <k1> <k2>交集 / 并集 / 差集
SINTER friends:a friends:bSPOP <key> [数量] / SRANDMEMBER <key>随机弹出 / 随机取(抽奖场景)
SPOP lottery 3ZADD <key> <分数> <成员>有序集合写入,按分数排序(排行榜核心)
ZADD rank 99 tom 88 jerryZRANGE <key> <start> <end> WITHSCORES按分数升序取区间(0 -1 全部)
ZRANGE rank 0 9 WITHSCORESZREVRANGE <key> <start> <end> WITHSCORES按分数降序取,排行榜 Top N 用这个
ZREVRANGE rank 0 9 WITHSCORESZSCORE <key> <成员> / ZCARD <key> / ZRANK <key> <成员>查分数 / 总数 / 升序排名(降序用 ZREVRANK)
ZREVRANK rank tomZINCRBY <key> <增量> <成员>分数自增,实时加分场景
ZINCRBY rank 5 tomZREMRANGEBYRANK <key> <start> <end>按排名区间删除,保留榜单前 N 名
ZREMRANGEBYRANK rank 0 -101⏳ 过期与内存
EXPIRE <key> <秒> / PEXPIRE <key> <毫秒>设置过期时间
EXPIRE token 3600TTL <key> / PTTL <key>查看剩余秒 / 毫秒;-1 表示永不过期,-2 表示已不存在
TTL tokenPERSIST <key>移除过期时间,变永久
PERSIST tokenMEMORY USAGE <key>查看单个 key 占多少内存,排查大 key
MEMORY USAGE big:listCONFIG GET maxmemory / CONFIG GET maxmemory-policy看内存上限与淘汰策略
CONFIG GET maxmemory-policyCONFIG SET maxmemory-policy allkeys-lru改淘汰策略;noeviction 会写满报错,缓存场景别用
CONFIG SET maxmemory-policy allkeys-lruINFO memory看内存碎片率 mem_fragmentation_ratio,>1.5 考虑重启整理
INFO memoryredis-cli --bigkeys扫描全库找出各类型的最大 key(排障必备)
redis-cli --bigkeysredis-cli --hotkeys找热 key(需要 maxmemory-policy 为 LFU 类)
redis-cli --hotkeys💾 持久化与复制
BGSAVE后台生成 RDB 快照(SAVE 会阻塞主线程,生产禁用)
BGSAVEBGREWRITEAOF后台重写 AOF,压缩文件体积
BGREWRITEAOFLASTSAVE上次成功持久化的时间戳
LASTSAVECONFIG GET appendonly / CONFIG GET save看 AOF 是否开启、RDP 触发条件
CONFIG GET appendonlyINFO persistence看 RDB/AOF 状态、是否正在落盘
INFO persistenceREPLICAOF <主机> <端口>把自己设为某实例的从库(5.0+ 语法,旧版是 SLAVEOF)
REPLICAOF 10.0.0.1 6379REPLICAOF NO ONE取消复制,提升为主库(主库故障切换时用)
REPLICAOF NO ONEINFO replication看主从角色、连接状态、复制偏移量
INFO replicationWAIT <副本数> <超时毫秒>等待写同步到 N 个副本,牺牲性能换一致性
WAIT 1 1000🩺 运维与排障
SLOWLOG GET 10查看最近慢命令(默认超过 10 毫秒记录)
SLOWLOG GET 10CONFIG GET slowlog-log-slower-than看慢命令阈值(微秒,0 表示全记录)
CONFIG GET slowlog-log-slower-thanCLIENT LIST列出所有客户端连接,找异常来源 IP
CLIENT LISTCLIENT KILL <addr>断开指定客户端
CLIENT KILL 10.0.0.9:52314INFO clients看连接数是否接近 maxclients
INFO clientsredis-cli --latency -h <主机>测实例响应延迟基线
redis-cli --latencyredis-cli --scan --pattern "前缀:*" | xargs -L 1000 redis-cli UNLINK按前缀批量删除(用 UNLINK 异步删,别用 DEL)
redis-cli --scan --pattern "tmp:*" | xargs -L 500 UNLINKMONITOR实时打印所有命令,**仅调试用**,线上开会把吞吐打没
MONITORFLUSHDB / FLUSHALL清空当前库 / 所有库,不可逆;建议先在配置里 rename 掉
FLUSHDBRENAME_COMMAND FLUSHALL ""在 redis.conf 里禁用危险命令(KEYS/FLUSHALL/CONFIG 同理)
rename-command FLUSHALL ""Redis 命令速查怎么用
Redis 常用命令速查:String / Hash / List / Set / ZSet 五大类型,含过期、内存、持久化与主从。
- 按数据类型搜索命令
- 点击复制
- 替换 key 名和参数
小贴士线上禁用 KEYS *,遍历用 SCAN;删大 key 用 UNLINK,别用 DEL。
Redis 命令速查常见问题
Redis 命令速查是免费的吗?
完全免费,无需注册登录,也不限使用次数。997 工具箱所有工具都不收费。
使用Redis 命令速查会把我的数据上传到服务器吗?
不会。Redis 命令速查在浏览器本地完成计算,输入的文本和文件都不会离开你的设备,页面关闭后数据即消失。
Redis 命令速查在手机上能用吗?
可以。页面做了移动端适配,手机和平板的浏览器打开同样能正常使用,也不需要安装任何 App。