Redis CLI 速查表:常用命令一览 – wiki基地


Redis CLI 速查表:常用命令一览

Redis(Remote Dictionary Server)是一个开源、内存中的数据结构存储系统,它可以用作数据库、缓存和消息代理。其CLI(Command Line Interface)是与Redis实例交互的最直接方式。本速查表将详细介绍Redis CLI中最常用的一些命令,帮助您快速上手和高效使用。

一、连接与基本操作

在开始之前,您需要通过CLI连接到Redis服务器。

  • 连接到Redis服务器:
    bash
    redis-cli -h <host> -p <port> -a <password>
    # 示例:redis-cli -h 127.0.0.1 -p 6379

    -h 指定主机,-p 指定端口,-a 用于认证(如果Redis设置了密码)。

  • PING: 检查服务器是否运行。
    bash
    PING
    # 返回 PONG

  • QUIT: 关闭当前CLI连接。
    bash
    QUIT

  • SELECT : 切换到指定数据库(Redis默认有16个数据库,从0到15)。
    bash
    SELECT 0

二、键 (Keys)

Redis中的所有数据都以键值对的形式存储。

  • KEYS : 查找所有符合给定模式的键。
    注意:在生产环境中慎用 KEYS,因为它会阻塞服务器。
    bash
    KEYS * # 查找所有键
    KEYS user:* # 查找所有以 "user:" 开头的键

  • EXISTS : 检查给定键是否存在。
    bash
    EXISTS mykey
    # 返回 1 (存在) 或 0 (不存在)

  • DEL [key …]: 删除一个或多个键。
    bash
    DEL mykey key1 key2

  • EXPIRE : 设置键的过期时间(秒)。
    bash
    EXPIRE mykey 60 # mykey 在 60 秒后过期

  • TTL : 查看键的剩余生存时间(Time To Live),以秒为单位。
    bash
    TTL mykey
    # 返回剩余秒数,-1 表示永不失效,-2 表示键不存在

  • PERSIST : 移除键的过期时间,使其变为永久键。
    bash
    PERSIST mykey

  • TYPE : 返回键存储的值的类型。
    bash
    TYPE mykey
    # 返回 string, list, hash, set, zset 等

  • RENAME : 重命名键。
    bash
    RENAME oldname newname

三、字符串 (Strings)

字符串是Redis最基本的数据类型,可以存储文本或二进制数据。

  • SET : 设置键的字符串值。
    bash
    SET mykey "Hello Redis"

  • GET : 获取键的字符串值。
    bash
    GET mykey
    # 返回 "Hello Redis"

  • SETEX : 设置键值,并带有过期时间。
    bash
    SETEX mykey 60 "Hello with expire" # 60秒后过期

  • MSET [key2 value2 …]: 同时设置多个键值对。
    bash
    MSET key1 "value1" key2 "value2"

  • MGET [key2 …]: 同时获取多个键的值。
    bash
    MGET key1 key2
    # 返回 ["value1", "value2"]

  • INCR : 将键存储的数字值递增1。
    bash
    SET counter 10
    INCR counter # 返回 11

  • DECR : 将键存储的数字值递减1。
    bash
    DECR counter # 返回 10

  • INCRBY : 将键存储的数字值递增指定值。
    bash
    INCRBY counter 5 # 返回 15

  • APPEND : 将值追加到键的末尾。
    bash
    SET greeting "Hello"
    APPEND greeting " World" # 返回 11 (新字符串长度)
    GET greeting # 返回 "Hello World"

  • STRLEN : 获取键存储的字符串长度。
    bash
    STRLEN greeting # 返回 11

四、哈希 (Hashes)

