redis基本命令

本文详细介绍了Redis中的字符串、列表和哈希表操作命令,包括SET、GET、LPUSH、HSET等,并提供了丰富的示例帮助理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文章内容来自:redis命令参考,本篇文章主要是方便个人理解记忆及使用时查询。

(一)字符串

1、set key value [expiration EX seconds|PX milliseconds] [NX|XX]

将字符串值value 关联到 key

如果 key 已经持有其他值, SET 就覆写旧值, 无视类型。

当 SET 命令对一个带有生存时间(TTL)的键进行设置之后, 该键原有的 TTL 将被清除。

可选参数

  • EX seconds : 将键的过期时间设置为 seconds 秒。 执行 SET key value EX seconds 的效果等同于执行 SETEX key seconds value

  • PX milliseconds : 将键的过期时间设置为 milliseconds 毫秒。 执行 SET key value PX milliseconds 的效果等同于执行 PSETEX key milliseconds value

  • NX : 只在键不存在时, 才对键进行设置操作。 执行 SET key value NX 的效果等同于执行 SETNX key value

  • XX : 只在键已经存在时, 才对键进行设置操作。

返回值

设置操作成功完成时返回OK
因为条件没达到而造成设置操作未执行(nil)

示例

127.0.0.1:6379> set hh hello
OK
127.0.0.1:6379> get hh
"hello"
127.0.0.1:6379> set hh hello ex 10
OK
127.0.0.1:6379> ttl hh
(integer) 8
127.0.0.1:6379> set hh hello nx
OK
127.0.0.1:6379> set hh world xx
OK
127.0.0.1:6379> get hh
"world"
127.0.0.1:6379> set hh hello px 10000
OK

2、GET key

返回与键 key 相关联的字符串值。

返回值

如果键 key 不存在, 那么返回特殊值 (nil); 否则, 返回键 key 的值。

如果键 key 的值并非字符串类型, 那么返回一个错误, 因为 GET 命令只能用于字符串值。

3、GETSET key value

将键 key的值设为 value , 并返回键 key 在被设置之前的旧值。

返回值

返回给定键 key的旧值。

如果键 key没有旧值, 也即是说, 键 key在被设置之前并不存在, 那么命令返回 (nil)

当键 key存在但不是字符串类型时, 命令返回一个错误。

示例

127.0.0.1:6379> GETSET kk linux
"redis"
127.0.0.1:6379> get kk
"linux"
127.0.0.1:6379> GETSET ss hell
(nil)

4、SETEX key seconds value

将键 key 的值设置为 value, 并将键 key的生存时间设置为 seconds 秒钟。

如果键 key已经存在, 那么 SETEX 命令将覆盖已有的值。

SETEX 命令的效果和以下两个命令的效果类似:

SET key value
EXPIRE key seconds  # 设置生存时间

SETEX和这两个命令的不同之处在于 SETEX是一个原子(atomic)操作, 它可以在同一时间内完成设置值和设置过期时间这两个操作, 因此 SETEX命令在储存缓存的时候非常实用。

返回值

命令在设置成功时返回 OK。 当 seconds 参数不合法时, 命令将返回一个错误。

示例

127.0.0.1:6379> SETEX hh 10 hello
OK
127.0.0.1:6379> ttl hh
(integer) 7

5、PSETEX key milliseconds value

这个命令和 SETEX 命令相似, 但它以毫秒为单位设置 key 的生存时间, 而不是像 SETEX 命令那样以秒为单位进行设置。

返回值

命令在设置成功时返回 OK

示例

127.0.0.1:6379> PSETEX kk 10000 redis
OK
127.0.0.1:6379> ttl kk
(integer) 6
127.0.0.1:6379> ttl kk
(integer) -2

6、SETNX key value

只在键 key不存在的情况下, 将键 key的值设置为 value

若键 key已经存在, 则 SETNX 命令不做任何动作。

SETNX是『SET if Not eXists』(如果不存在,则 SET)的简写。

返回值

命令在设置成功时返回 1 , 设置失败时返回 0

示例

127.0.0.1:6379> SETNX hh hello
(integer) 0
127.0.0.1:6379> get hh
"world"
127.0.0.1:6379> SETNX kk redis
(integer) 1
127.0.0.1:6379> get kk
"redis"

