菜鸟科技网

Redis常用命令有哪些?

Redis是一款高性能的内存数据库,常用于缓存、消息队列、实时统计等场景,掌握Redis的使用命令是高效操作Redis的基础,本文将详细介绍Redis的核心命令及其使用方法,涵盖键值操作、数据类型操作、事务、持久化等关键功能。

Redis常用命令有哪些?-图1
(图片来源网络,侵删)

键值操作命令

Redis中的所有数据都是以键值对形式存储的,键是字符串类型,值可以是字符串、哈希、列表、集合、有序集合等多种数据类型,以下是常用的键值操作命令:

  1. 设置键值

    • SET key value [EX seconds] [PX milliseconds] [NX|XX]:设置键值,可指定过期时间(EX秒或PX毫秒),NX表示键不存在时才设置,XX表示键存在时才设置。
    • 示例:SET name "Alice" EX 60设置name键的值为"Alice",60秒后过期。
  2. 获取键值

    • GET key:获取键对应的值,若键不存在则返回nil。
    • 示例:GET name返回"Alice"。
  3. 删除键

    Redis常用命令有哪些?-图2
    (图片来源网络,侵删)
    • DEL key [key ...]:删除一个或多个键,返回删除的键数量。
    • 示例:DEL name删除name键。
  4. 键是否存在

    • EXISTS key:检查键是否存在,存在返回1,否则返回0。
    • 示例:EXISTS name返回1。
  5. 键过期时间操作

    • EXPIRE key seconds:设置键的过期时间(秒)。
    • TTL key:查看键的剩余过期时间(秒),-1表示永不过期,-2表示键不存在。
    • 示例:EXPIRE name 30设置30秒后过期,TTL name返回剩余时间。
  6. 键重命名

    • RENAME key newkey:重命名键,若新键已存在则覆盖。
    • RENAMENX key newkey:新键不存在时才重命名。
    • 示例:RENAME name username将name重命名为username。

数据类型操作命令

Redis支持5种基本数据类型,每种类型都有专属的操作命令。

Redis常用命令有哪些?-图3
(图片来源网络,侵删)

字符串(String)

字符串是最简单的数据类型,可以存储文本、JSON、序列化对象等。

  • 批量操作

    • MSET key value [key value ...]:批量设置多个键值。
    • MGET key [key ...]:批量获取多个键的值。
    • 示例:MSET key1 "v1" key2 "v2"MGET key1 key2返回["v1", "v2"]。
  • 数值递增/递减

    • INCR key:键值递增1(值需为整数)。
    • DECR key:键值递减1。
    • INCRBY key increment:按指定值递增。
    • 示例:INCR visits,若visits初始为10,执行后为11。

哈希(Hash)

哈希是键值对集合,适合存储对象(如用户信息)。

  • 设置和获取字段

    • HSET key field value:设置哈希字段值。
    • HGET key field:获取字段值。
    • HGETALL key:获取哈希所有字段和值。
    • 示例:HSET user:1 name "Bob" age 30HGETALL user:1返回name和Bob、age和30。
  • 删除字段

    • HDEL key field [field ...]:删除一个或多个字段。
    • 示例:HDEL user:1 age删除age字段。

列表(List)

列表是字符串有序集合,可重复,常作消息队列。

  • 从左侧/右侧插入元素

    • LPUSH key value [value ...]:从左侧(头部)插入一个或多个元素。
    • RPUSH key value [value ...]:从右侧(尾部)插入。
    • 示例:LPUSH queue "task1",队列左侧为["task1"]。
  • 弹出元素

    • LPOP key:从左侧弹出元素。
    • RPOP key:从右侧弹出。
    • 示例:LPOP queue返回"task1"。
  • 获取列表长度和范围

    • LLEN key:返回列表长度。
    • LRANGE key start stop:获取列表指定范围元素(0为第一个,-1为最后一个)。
    • 示例:LRANGE queue 0 -1返回整个列表。

集合(Set)

