菜鸟科技网

Redis所有命令有哪些?

Redis(Remote Dictionary Server)是一个开源的、高性能的键值存储系统,广泛应用于缓存、消息队列、会话管理等场景,其命令丰富且功能强大,覆盖了数据操作、服务器管理、持久化等多个方面,以下将详细介绍Redis的主要命令分类及具体用法,并辅以表格说明,最后附上相关FAQs。

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

键值操作命令

键值操作是Redis最基础的功能,包括键的增删改查及管理。

  • SET:设置键值,如SET key value,可添加过期时间(EX秒或PX毫秒)。
  • GET:获取键值,如GET key,若键不存在返回nil
  • DEL:删除键,支持批量删除,如DEL key1 key2
  • EXISTS:检查键是否存在,返回1(存在)或0(不存在)。
  • EXPIRE:设置键的过期时间,如EXPIRE key 60(60秒后自动删除)。
  • TTL:查看键的剩余生存时间,返回-1表示永不过期,-2表示键不存在。
  • TYPE:返回键的数据类型,如stringhashlist等。
命令 示例 说明
SET SET name "Alice" 设置字符串键值
GET GET name 获取字符串键值
DEL DEL name 删除键
EXPIRE EXPIRE name 10 设置10秒后过期

字符串操作

字符串是Redis最简单的数据类型,支持二进制安全存储。

  • INCR:键值加1,如INCR count(若键不存在,初始化为0后加1)。
  • DECR:键值减1,如DECR count
  • INCRBY:指定增量,如INCRBY count 5(加5)。
  • APPEND:追加值,如APPEND name " Bob"(原值变为"Alice Bob")。
  • SETRANGE:从指定位置覆盖字符串,如SETRANGE name 0 "Bob"(替换为"Bob")。

哈希操作

哈希(Hash)是键值对集合,适合存储对象。

  • HSET:设置字段值,如HSET user:1 name "Alice"
  • HGET:获取字段值,如HGET user:1 name
  • HGETALL:获取所有字段和值,如HGETALL user:1
  • HDEL:删除字段,如HDEL user:1 name
  • HEXISTS:检查字段是否存在,如HEXISTS user:1 name
命令 示例 说明
HSET HSET user:1 age 25 设置哈希字段
HGETALL HGETALL user:1 获取哈希所有字段和值
HINCRBY HINCRBY user:1 score 5 字段值加5

列表操作

列表(List)是字符串元素的有序集合,支持双向操作。

Redis所有命令有哪些?-图2
(图片来源网络,侵删)
  • LPUSH:左侧插入元素,如LPUSH list "A"(列表变为["A"])。
  • RPUSH:右侧插入元素,如RPUSH list "B"(列表变为["A", "B"])。
  • LPOP:左侧弹出元素,如LPOP list(返回"A",列表变为["B"])。
  • RPOP:右侧弹出元素,如RPOP list(返回"B")。
  • LRANGE:获取范围元素,如LRANGE list 0 -1(返回整个列表)。

集合操作

集合(Set)是无序的唯一元素集合,支持交集、并集等操作。

  • SADD:添加元素,如SADD set "A"(元素不重复)。
  • SMEMBERS:获取所有元素,如SMEMBERS set
  • SREM:删除元素,如SREM set "A"
  • SINTER:求交集,如SINTER set1 set2
  • SUNION:求并集,如SUNION set1 set2

有序集合操作

有序集合(ZSet)是带有分数的唯一元素集合,元素按分数排序。

  • ZADD:添加元素及分数,如ZADD zset 100 "A"(分数100,元素"A")。
  • ZRANGE:按索引范围获取元素,如ZRANGE zset 0 -1(默认升序)。
  • ZSCORE:获取元素分数,如ZSCORE zset "A"
  • ZINCRBY:增加元素分数,如ZINCRBY zset "A" 50(分数加50)。

其他高级命令

  • KEYS:匹配键名,如KEYS user:*(返回所有"user:"开头的键),生产环境慎用。
  • SCAN:增量遍历键,避免阻塞,如SCAN 0 MATCH user:* COUNT 10
  • MULTI/EXEC:事务操作,如MULTI开启事务,SET key1 value1EXEC执行事务。
  • PUBLISH/SUBSCRIBE:发布/订阅消息,如PUBLISH channel "Hello"SUBSCRIBE channel

服务器管理命令

  • INFO:获取服务器信息,如INFO memory(内存使用情况)。
  • CONFIG GET:获取配置参数,如CONFIG GET maxmemory
  • FLUSHDB:清空当前数据库,如FLUSHDB
  • SAVE:手动触发持久化,保存数据到RDB文件。

相关问答FAQs

Q1: Redis如何避免KEYS命令造成性能问题?
A1: KEYS命令会阻塞服务器,生产环境应避免使用,替代方案是使用SCAN命令,它通过游标增量遍历键,不会阻塞服务器。SCAN 0 MATCH user:* COUNT 100,其中0是游标初始值,COUNT建议设为100~1000以平衡性能与结果完整性。

Q2: Redis事务是否具有原子性?
A2: Redis事务通过MULTIEXEC实现,但与关系型数据库事务不同:

Redis所有命令有哪些?-图3
(图片来源网络,侵删)
  • 原子性EXEC执行时,如果命令语法错误,会跳过该命令但继续执行后续命令;若运行时错误(如类型不匹配),命令仍会执行,可能导致部分成功。
  • 隔离性:事务执行期间,其他客户端的命令不会被阻塞,但不会读取到事务未提交的中间状态。
    若需强一致性,可通过WATCH监视键,若键被修改则事务回退。
分享:
扫描分享到社交APP
上一篇
下一篇