哈希是字段(field)和值(value)的映射表,非常适合存储对象。

  • HSET : 设置哈希表中指定字段的值。
    bash
    HSET user:1 name "Alice" age 30

  • HGET : 获取哈希表中指定字段的值。
    bash
    HGET user:1 name # 返回 "Alice"

  • HMSET [field2 value2 …]: 同时设置多个字段的值。
    注意:从 Redis 4.0 开始,HSET 可以接受多个字段-值对,HMSET 已被弃用。
    bash
    HSET user:2 name "Bob" age 25

  • HMGET [field2 …]: 同时获取多个字段的值。
    bash
    HMGET user:1 name age # 返回 ["Alice", "30"]

  • HGETALL : 获取哈希表中所有字段和值。
    bash
    HGETALL user:1 # 返回 ["name", "Alice", "age", "30"]

  • HKEYS : 获取哈希表中所有字段名。
    bash
    HKEYS user:1 # 返回 ["name", "age"]

  • HVALS : 获取哈希表中所有字段值。
    bash
    HVALS user:1 # 返回 ["Alice", "30"]

  • HEXISTS : 检查哈希表中是否存在指定字段。
    bash
    HEXISTS user:1 email # 返回 0

  • HDEL [field …]: 删除哈希表中一个或多个字段。
    bash
    HDEL user:1 age

  • HLEN : 获取哈希表中字段的数量。
    bash
    HLEN user:1 # 返回 1 (只剩 name 字段)

五、列表 (Lists)

列表是简单的字符串列表,按照插入顺序排序,可以从头部或尾部添加/移除元素。

  • LPUSH [value …]: 将一个或多个值插入到列表头部。
    bash
    LPUSH mylist "c" "b" "a" # 列表为 ["a", "b", "c"]

  • RPUSH [value …]: 将一个或多个值插入到列表尾部。
    bash
    RPUSH mylist "d" "e" # 列表为 ["a", "b", "c", "d", "e"]

  • LPOP : 移除并返回列表的第一个元素。
    bash
    LPOP mylist # 返回 "a",列表为 ["b", "c", "d", "e"]

  • RPOP : 移除并返回列表的最后一个元素。
    bash
    RPOP mylist # 返回 "e",列表为 ["b", "c", "d"]

  • LRANGE : 获取列表指定范围内的元素。
    bash
    LRANGE mylist 0 -1 # 获取所有元素 ["b", "c", "d"]
    LRANGE mylist 0 1 # 获取前两个元素 ["b", "c"]

  • LLEN : 获取列表的长度。
    bash
    LLEN mylist # 返回 3

  • LINDEX : 通过索引获取列表中的元素。
    bash
    LINDEX mylist 1 # 返回 "c"

  • LREM : 从列表中移除指定数量的指定值。

    • count > 0: 从头开始移除与 value 相等的 count 个元素。
    • count < 0: 从尾开始移除与 value 相等的 count 绝对值 个元素。
    • count = 0: 移除所有与 value 相等的元素。
      bash
      RPUSH mylist "f" "c"
      LREM mylist 1 "c" # 移除一个 "c"

六、集合 (Sets)

集合是无序、不重复的字符串元素集合。

  • SADD [member …]: 向集合添加一个或多个成员。
    bash
    SADD myset "apple" "banana" "cherry"

  • SMEMBERS : 获取集合中的所有成员。
    bash
    SMEMBERS myset # 返回 ["apple", "banana", "cherry"] (顺序不固定)

  • SISMEMBER : 检查成员是否是集合的成员。
    bash
    SISMEMBER myset "apple" # 返回 1
    SISMEMBER myset "grape" # 返回 0

  • SCARD : 获取集合的成员数量。
    bash
    SCARD myset # 返回 3

  • SREM [member …]: 移除集合中的一个或多个成员。
    bash
    SREM myset "banana"

  • SINTER [key2 …]: 返回所有给定集合的交集。
    bash
    SADD set1 "a" "b" "c"
    SADD set2 "b" "c" "d"
    SINTER set1 set2 # 返回 ["b", "c"]

  • SUNION [key2 …]: 返回所有给定集合的并集。
    bash
    SUNION set1 set2 # 返回 ["a", "b", "c", "d"]

  • SDIFF [key2 …]: 返回第一个集合与其他集合之间的差异。
    bash
    SDIFF set1 set2 # 返回 ["a"]

七、有序集合 (Sorted Sets)

