首页 / 资讯中心 / 文章详情

Redis命令大全

Redis命令大全 ★ FEATURED ARTICLE
redis-cli 命令详解从连接到高阶实战redis-cli 是 Redis 官方提供的命令行客户端是与 Redis 实例交互最直接、最灵活的工具。它既可以在命令行模式下直接执行单条命令后退出也可以进入交互式 REPL 模式进行连续操作还提供了监控、延迟分析、键空间扫描、数据导入导出等特殊模式。下面从连接、数据类型操作到高阶技巧系统梳理 redis-cli 的核心用法。一、连接 Redis从本地到远程默认情况下redis-cli 连接 127.0.0.1 的 6379 端口。在本地开发环境中直接输入redis-cli即可进入交互模式。连接远程或受保护的实例时常用参数如下参数作用示例-h指定主机名或 IP 地址redis-cli -h 192.168.1.100-p指定端口号默认 6379redis-cli -p 6380-a提供密码进行认证redis-cli -a mypassword-n选择数据库编号0-15redis-cli -n 2-c连接 Cluster 集群时启用重定向redis-cli -c -h node1 -p 6379--tls启用 SSL/TLS 加密连接redis-cli --tls -h host -p 6380连接 Cluster 集群时必须加上-c参数否则命令无法正确路由到目标节点。此外也可以使用 URI 格式一次性传入连接信息redis-cli-uredis://username:passwordhost:6379安全提示在生产环境中不要在命令行中通过-a直接传递密码因为密码会出现在 shell 历史和进程列表中。推荐使用REDISCLI_AUTH环境变量来自动向 redis-cli 提供密码。二、五大核心数据类型的命令速查Redis 支持 String、List、Hash、Set、ZSet 五种核心数据类型。redis-cli 在交互模式下提供 Tab 补全和命令历史输入命令后按回车即可执行并查看类型化回复。2.1 String字符串String 是最基础的类型适合缓存、计数器、分布式锁等场景。SET mykeyHello# 设置键值O(1)GET mykey# 获取值键不存在返回 nilMSET k1 v1 k2 v2# 原子批量设置MGET k1 k2 k3# 批量获取INCR counter# 自增 1键不存在时先置 0INCRBY counter10# 自增指定步长SETNX lock_keylocked# 仅当键不存在时设置分布式锁核心SETEX session3600data# 设置值并指定秒级过期时间APPEND mykey World# 在值末尾追加STRLEN mykey# 获取值长度SET命令还支持EX秒级过期、PX毫秒级过期、NX仅键不存在时设置、XX仅键存在时设置等选项一条命令即可完成“设置值过期时间存在性判断”的组合操作。2.2 List列表List 是双向链表结构适合消息队列、最新动态列表等场景。LPUSH mylistab# 从头部插入RPUSH mylistc# 从尾部插入LPOP mylist# 弹出头部元素RPOP mylist# 弹出尾部元素LRANGE mylist0-1# 获取全部元素0 为头-1 为尾LLEN mylist# 获取元素个数LTRIM mylist099# 仅保留前 100 个元素BLPOP mylist30# 阻塞式弹出最多等待 30 秒RPOPLPUSH src dst# 原子地将 src 尾部元素移到 dst 头部BLPOP和BRPOP的阻塞特性使其成为实现轻量级消息队列的理想选择消费者可以阻塞等待而不必轮询。2.3 Hash哈希Hash 适合存储对象的多个字段比如用户信息、商品属性。HSET user:1 nameAliceage30# 设置一个或多个字段HGET user:1 name# 获取单个字段HMSET user:1 nameAliceage30# 批量设置Redis 4.0 可直接用 HSETHMGET user:1 name age# 批量获取HGETALL user:1# 获取所有字段和值HINCRBY user:1 age1# 字段值自增HEXISTS user:1 email# 判断字段是否存在HDEL user:1 age# 删除字段HLEN user:1# 获取字段数量2.4 Set集合Set 是无序不重复集合适合标签、去重、共同好友等场景。SADD tagsredisnosql# 添加元素SREM tagsnosql# 删除元素SISMEMBER tagsredis# 判断元素是否存在SMEMBERS tags# 获取所有元素SCARD tags# 获取元素个数SINTER set1 set2# 交集SUNION set1 set2# 并集SDIFF set1 set2# 差集set1 中有而 set2 中没有SRANDMEMBER tags2# 随机获取 2 个元素不删除SPOP tags1# 随机移除并返回 1 个元素2.5 ZSet有序集合ZSet 为每个元素关联一个 score自动按 score 排序是实现排行榜的核心数据结构。ZADD leaderboard100Alice85Bob# 添加元素及分数ZRANGE leaderboard0-1WITHSCORES# 按分数升序获取ZREVRANGE leaderboard09WITHSCORES# 按分数降序获取前 10 名ZRANGEBYSCORE leaderboard80100# 按分数范围筛选ZRANK leaderboardAlice# 获取升序排名0 为最小ZREVRANK leaderboardAlice# 获取降序排名ZINCRBY leaderboard10Alice# 增加分数ZCARD leaderboard# 获取元素总数ZCOUNT leaderboard80100# 统计分数范围内的元素个数三、通用键管理与数据库操作跨数据类型的通用命令在日常运维中同样高频EXISTS key# 判断键是否存在TYPE key# 查看键的数据类型DEL key# 删除键EXPIRE key3600# 设置过期时间秒TTL key# 查看剩余生存时间PERSIST key# 移除过期时间SCAN0MATCH user:* COUNT100# 游标迭代扫描生产环境安全INFO keyspace# 查看各数据库的键数量DBSIZE# 当前数据库键总数关于键遍历有一个重要的生产禁忌KEYS *会一次性扫描所有键在键数量大时会阻塞 Redis 服务器。生产环境中应始终使用SCAN系列命令进行渐进式迭代。SCAN采用游标机制每次返回一批元素和一个新游标当游标返回 0 时表示遍历完成。需要注意的是SCAN不保证元素不重复应用层需自行处理去重。四、高阶实战技巧4.1 命令行直接执行与输出控制redis-cli 支持将命令作为参数直接传入执行后立即退出非常适合脚本化redis-cli INCR mycounter# 输出(integer) 8redis-cli GET mykey# 输出Hello当输出重定向到文件或管道时redis-cli 会自动切换到原始输出模式省略(integer)、等类型标识。也可以用--raw强制原始输出或用--no-raw强制人类可读输出。4.2 批量数据导入–pipe--pipe是向 Redis 批量加载数据最快的方式。它使用 Redis 协议直接将命令流式传输到服务器速度远高于逐条执行。典型用法是将包含 Redis 协议格式命令的文件通过管道传入catcommands.txt|redis-cli--pipe4.3 大键扫描与内存分析在排查性能问题时大键占用内存过多的键往往是罪魁祸首。redis-cli 提供了内置的扫描模式redis-cli--bigkeys# 扫描各数据类型中最大的键redis-cli--memkeys# 按内存占用扫描键redis-cli--bigkeys--memkeys# 组合使用--bigkeys基于SCAN实现不会阻塞服务器适合在生产环境中定期巡检。4.4 发布订阅redis-cli 可以直接进行发布订阅测试。打开一个终端订阅频道redis-cli SUBSCRIBE news在另一个终端发布消息redis-cli PUBLISH newsBreaking: Redis 8.0 released订阅端会实时收到消息。需要注意的是进入订阅状态的客户端无法执行除SUBSCRIBE、UNSUBSCRIBE、PSUBSCRIBE、PUNSUBSCRIBE之外的命令redis-cli 中需要按Ctrl-C退出订阅状态。4.5 执行 Lua 脚本通过EVAL或--eval可以在 redis-cli 中执行 Lua 脚本实现原子性的复杂逻辑# 内联执行redis-cli EVALreturn redis.call(SET, KEYS[1], ARGV[1])1mykeyHello# 从文件加载执行redis-cli--evalscript.lua key1 key2 , arg1 arg2Lua 脚本在 Redis 中作为一个整体执行期间不会被其他命令中断天然具备原子性适合实现“检查-设置”类的复合操作。五、生产环境安全与性能诊断5.1 安全禁忌在使用 redis-cli 操作生产实例时有几条不可逾越的红线不要在命令行中用-a传递密码改用REDISCLI_AUTH环境变量不要在生产环境执行KEYS *用SCAN替代FLUSHALL/FLUSHDB不可逆执行前先用CLIENT LIST或INFO keyspace确认目标数据库MONITOR会记录所有命令包括敏感数据绝不在生产服务器上长时间运行。5.2 延迟诊断redis-cli 内置了多种延迟检测模式redis-cli--latency# 持续测量并显示延迟统计redis-cli --latency-history# 按时间窗口分段显示延迟变化redis-cli --latency-dist# 以 ASCII 频谱图展示延迟分布redis-cli --intrinsic-latency30# 测量本机固有延迟30 秒采样--intrinsic-latency测量的是 Redis 进程所在机器的本机延迟下限用于判断延迟问题是否由系统本身导致。5.3 慢查询日志Redis 的慢查询日志记录执行时间超过阈值的命令。通过 redis-cli 查询和清理redis-cli SLOWLOG GET10# 查看最近 10 条慢查询redis-cli SLOWLOG RESET# 清空慢查询日志redis-cli SLOWLOG LEN# 查看慢查询条数慢查询阈值的配置项为slowlog-log-slower-than单位微秒默认值为 10000即 10 毫秒。结语redis-cli 远不止是一个“输入命令看结果”的简单工具。从基础的数据类型操作到--pipe批量导入、--bigkeys大键扫描、--latency延迟诊断再到 Lua 脚本执行和发布订阅测试它覆盖了 Redis 日常开发与运维的绝大多数场景。掌握这些命令的用法和适用边界尤其是在生产环境中遵守安全规范才能让 redis-cli 真正成为高效而可靠的工具。
阅读完成 · 觉得有帮助?
咨询建站