7、STRLEN key

返回键 key 储存的字符串值的长度。

当键 key不存在时, 命令返回 0

key储存的不是字符串值时, 返回一个错误。

示例

127.0.0.1:6379> get hh
"world"
127.0.0.1:6379> STRLEN hh
(integer) 5

8、APPEND key value

如果键 key已经存在并且它的值是一个字符串, APPEND 命令将把 value 追加到键 key现有值的末尾。

如果 key不存在, APPEND 就简单地将键 key的值设为 value , 就像执行 SET key value 一样。

返回值

追加 value 之后, 键 key 的值的长度。

示例

127.0.0.1:6379> keys *
1) "ss"
2) "hh"
3) "ww"
127.0.0.1:6379> APPEND oo linux
(integer) 5
127.0.0.1:6379> get oo
"linux"
127.0.0.1:6379> APPEND oo redis
(integer) 10
127.0.0.1:6379> get oo
"linuxredis"

(二)列表

1、LPUSH key value [value …]

将一个或多个值 value 插入到列表 key 的表头(最左边)

如果有多个 value值,那么各个 value值按从左到右的顺序依次插入到表头:
比如说,对空列表 mylist 执行命令 LPUSH mylist a b c ,列表的值将是 c b a ,这等同于原子性地执行 LPUSH mylist a 、 LPUSH mylist b 和 LPUSH mylist c 三个命令。

如果 key 不存在,一个空列表会被创建并执行 LPUSH操作。

返回值

执行 LPUSH命令后,列表的长度。

示例

127.0.0.1:6379> LPUSH list 1
(integer) 1
127.0.0.1:6379> LPUSH list 2 3 4 5 6 7 8
(integer) 8
127.0.0.1:6379> LRANGE list 0 -1
1) "8"
2) "7"
3) "6"
4) "5"
5) "4"
6) "3"
7) "2"
8) "1"

2、LPUSHX key value

将值 value 插入到列表 key 的表头,当且仅当 key存在并且是一个列表。当 key不存在时, LPUSHX 命令什么也不做。

返回值

LPUSHX 命令执行之后,列表的长度。

示例

127.0.0.1:6379> LPUSHX list 9
(integer) 9
127.0.0.1:6379> LPUSHX list2 a b c
(integer) 0

3、LRANGE key start stop

返回列表 key中指定区间内的元素,区间以偏移量 startstop 指定。

下标(index)参数 startstop都以 0 为底,也就是说,以 0 表示列表的第一个元素,以 1 表示列表的第二个元素,以此类推。

你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。

超出范围的下标

超出范围的下标值不会引起错误。

如果 start下标比列表的最大下标 end ( LLEN list 减去 1 )还要大,那么 LRANGE 返回一个空列表。

如果 stop下标比 end 下标还要大,Redis将 stop 的值设置为 end

返回值

一个列表,包含指定区间内的元素。

示例

127.0.0.1:6379> LRANGE list 0 -1
1) "8"
2) "7"
3) "6"
4) "5"
5) "4"
6) "3"
7) "2"
8) "1"
127.0.0.1:6379> LRANGE list 9 10
(empty list or set)

4、RPUSH key value [value …]

将一个或多个值 value 插入到列表 key 的表尾(最右边)

如果有多个 value值,那么各个 value值按从左到右的顺序依次插入到表尾:
比如说,对空列表 mylist 执行命令 RPUSH mylist a b c ,列表的值将是 a b c ,这等同于原子性地执行 RPUSH mylist a 、 RPUSH mylist b 和 RPUSH mylist c 三个命令。

如果 key 不存在,一个空列表会被创建并执行 RPUSH操作。

返回值

执行 RPUSH 命令后,列表的长度。

示例

127.0.0.1:6379> RPUSH list2 1 2 3 4 5 6 7 8
(integer) 8
127.0.0.1:6379> LRANGE list2 0 -1
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
6) "6"
7) "7"
8) "8"

5、RPUSHX key value

将值 value 插入到列表 key 的表尾,当且仅当 key存在并且是一个列表。当 key不存在时, LPUSHX 命令什么也不做。

返回值

RPUSHX 命令执行之后,列表的长度。

示例

127.0.0.1:6379> RPUSHX list2 9
(integer) 9
127.0.0.1:6379> RPUSHX list3 a b c
(integer) 0

