Redis常用命令

举报
林欣 发表于 2025/06/29 22:54:32 2025/06/29
【摘要】 Redis 提供了丰富的命令集,除了基本的键值操作和过期时间设置外,还有许多强大的命令可用于数据结构操作、事务处理、发布订阅、集群管理等。以下是 Redis 中一些最常用且实用的命令分类及示例: 一、字符串(String)相关命令字符串是 Redis 最基础的数据结构,适用于缓存、计数器等场景。命令作用示例SET key value [EX seconds] [PX milliseconds...

Redis 提供了丰富的命令集,除了基本的键值操作和过期时间设置外,还有许多强大的命令可用于数据结构操作、事务处理、发布订阅、集群管理等。以下是 Redis 中一些最常用且实用的命令分类及示例:


一、字符串(String)相关命令

字符串是 Redis 最基础的数据结构,适用于缓存、计数器等场景。

命令 作用 示例
SET key value [EX seconds] [PX milliseconds] [NX/XX] 设置键值(可设置过期时间、条件写入) SET user:1000 "Alice" EX 3600 NX
GET key 获取键值 GET user:1000
INCR key 原子递增(整数) INCR counter
DECR key 原子递减(整数) DECR counter
INCRBY key increment 按步长递增 INCRBY counter 10
DECRBY key decrement 按步长递减 DECRBY counter 5
APPEND key value 追加字符串 APPEND msg " world"
STRLEN key 获取字符串长度 STRLEN msg
MSET key1 value1 key2 value2 ... 批量设置键值 MSET name "Bob" age "30"
MGET key1 key2 ... 批量获取键值 MGET name age

应用场景

  • 缓存用户信息、会话数据。
  • 计数器(如文章浏览量、点赞数)。
  • 分布式锁(通过 SET NX 实现)。

二、哈希(Hash)相关命令

哈希适合存储对象类型数据(如用户信息、商品详情)。

命令 作用 示例
HSET key field value 设置哈希字段 HSET user:1000 name "Alice" age "25"
HGET key field 获取哈希字段 HGET user:1000 name
HMSET key field1 value1 field2 value2 ... 批量设置字段(Redis 4.0.0 后弃用,推荐 HSET HMSET user:1000 name "Alice" age "25"
HMGET key field1 field2 ... 批量获取字段 HMGET user:1000 name age
HGETALL key 获取所有字段和值 HGETALL user:1000
HDEL key field1 field2 ... 删除字段 HDEL user:1000 age
HINCRBY key field increment 原子递增哈希字段(整数) HINCRBY user:1000 score 10
HEXISTS key field 检查字段是否存在 HEXISTS user:1000 name
HLEN key 获取字段数量 HLEN user:1000

应用场景

  • 存储用户属性、商品详情。
  • 实时统计(如用户行为数据)。

三、列表(List)相关命令

列表是双向链表结构,适合消息队列、最新消息展示等场景。

命令 作用 示例
LPUSH key value1 value2 ... 从左侧插入元素 LPUSH messages "msg1" "msg2"
RPUSH key value1 value2 ... 从右侧插入元素 RPUSH messages "msg3"
LPOP key 从左侧弹出元素 LPOP messages
RPOP key 从右侧弹出元素 RPOP messages
LRANGE key start stop 获取列表片段 LRANGE messages 0 -1(获取全部)
LLEN key 获取列表长度 LLEN messages
LINDEX key index 获取指定位置元素 LINDEX messages 0
LTRIM key start stop 截取列表片段 LTRIM messages 0 4(保留前 5 个)

应用场景

  • 消息队列(如订单处理)。
  • 最新消息时间线(如社交媒体动态)。

四、集合(Set)相关命令

集合是无序且唯一的,适合标签、去重等场景。

命令 作用 示例
SADD key member1 member2 ... 添加元素 SADD tags "redis" "database"
SMEMBERS key 获取所有元素 SMEMBERS tags
SISMEMBER key member 检查元素是否存在 SISMEMBER tags "redis"
SREM key member1 member2 ... 删除元素 SREM tags "database"
SCARD key 获取集合元素数量 SCARD tags
SINTER key1 key2 ... 交集 SINTER tags1 tags2
SUNION key1 key2 ... 并集 SUNION tags1 tags2
SDIFF key1 key2 ... 差集 SDIFF tags1 tags2

应用场景

  • 用户标签系统(如推荐算法)。
  • 共同好友计算(交集)。

五、有序集合(Sorted Set)相关命令

有序集合通过分数排序,适合排行榜、优先级队列等场景。

命令 作用 示例
ZADD key score member [score member ...] 添加元素 ZADD leaderboard 100 "Alice" 90 "Bob"
ZRANGE key start stop [WITHSCORES] 按排名获取元素 ZRANGE leaderboard 0 -1 WITHSCORES
ZREVRANGE key start stop [WITHSCORES] 逆序获取元素 ZREVRANGE leaderboard 0 -1 WITHSCORES
ZSCORE key member 获取元素分数 ZSCORE leaderboard "Alice"
ZINCRBY key increment member 原子递增分数 ZINCRBY leaderboard 10 "Alice"
ZRANK key member 获取排名(升序) ZRANK leaderboard "Alice"
ZREVRANK key member 获取排名(降序) ZREVRANK leaderboard "Alice"
ZCARD key 获取元素数量 ZCARD leaderboard

应用场景

  • 实时排行榜(如游戏得分)。
  • 优先级任务队列。

六、事务与脚本命令

Redis 支持事务和 Lua 脚本,用于保证原子性操作。

命令 作用 示例
MULTI 开启事务 MULTI
EXEC 执行事务 EXEC
DISCARD 取消事务 DISCARD
WATCH key1 key2 ... 乐观锁(监视键) WATCH stock:1000
UNWATCH 取消监视 UNWATCH
EVAL script numkeys key1 key2 ... arg1 arg2 ... 执行 Lua 脚本 EVAL "return redis.call('GET', KEYS[1])" 1 mykey

应用场景

  • 银行转账(原子操作)。
  • 复杂逻辑的原子性执行(如批量更新+条件判断)。

七、发布/订阅命令

Redis 支持发布/订阅模式,用于实时消息推送。

命令 作用 示例
SUBSCRIBE channel1 channel2 ... 订阅频道 SUBSCRIBE news:sports
PUBLISH channel message 发布消息 PUBLISH news:sports "Goal!"
UNSUBSCRIBE channel1 channel2 ... 取消订阅 UNSUBSCRIBE news:sports
PSUBSCRIBE pattern1 pattern2 ... 模式订阅(支持通配符) PSUBSCRIBE news:*

应用场景

  • 实时聊天系统。
  • 通知服务(如订单状态更新)。

八、服务器管理命令

用于监控、配置和集群管理。

命令 作用 示例
INFO [section] 获取服务器信息 INFO memory(查看内存使用)
CONFIG GET parameter 获取配置参数 CONFIG GET maxmemory
CONFIG SET parameter value 动态修改配置 CONFIG SET maxmemory 1gb
DBSIZE 获取当前数据库 Key 数量 DBSIZE
KEYS pattern 查找 Key(生产环境慎用) KEYS user:*
SCAN cursor [MATCH pattern] [COUNT count] 增量迭代 Key SCAN 0 MATCH user:* COUNT 100
FLUSHDB 清空当前数据库 FLUSHDB
FLUSHALL 清空所有数据库 FLUSHALL

应用场景

  • 监控 Redis 运行状态。
  • 动态调整配置(如内存限制)。

九、集群相关命令

用于 Redis Cluster 模式下的节点管理。

命令 作用 示例
CLUSTER NODES 查看集群节点信息 CLUSTER NODES
CLUSTER MEET ip port 将节点加入集群 CLUSTER MEET 192.168.1.1 6379
CLUSTER REPLICATE node-id 设置主从关系 CLUSTER REPLICATE node-id
CLUSTER KEYSLOT key 计算 Key 的槽位 CLUSTER KEYSLOT "user:1000"

应用场景

  • 搭建和管理 Redis 集群。
  • 故障转移和扩容。

十、高级功能命令

1. 流(Stream)命令

Redis 5.0+ 引入的流数据结构,适合消息队列和事件溯源。

命令 作用 示例
XADD stream * field1 value1 field2 value2 添加消息 XADD mystream * name "Alice" age "25"
XRANGE stream start end [COUNT count] 读取消息范围 XRANGE mystream - +
XREAD COUNT count STREAMS stream1 stream2 ... 消费者组读取 XREAD COUNT 1 STREAMS mystream 0

2. 位图(Bitmap)命令

通过字符串操作位数据,适合统计和布隆过滤器。

命令 作用 示例
SETBIT key offset value 设置位 SETBIT user:1000:signin 0 1
GETBIT key offset 获取位 GETBIT user:1000:signin 0
BITCOUNT key [start end] 统计置位数量 BITCOUNT user:1000:signin

3. 地理空间(Geo)命令

Redis 3.2+ 支持地理空间索引,适合 LBS 应用。

命令 作用 示例
GEOADD key longitude latitude member 添加地理位置 GEOADD cities 116.4 39.9 "Beijing"
GEODIST key member1 member2 [unit] 计算距离 GEODIST cities Beijing Shanghai km
GEORADIUS key longitude latitude radius m|km|ft|mi 附近地点查询 GEORADIUS cities 116.4 39.9 100 km

总结:Redis 命令选择指南

场景 推荐命令
缓存/计数器 SET, GET, INCR, EXPIRE
对象存储 HSET, HGET, HGETALL
消息队列 LPUSH, RPOP, BRPOP
排行榜 ZADD, ZRANGE, ZREVRANK
实时通知 PUBLISH, SUBSCRIBE
分布式锁 SET NX, EXPIRE
批量操作 MSET, MGET, PIPELINE
复杂逻辑 EVAL(Lua 脚本)

Redis 的命令设计简洁高效,合理使用可以大幅提升开发效率。建议通过 Redis 官方文档 深入学习每个命令的细节和性能特性。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。