# 设置键 mykey 在 60 秒后过期
EXPIRE mykey 60
# 设置键 mykey 在 1000 毫秒(即1秒)后过期
PEXPIRE mykey 1000
# 设置键 mykey 在指定的UNIX时间戳(秒)后过期
EXPIREAT mykey 1609459200
# 设置键 mykey 在指定的UNIX时间戳(毫秒)后过期
PEXPIREAT mykey 1609459200000
在Redis中,字符串类型是最基本的数据类型之一,用于存储字符串值。通过Redis的命令行界面(CLI),你可以执行一系列命令来操作字符串类型的数据。以下是一些常用的字符串操作命令:
SET key value
命令用于设置键的值。如果键不存在,该命令将创建一个新键;如果键已存在,该命令将覆盖原有值。
SET mykey "Hello, Redis!"
GET key
命令用于获取键的值。如果键不存在,该命令将返回 (nil)
。
GET mykey
MSET key1 value1 [key2 value2 ...]
命令用于同时设置多个键值对。如果某个键已存在,则覆盖它的值。
MSET key1 "value1" key2 "value2"
MGET key1 [key2 ...]
命令用于同时获取多个键的值。对于不存在的键,将返回 (nil)
。
MGET key1 key2
INCR key
命令将键的值增加1。如果键不存在,其值将被初始化为0后再执行增加操作。这个命令仅适用于存储整数值的键。
INCR mycounter
DECR key
命令将键的值减少1。如果键不存在,其值将被初始化为-1后再执行减少操作。这个命令也仅适用于存储整数值的键。
DECR mycounter
INCRBY key increment
命令将键的值增加指定的增量值。如果键不存在,其值将被初始化为0后再执行增加操作。
INCRBY mycounter 10
DECRBY key decrement
命令将键的值减少指定的减量值。如果键不存在,其值将被初始化为-1后再执行减少操作。
DECRBY mycounter 5
SETNX key value
命令用于设置键的值,仅当键不存在时。如果键已存在,该命令将不做任何操作。
SETNX newkey "newvalue"
SETEX key seconds value
命令设置键的值,并为其指定过期时间(秒)。如果键已存在,该命令将覆盖原有值。
SETEX mykeyex 60 "Hello, Redis with expiration!"
APPEND key value
命令将指定的值追加到键的现有值(字符串)的末尾。如果键不存在,该命令将创建一个新键。
APPEND mykey ", World!"
这些命令通过Redis的命令行界面(CLI)提供了对字符串类型数据的基本操作。你可以通过在终端或命令行界面中运行redis-cli
命令来启动Redis的CLI,并输入上述命令进行操作。
在Redis中,list(列表)类型是一种简单的字符串列表,按照插入顺序排序。你可以通过Redis的命令行界面(CLI)来操作list类型的数据。以下是一些常用的list操作命令:
LPUSH key value1 [value2] ...
命令将一个或多个值插入到列表头部。如果列表不存在,一个空列表会被创建并执行 LPUSH 操作。
LPUSH mylist a
LPUSH mylist b c
这将创建一个名为mylist
的列表(如果它还不存在),并依次将c
、b
、a
插入到列表的头部,因此列表的内容将是c
、b
、a
。
RPUSH key value1 [value2] ...
命令将一个或多个值插入到列表的尾部(最右边)。如果列表不存在,一个空列表会被创建并执行 RPUSH 操作。
RPUSH mylist d
RPUSH mylist e f
这将把d
、e
、f
依次插入到mylist
的尾部,因此最终列表的内容将是c
、b
、a
、d
、e
、f
。
LPOP key
命令移除并获取列表的第一个元素。
LPOP mylist
这将移除并返回mylist
列表的第一个元素(在这个例子中是c
),之后mylist
的内容将是b
、a
、d
、e
、f
。
RPOP key
命令移除并获取列表的最后一个元素。
RPOP mylist
这将移除并返回mylist
列表的最后一个元素(在这个例子中是f
),之后mylist
的内容将是b
、a
、d
、e
。
LRANGE key start stop
命令获取列表指定范围内的元素。
start
和 stop
为索引,索引从 0 开始,其中 0 表示列表的第一个元素,1 表示第二个元素,以此类推。你也可以使用负数索引来表示从列表尾部开始的位置,-1 表示最后一个元素,-2 表示倒数第二个元素,依此类推。LRANGE
命令返回指定范围内的元素列表,索引范围超出列表实际长度的部分不会返回任何内容。LRANGE mylist 0 2
这将返回mylist
列表中索引从0到2的元素,即b
、a
、d
。
LLEN key
命令返回列表的长度。
LLEN mylist
如果mylist
当前包含b
、a
、d
、e
,这个命令将返回4
。
LINSERT key BEFORE|AFTER pivot value
命令将值value
插入到列表当中,位于值pivot
之前或之后。如果列表不存在,一个空列表会被创建并执行 LINSERT 操作。当pivot
不存在于列表中时,不进行任何操作。
LINSERT mylist BEFORE a g
如果a
存在于mylist
中,这将在a
之前插入g
。
LREM key count value
命令移除列表元素。
count
的值可以是以下几种:value
相等的元素的第count
个。value
相等的元素的第abs(count)
个。value
相等的元素。LREM mylist 0 a
这将移除mylist
中所有的a
元素。
通过Redis的命令行界面(CLI),你可以利用这些命令来操作list类型的数据。
在Redis中,zset(有序集合)类型是一个不包含重复元素的字符串集合,每个元素都会关联一个double类型的分数(score)。Redis正是通过分数来为集合中的成员进行从小到大的排序。通过Redis的命令行界面(CLI),你可以执行一系列命令来操作zset类型的数据。以下是一些常用的zset操作命令:
ZADD key [NX|XX] [CH] [INCR] score1 member1 [score2 member2 ...]
命令用于将一个或多个成员元素及其分数值加入到有序集合中。如果成员已经存在,则更新其分数值。
NX
:仅当成员尚未在集合中时,才添加。XX
:仅当成员已在集合中时,才更新分数。CH
:返回操作后集合元素数量的变化。INCR
:将分数增加为score1
,而不是设置score1
。ZADD myzset 1 "one"
ZADD myzset 2 "two" 3 "three"
这将创建一个名为myzset
的有序集合(如果它还不存在),并添加三个成员"one"
、"two"
和"three"
,分别带有分数1
、2
和3
。
ZRANGE key start stop [WITHSCORES]
命令返回有序集合中指定区间的成员。成员的位置按分数值递增(从小到大)来排序。
start
和 stop
为索引,索引从 0 开始,其中 0 表示集合的第一个元素,-1 表示集合的最后一个元素。WITHSCORES
选项会让命令同时返回成员的分数值。ZRANGE myzset 0 -1 WITHSCORES
这将返回myzset
集合中的所有成员及其分数值。
ZREVRANGE key start stop [WITHSCORES]
命令与ZRANGE
命令类似,但返回的是集合中分数值从高到低排序的成员。
ZREVRANGE myzset 0 -1 WITHSCORES
这将返回myzset
集合中分数值最高的成员到最低的成员及其分数值。
ZREM key member1 [member2] ...
命令移除有序集合中的一个或多个成员,不存在的成员将被忽略。
ZREM myzset "two"
这将从myzset
集合中移除成员"two"
。
ZSCORE key member
命令返回有序集合中成员的分数值。
ZSCORE myzset "one"
这将返回myzset
集合中成员"one"
的分数值。
ZRANK key member
命令返回有序集合中成员的排名。排名是从 0 开始计算的,即分数最低的成员排名为 0。
ZRANK myzset "one"
这将返回myzset
集合中成员"one"
的排名。
ZREVRANK key member
命令与ZRANK
命令类似,但返回的是成员从分数值最高到最低的排名。
ZREVRANK myzset "three"
这将返回myzset
集合中成员"three"
的逆排名(即从最高分到最低分的排名)。
ZINCRBY key increment member
命令为有序集合中的成员增加分数值。
ZINCRBY myzset 2 "one"
这将myzset
集合中成员"one"
的分数值增加2
。
通过Redis的命令行界面(CLI),你可以利用这些命令来操作zset类型的数据。
在Redis中,实际上并没有直接命名为“map”的数据类型。但是,Redis的hashes类型可以被用作类似map的数据结构,因为它们存储了键值对集合。Hashes特别适用于存储对象,其中每个字段(field)可以映射到一个值(value)。
以下是一些通过Redis命令行操作hashes(即类似map)的常用命令:
HSET key field value
命令用于为哈希表中的字段赋值。
如果哈希表不存在,一个新的哈希表被创建并进行 HSET 操作。如果字段已经存在于哈希表中,该字段的旧值将被覆盖。
HSET myhash field1 "Hello"
HSET myhash field2 "World"
这将创建一个名为myhash
的哈希表(如果它还不存在),并设置两个字段field1
和field2
的值分别为"Hello"
和"World"
。
HGET key field
命令用于获取存储在哈希表中指定字段的值。
HGET myhash field1
这将返回myhash
哈希表中field1
字段的值,即"Hello"
。
HGETALL key
命令返回哈希表中所有的字段和值。
HGETALL myhash
这将返回myhash
哈希表中所有的字段和值,结果是一个包含字段和值的列表,例如1) "field1" 2) "Hello" 3) "field2" 4) "World"
。
HDEL key field1 [field2] ...
命令用于删除哈希表中的一个或多个字段。
HDEL myhash field1
这将从myhash
哈希表中删除field1
字段。
HEXISTS key field
命令用于检查哈希表中指定的字段是否存在。
HEXISTS myhash field2
如果myhash
哈希表中存在field2
字段,该命令将返回1
,否则返回0
。
HINCRBY key field increment
命令用于为哈希表中的字段值加上指定增量数。增量数可以是负数,表示对值进行减法操作。
HINCRBY myhash field3 1
如果field3
不存在,其值将被初始化为0
,然后再执行加法操作。如果field3
已存在,其值将增加1
。
HLEN key
命令用于获取哈希表中字段的数量。
HLEN myhash
这将返回myhash
哈希表中字段的数量。
HKEYS key
命令获取哈希表中的所有字段名。
HKEYS myhash
这将返回一个包含myhash
哈希表中所有字段名的列表。
HVALS key
命令获取哈希表中的所有值。
HVALS myhash
这将返回一个包含myhash
哈希表中所有字段值的列表。
通过Redis的命令行界面(CLI),你可以利用这些命令来操作hashes类型的数据,即类似map的结构。
Redis支持多种数据类型,以满足不同的数据存储和访问需求。具体来说,Redis支持以下五种基本数据类型:
此外,虽然早期的Redis版本中可能不支持,但Redis后续版本还引入了如位图(Bitmap)和地理位置(Geospatial)等特殊的数据类型,以满足更广泛的数据存储和查询需求。这些特殊类型提供了对二进制数据和地理位置数据的支持,进一步扩展了Redis的应用场景。
综上所述,Redis通过支持多种数据类型,为开发者提供了灵活、高效的数据存储和访问方案。