一、概述
Redis 提供了许多命令用于在内存中存储和检索数据。以下是一些常用的 Redis 命令,它们涵盖了各种功能,包括字符串、列表、集合、有序集合、哈希等数据结构的操作。
二、字符串操作命令
在 Redis 中,字符串是最简单的数据类型之一,它的值可以是文本、数字或者二进制数据。以下是一些常用的字符串操作命令:
- SET key value
- 用法:
SET key value
- 功能:设置指定 key 的值为给定的 value。
- 示例:
SET mykey "Hello"
- 用法:
- GET key
- 用法:
GET key
- 功能:获取指定 key 的值。
- 示例:
GET mykey
(返回 “Hello”)
- 用法:
- MSET key value [key value …]
- 用法:
MSET key value [key value ...]
- 功能:同时设置多个 key 的值。
- 示例:
MSET key1 "Hello" key2 "World"
- 用法:
- MGET key [key …]
- 用法:
MGET key [key ...]
- 功能:同时获取多个 key 的值。
- 示例:
MGET key1 key2
(返回 “Hello” 和 “World”)
- 用法:
- APPEND key value
- 用法:
APPEND key value
- 功能:将指定 key 的值追加给定的 value。
- 示例:
APPEND mykey " World"
- 用法:
- STRLEN key
- 用法:
STRLEN key
- 功能:获取指定 key 的值的长度(字符串的长度)。
- 示例:
STRLEN mykey
(返回 11)
- 用法:
- INCR key
- 用法:
INCR key
- 功能:将指定 key 的值增加 1。
- 示例:如果
key
的值是一个整数,执行INCR key
将其增加 1。
- 用法:
- DECR key
- 用法:
DECR key
- 功能:将指定 key 的值减少 1。
- 示例:如果
key
的值是一个整数,执行DECR key
将其减少 1。
- 用法:
- INCRBY key increment
- 用法:
INCRBY key increment
- 功能:将指定 key 的值增加指定的增量。
- 示例:
INCRBY counter 5
(如果counter
的值是 3,执行后变成 8)
- 用法:
- DECRBY key decrement
- 用法:
DECRBY key decrement
- 功能:将指定 key 的值减少指定的减量。
- 示例:
DECRBY counter 3
(如果counter
的值是 8,执行后变成 5)
- 用法:
这些命令覆盖了常见的字符串操作,你可以根据具体的需求选择合适的命令。在使用 Redis 时,要注意合理使用字符串和其他数据结构,以充分发挥 Redis 的性能优势。
三、列表操作命令
在 Redis 中,列表是一个有序的字符串元素集合,它支持在头部和尾部快速地添加、删除元素。以下是一些常用的列表操作命令:
- LPUSH key value [value …]
- 用法:
LPUSH key value [value ...]
- 功能:将一个或多个值插入到列表的头部。
- 示例:
LPUSH mylist "world" "hello"
(在列表mylist
的头部插入两个值)
- 用法:
- RPUSH key value [value …]
- 用法:
RPUSH key value [value ...]
- 功能:将一个或多个值插入到列表的尾部。
- 示例:
RPUSH mylist "hello" "world"
(在列表mylist
的尾部插入两个值)
- 用法:
- LPOP key
- 用法:
LPOP key
- 功能:移除并返回列表的头元素。
- 示例:
LPOP mylist
(移除并返回列表mylist
的头元素)
- 用法:
- RPOP key
- 用法:
RPOP key
- 功能:移除并返回列表的尾元素。
- 示例:
RPOP mylist
(移除并返回列表mylist
的尾元素)
- 用法:
- LRANGE key start stop
- 用法:
LRANGE key start stop
- 功能:获取列表指定范围内的元素。
- 示例:
LRANGE mylist 0 1
(获取列表mylist
中索引为 0 到 1 的元素)
- 用法:
- LINDEX key index
- 用法:
LINDEX key index
- 功能:获取列表中指定索引位置的元素。
- 示例:
LINDEX mylist 1
(获取列表mylist
中索引为 1 的元素)
- 用法:
- LLEN key
- 用法:
LLEN key
- 功能:获取列表的长度。
- 示例:
LLEN mylist
(返回列表mylist
的长度)
- 用法:
- LREM key count value
- 用法:
LREM key count value
- 功能:从列表中移除指定数量的与给定值相等的元素。
- 示例:
LREM mylist 2 "hello"
(从列表mylist
中移除值为 “hello” 的前两个元素)
- 用法:
- LTRIM key start stop
- 用法:
LTRIM key start stop
- 功能:保留列表指定范围内的元素,移除其他元素。
- 示例:
LTRIM mylist 0 1
(保留列表mylist
中索引为 0 到 1 的元素,移除其他元素)
- 用法:
这些列表操作命令使你能够在 Redis 中灵活地处理有序的元素集合。你可以根据需要选择适当的命令执行插入、删除、获取等操作。
四、集合操作命令
在 Redis 中,集合是一个无序、唯一的元素集合。Redis 提供了一系列集合操作命令,用于执行诸如添加成员、移除成员、判断成员是否存在等操作。以下是一些常用的集合操作命令:
- SADD key member [member …]
- 用法:
SADD key member [member ...]
- 功能:向集合中添加一个或多个成员。
- 示例:
SADD myset "member1" "member2"
(向集合myset
中添加两个成员)
- 用法:
- SMEMBERS key
- 用法:
SMEMBERS key
- 功能:获取集合中的所有成员。
- 示例:
SMEMBERS myset
(返回集合myset
中的所有成员)
- 用法:
- SREM key member [member …]
- 用法:
SREM key member [member ...]
- 功能:从集合中移除一个或多个成员。
- 示例:
SREM myset "member1"
(从集合myset
中移除成员 “member1”)
- 用法:
- SISMEMBER key member
- 用法:
SISMEMBER key member
- 功能:判断指定成员是否存在于集合中。
- 示例:
SISMEMBER myset "member1"
(检查成员 “member1” 是否在集合myset
中)
- 用法:
- SCARD key
- 用法:
SCARD key
- 功能:获取集合的基数(元素数量)。
- 示例:
SCARD myset
(返回集合myset
的元素数量)
- 用法:
- SUNION key [key …]
- 用法:
SUNION key [key ...]
- 功能:返回多个集合的并集。
- 示例:
SUNION set1 set2
(返回set1
和set2
的并集)
- 用法:
- SINTER key [key …]
- 用法:
SINTER key [key ...]
- 功能:返回多个集合的交集。
- 示例:
SINTER set1 set2
(返回set1
和set2
的交集)
- 用法:
- SDIFF key [key …]
- 用法:
SDIFF key [key ...]
- 功能:返回多个集合的差集(第一个集合相对于其他集合的差集)。
- 示例:
SDIFF set1 set2
(返回set1
相对于set2
的差集)
- 用法:
这些集合操作命令允许你以灵活的方式管理无序的唯一元素集合。你可以根据需要使用这些命令执行添加、移除、判断成员存在等操作。
五、有序集合操作
在 Redis 中,有序集合(Sorted Set)是一种集合数据类型,其中的每个成员都关联一个分数(score),通过分数可以对成员进行排序。以下是一些常用的有序集合操作命令:
- ZADD key score member [score member …]
- 用法:
ZADD key score member [score member ...]
- 功能:向有序集合中添加一个或多个成员,每个成员都关联一个分数。
- 示例:
ZADD myzset 1 "one" 2 "two"
(向有序集合myzset
中添加两个成员,分数分别为 1 和 2)
- 用法:
- ZRANGE key start stop [WITHSCORES]
- 用法:
ZRANGE key start stop [WITHSCORES]
- 功能:获取有序集合指定范围内的成员,可选择返回成员的分数。
- 示例:
ZRANGE myzset 0 1 WITHSCORES
(返回有序集合myzset
中排名为 0 到 1 的成员及其分数)
- 用法:
- ZREVRANGE key start stop [WITHSCORES]
- 用法:
ZREVRANGE key start stop [WITHSCORES]
- 功能:获取有序集合指定范围内的成员,按分数递减的顺序排列。
- 示例:
ZREVRANGE myzset 0 1 WITHSCORES
(返回有序集合myzset
中排名为 0 到 1 的成员及其分数,按分数递减排序)
- 用法:
- ZSCORE key member
- 用法:
ZSCORE key member
- 功能:获取有序集合中指定成员的分数。
- 示例:
ZSCORE myzset "one"
(返回有序集合myzset
中成员 “one” 的分数)
- 用法:
- ZREM key member [member …]
- 用法:
ZREM key member [member ...]
- 功能:从有序集合中移除一个或多个成员。
- 示例:
ZREM myzset "one"
(从有序集合myzset
中移除成员 “one”)
- 用法:
- ZINCRBY key increment member
- 用法:
ZINCRBY key increment member
- 功能:增加有序集合中指定成员的分数。
- 示例:
ZINCRBY myzset 2 "one"
(将有序集合myzset
中成员 “one” 的分数增加 2)
- 用法:
- ZCARD key
- 用法:
ZCARD key
- 功能:获取有序集合的基数(元素数量)。
- 示例:
ZCARD myzset
(返回有序集合myzset
的元素数量)
- 用法:
- ZRANK key member
- 用法:
ZRANK key member
- 功能:获取有序集合中指定成员的排名(从小到大排序)。
- 示例:
ZRANK myzset "one"
(返回有序集合myzset
中成员 “one” 的排名)
- 用法:
- ZREVRANK key member
- 用法:
ZREVRANK key member
- 功能:获取有序集合中指定成员的排名(从大到小排序)。
- 示例:
ZREVRANK myzset "one"
(返回有序集合myzset
中成员 “one” 的递减排名)
- 用法:
这些有序集合操作命令使你能够在 Redis 中高效地处理带有分数的成员集合,进行范围查询、分数增减、成员排名等操作。
六、哈希操作
在 Redis 中,哈希(Hash)是一种存储键值对的数据结构,其中每个键都映射到一个值。以下是一些常用的哈希操作命令:
- HSET key field value
- 用法:
HSET key field value
- 功能:设置哈希表中指定字段的值。
- 示例:
HSET user:1000 username "john_doe"
(将哈希表user:1000
中的字段username
设置为 “john_doe”)
- 用法:
- HGET key field
- 用法:
HGET key field
- 功能:获取哈希表中指定字段的值。
- 示例:
HGET user:1000 username
(获取哈希表user:1000
中字段username
的值)
- 用法:
- HMSET key field value [field value …]
- 用法:
HMSET key field value [field value ...]
- 功能:同时设置哈希表中多个字段的值。
- 示例:
HMSET user:1000 username "john_doe" age 30 email "john@example.com"
(同时设置多个字段的值)
- 用法:
- HMGET key field [field …]
- 用法:
HMGET key field [field ...]
- 功能:同时获取哈希表中多个字段的值。
- 示例:
HMGET user:1000 username age email
(获取哈希表user:1000
中多个字段的值)
- 用法:
- HDEL key field [field …]
- 用法:
HDEL key field [field ...]
- 功能:从哈希表中删除一个或多个字段。
- 示例:
HDEL user:1000 email
(从哈希表user:1000
中删除字段email
)
- 用法:
- HKEYS key
- 用法:
HKEYS key
- 功能:获取哈希表中所有字段的键名。
- 示例:
HKEYS user:1000
(获取哈希表user:1000
中所有字段的键名)
- 用法:
- HVALS key
- 用法:
HVALS key
- 功能:获取哈希表中所有字段的值。
- 示例:
HVALS user:1000
(获取哈希表user:1000
中所有字段的值)
- 用法:
- HGETALL key
- 用法:
HGETALL key
- 功能:获取哈希表中所有字段和值。
- 示例:
HGETALL user:1000
(获取哈希表user:1000
中所有字段和值)
- 用法:
- HINCRBY key field increment
- 用法:
HINCRBY key field increment
- 功能:将哈希表中指定字段的值增加指定的增量。
- 示例:
HINCRBY user:1000 age 1
(将哈希表user:1000
中字段age
的值增加 1)
- 用法:
这些哈希操作命令使你能够在 Redis 中存储和检索具有结构化数据的信息,类似于一个小型的关联数组或对象。你可以根据具体的需求使用这些命令进行单个字段或多个字段的操作。
七、其他操作命令
除了字符串、列表、集合、有序集合、哈希等基本数据结构的命令之外,Redis 还提供了一些其他常用的命令,用于管理数据库、执行事务、处理键过期等。以下是一些其他常用的 Redis 命令:
- DEL key [key …]
- 用法:
DEL key [key ...]
- 功能:删除指定的一个或多个 key。
- 示例:
DEL mykey
(删除键mykey
)
- 用法:
- EXISTS key
- 用法:
EXISTS key
- 功能:检查指定的 key 是否存在。
- 示例:
EXISTS mykey
(检查键mykey
是否存在)
- 用法:
- KEYS pattern
- 用法:
KEYS pattern
- 功能:查找所有符合给定模式的 key。
- 示例:
KEYS user:*
(查找所有以 “user:” 开头的 key)
- 用法:
- RENAME key newkey
- 用法:
RENAME key newkey
- 功能:将 key 重命名为 newkey。
- 示例:
RENAME mykey newkey
(将键mykey
重命名为newkey
)
- 用法:
- TTL key
- 用法:
TTL key
- 功能:获取 key 的剩余过期时间(以秒为单位)。
- 示例:
TTL mykey
(获取键mykey
的剩余过期时间)
- 用法:
- EXPIRE key seconds
- 用法:
EXPIRE key seconds
- 功能:设置 key 的过期时间(以秒为单位)。
- 示例:
EXPIRE mykey 60
(设置键mykey
的过期时间为 60 秒)
- 用法:
- PERSIST key
- 用法:
PERSIST key
- 功能:移除 key 的过期时间,使其持久化。
- 示例:
PERSIST mykey
(移除键mykey
的过期时间)
- 用法:
- SELECT index
- 用法:
SELECT index
- 功能:切换到指定索引的数据库。
- 示例:
SELECT 1
(切换到数据库 1)
- 用法:
- FLUSHDB
- 用法:
FLUSHDB
- 功能:删除当前数据库中的所有 key。
- 示例:
FLUSHDB
(删除当前数据库中的所有 key)
- 用法:
- FLUSHALL
- 用法:
FLUSHALL
- 功能:删除所有数据库中的所有 key。
- 示例:
FLUSHALL
(删除所有数据库中的所有 key)
- 用法:
- PING
- 用法:
PING
- 功能:检查服务器是否处于运行状态。
- 示例:
PING
(如果服务器运行正常,返回 “PONG”)
- 用法:
这些命令涵盖了一些基本的数据库管理、键管理、过期时间设置等操作。在实际使用中,根据具体的场景和需求,选择合适的命令来完成相应的操作。值得注意的是,KEYS
命令在大型数据库中使用时可能会影响性能,因为它需要遍历所有的 key。在生产环境中,可以考虑使用更高效的方式来获取和管理数据。
八、总结
Redis 是一款高性能的开源内存数据库,支持多种数据结构。其中,字符串命令包括 SET
、GET
等,用于存储和检索简单的键值对。列表命令如 LPUSH
、RPUSH
用于在头尾插入元素,而集合命令如 SADD
、SMEMBERS
用于处理唯一无序元素。有序集合命令如 ZADD
、ZRANGE
通过分数对元素排序。哈希命令如 HSET
、HGET
则适用于存储键值对集合。其他常用命令包括键管理命令如 DEL
、EXISTS
,过期时间管理命令如 EXPIRE
、PERSIST
,以及数据库选择、清空等命令。这些命令使 Redis 成为一个功能丰富、灵活可用于各种应用场景的数据库系统,通过键值对存储和操作不同类型的数据,提供快速高效的数据存取和处理。