集合是无序且不重复的字符串集合,常用于标签、去重。

  • 添加和删除元素

    • SADD key member [member ...]:添加一个或多个元素。
    • SREM key member [member ...]:删除元素。
    • 示例:SADD tags "redis" "db"SREM tags "db"删除"db"。
  • 集合运算

    • SINTER key [key ...]:交集。
    • SUNION key [key ...]:并集。
    • SDIFF key [key ...]:差集。
    • 示例:SINTER set1 set2返回两个集合的交集。

有序集合(ZSet)

有序集合是带分数的集合,元素按分数排序,常用于排行榜。

  • 添加元素和设置分数

    • ZADD key score member [score member ...]:添加元素并设置分数。
    • 示例:ZADD leaderboard 100 "Alice" 90 "Bob"
  • 按分数范围获取元素

    • ZRANGE key start stop [WITHSCORES]:按分数从低到高获取元素。
    • ZREVRANGE key start stop [WITHSCORES]:从高到低获取。
    • 示例:ZRANGE leaderboard 0 -1 WITHSCORES返回所有元素及分数。
  • 按分数范围删除元素

    • ZREMRANGEBYSCORE key min max:删除分数在[min, max]之间的元素。
    • 示例:ZREMRANGEBYSCORE leaderboard 0 89删除分数小于90的元素。

高级功能命令

事务(Transaction)

Redis事务是一组命令的序列化执行,要么全部执行,要么全部不执行。

  • MULTI:开启事务。
  • EXEC:执行事务中的所有命令。
  • DISCARD:取消事务。
  • 示例:
    MULTI
    SET key1 "v1"
    SET key2 "v2"
    EXEC

    执行后key1和key2同时被设置。

持久化

Redis支持两种持久化方式:RDB和AOF。

  • RDB(Redis Database)

    • SAVE:同步保存数据到磁盘(阻塞服务器)。
    • BGSAVE:异步保存(推荐)。
    • 示例:BGSAVE在后台生成RDB快照。
  • AOF(Append Only File)

    • APPENDONLY yes:启用AOF持久化。
    • BGREWRITEAOF:重写AOF文件(压缩日志)。
    • 示例:BGREWRITEAOF优化AOF文件大小。

常用命令总结表

功能分类 命令示例 说明
键值操作 SET key value EX 60 设置键值并指定过期时间
GET key 获取键值
DEL key 删除键
字符串操作 INCR key 数值递增1
MSET k1 v1 k2 v2 批量设置键值
哈希操作 HSET key field value 设置哈希字段值
HGETALL key 获取哈希所有字段和值
列表操作 LPUSH key value 从左侧插入元素
LRANGE key 0 -1 获取列表所有元素
集合操作 SADD key member 添加元素到集合
SINTER key1 key2 求集合交集
有序集合操作 ZADD key score member 添加元素并设置分数
ZRANGE key 0 -1 WITHSCORES 获取有序集合所有元素及分数
事务操作 MULTI ... EXEC 执行事务
持久化操作 BGSAVE 异步保存RDB快照
BGREWRITEAOF 重写AOF文件

相关问答FAQs

问题1:Redis如何设置键的过期时间?有哪些注意事项?
解答:使用EXPIRE key secondsSETEX key seconds value命令设置过期时间,注意事项包括:(1)过期时间设置后可通过TTL key查看剩余时间;(2)对已存在的键设置过期时间会覆盖原有过期时间;(3)删除键或覆盖键值会清除过期时间;(4)持久化时,RDB会保存过期键的状态,而AOF通过记录DEL或EXPIRE命令实现过期逻辑。

问题2:Redis的列表(List)和集合(Set)有什么区别?分别适用于什么场景?
解答:列表(List)是有序且可重复的元素集合,支持双向操作(如LPUSH/RPOP),适用于消息队列、任务列表等需要顺序和重复元素的场景;集合(Set)是无序且不重复的元素集合,支持集合运算(如并集、交集),适用于标签系统、去重统计等需要唯一性和集合操作的场景,用列表实现任务队列,用集合实现用户兴趣标签的交集查询。

分享:
扫描分享到社交APP
上一篇
下一篇