(三)哈希表

1、HSET key field value

将哈希表 key 中域 field 的值设置为 value

如果给定的哈希表并不存在, 那么一个新的哈希表将被创建并执行 HSET 操作。

如果域 field 已经存在于哈希表中, 那么它的旧值将被新值 value 覆盖。

返回值

HSET命令在哈希表中新创建 field域并成功为它设置值时, 命令返回 1
如果域 field已经存在于哈希表, 并且 HSET命令成功使用新值覆盖了它的旧值, 那么命令返回 0

示例

127.0.0.1:6379> HSET hash key1 hello
(integer) 1
127.0.0.1:6379> hset hash key1 world
(integer) 0

2、HGET key field

返回哈希表中给定域的值。

返回值

HGET 命令在默认情况下返回给定域的值。

如果给定域不存在于哈希表中, 又或者给定的哈希表并不存在, 那么命令返回 nil

示例

127.0.0.1:6379> HGET hash key1
"world"
127.0.0.1:6379> HGET hash key
(nil)

3、HSETNX hash field value

当且仅当域 field未存在于哈希表的情况下, 将它的值设置为 value

如果给定域已经存在于哈希表当中, 那么命令将放弃执行设置操作。

如果哈希表 hash 不存在, 那么一个新的哈希表将被创建并执行 HSETNX 命令。

返回值

HSETNX 命令在设置成功时返回 1 , 在给定域已经存在而放弃执行设置操作时返回 0

示例

127.0.0.1:6379> HSETNX hash key1 hh
(integer) 0
127.0.0.1:6379> HSETNX hash key2 world
(integer) 1

4、HDEL key field [field …]

删除哈希表 key 中的一个或多个指定域,不存在的域将被忽略。

返回值

被成功移除的域的数量,不包括被忽略的域。

示例

127.0.0.1:6379> HDEL hash key1 key2
(integer) 2
127.0.0.1:6379> HMGET hash key1 key2
1) (nil)
2) (nil)

5、HLEN key

返回哈希表 key 中域的数量。

返回值

哈希表中域的数量。当 key不存在时,返回 0 。

示例

127.0.0.1:6379> HLEN hash
(integer) 0
127.0.0.1:6379> HLEN hh
(integer) 0

6、HEXISTS key field

检查给定域 field 是否存在于哈希表 key 当中。

返回值

HEXISTS命令在给定域存在时返回 1, 在给定域不存在时返回 0

示例

127.0.0.1:6379> HEXISTS hash key1
(integer) 0
127.0.0.1:6379> Hset hash key1 hello
(integer) 1
127.0.0.1:6379> HEXISTS hash key1
(integer) 1

7、HKEYS key

返回哈希表 key 中的所有域。

返回值

一个包含哈希表中所有域的表。当 key 不存在时,返回一个空表。

示例

127.0.0.1:6379> HKEYS hash
1) "key1"
127.0.0.1:6379> HDEL hash key1
(integer) 1
127.0.0.1:6379> HKEYS hash
(empty list or set)

8、HVALS key

返回哈希表 key 中所有域的值。

返回值

一个包含哈希表中所有值的表。当 key 不存在时,返回一个空表。

示例

127.0.0.1:6379> HVALS hash
(empty list or set)
127.0.0.1:6379> hset hash key1 hello
(integer) 1
127.0.0.1:6379> HVALS hash
1) "hello"

9、HSTRLEN key field

返回哈希表 key 中, 与给定域 field相关联的值的字符串长度(string length)。

如果给定的键或者域不存在, 那么命令返回 0 。

返回值

一个整数。

示例

127.0.0.1:6379> HSTRLEN hash key1
(integer) 5
127.0.0.1:6379> HSTRLEN hash key
(integer) 0

其他

1、ttl key

以秒为单位,返回给定 key的剩余生存时间(TTL, time to live)。

返回值

key不存在时,返回 -2 。 当 key 存在但没有设置剩余生存时间时,返回 -1 。 否则,以秒为单位,返回 key的剩余生存时间。


2、EXISTS key

检查给定 key是否存在。

返回值

key存在,返回 1 ,否则返回 0 。

127.0.0.1:6379> EXISTS kk
(integer) 1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值