有序集合是集合的扩展,每个成员都关联一个分数(score),集合中的成员根据分数进行排序,分数相同则按字典序排序。

  • ZADD [score member …]: 向有序集合添加一个或多个成员及其分数。
    bash
    ZADD myzset 100 "Alice" 90 "Bob" 80 "Charlie"

  • ZRANGE [WITHSCORES]: 返回有序集合中指定索引范围内的成员。
    bash
    ZRANGE myzset 0 -1 # 返回 ["Charlie", "Bob", "Alice"]
    ZRANGE myzset 0 -1 WITHSCORES # 返回 ["Charlie", "80", "Bob", "90", "Alice", "100"]

  • ZREVRANGE [WITHSCORES]: 返回有序集合中指定索引范围内的成员(分数从高到低)。
    bash
    ZREVRANGE myzset 0 0 # 返回 ["Alice"]

  • ZRANGEBYSCORE [WITHSCORES] [LIMIT offset count]: 返回有序集合中指定分数范围内的成员。
    bash
    ZRANGEBYSCORE myzset 80 90 WITHSCORES # 返回 ["Charlie", "80", "Bob", "90"]

  • ZSCORE : 获取有序集合中指定成员的分数。
    bash
    ZSCORE myzset "Alice" # 返回 "100"

  • ZREM [member …]: 移除有序集合中的一个或多个成员。
    bash
    ZREM myzset "Charlie"

  • ZINCRBY : 增加有序集合中指定成员的分数。
    bash
    ZINCRBY myzset 5 "Bob" # Bob 的分数变为 95

  • ZCARD : 获取有序集合的成员数量。
    bash
    ZCARD myzset # 返回 2

八、发布/订阅 (Pub/Sub)

Redis 的发布/订阅功能用于实现消息传递。

  • PUBLISH : 将消息发布到指定频道。
    bash
    PUBLISH news "Breaking News: Redis is awesome!"

  • SUBSCRIBE [channel …]: 订阅一个或多个频道。
    (此命令会阻塞客户端,直到连接关闭或取消订阅)
    bash
    SUBSCRIBE news

  • PSUBSCRIBE [pattern …]: 订阅一个或多个模式匹配的频道。
    bash
    PSUBSCRIBE news.* # 订阅所有以 "news." 开头的频道

九、事务 (Transactions)

Redis 事务允许您将一组命令作为一个原子操作执行。

  • MULTI: 标记一个事务块的开始。
    bash
    MULTI
    SET key1 "value1"
    INCR counter
    EXEC

  • EXEC: 执行所有事务块内的命令。

  • DISCARD: 取消事务块内的所有命令。
    bash
    MULTI
    SET key1 "value1"
    DISCARD

  • WATCH [key …]: 监视一个或多个键,如果在事务执行前这些键被修改,则事务会被打断(回滚)。
    bash
    WATCH mykey
    # ... 在这里获取 mykey 的值并进行一些计算 ...
    MULTI
    # ... 基于 mykey 的值执行命令 ...
    EXEC

十、服务器管理

  • INFO [section]: 获取 Redis 服务器的各种信息和统计数据。
    bash
    INFO # 获取所有信息
    INFO server # 获取服务器信息
    INFO memory # 获取内存信息

  • MONITOR: 实时打印 Redis 服务器接收到的所有命令。
    注意:会影响性能,仅用于调试。
    bash
    MONITOR

  • SHUTDOWN [NOSAVE|SAVE]: 关闭 Redis 服务器。

    • NOSAVE: 不保存数据。
    • SAVE: 保存数据到磁盘。
      bash
      SHUTDOWN SAVE

总结

Redis CLI 是一个功能强大且灵活的工具,能够让您直接与 Redis 服务器交互,执行各种数据操作和服务器管理任务。本速查表涵盖了最常用的命令,但 Redis 的功能远不止于此。建议您查阅官方文档,深入了解更多高级特性和用法,例如流(Streams)、GeoSpatial、HyperLogLog 等,以充分发挥 Redis 的潜力。熟练掌握这些命令将极大地提升您使用 Redis 的效率和体验。


滚动至顶部