Redis 学习笔记四 命令二

Redis 哈希(Hash)

Redis hash是一个string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象。

Redis 中每个 hsh 可以存储 232-1 键值对(40多亿)。

实例

redis 127.0.0.1:6379> HMSET w3ckey name "redis tutorial" description "redis basic commands for caching" likes 20 visitors 23000
OK
redis 127.0.0.1:6379> HGETALL w3ckey

1) "name"
2) "redis tutorial"
3) "description"
4) "redis basic commands for caching"
5) "likes"
6) "20"
7) "visitors"
8) "23000"

在以上实例中,我们设置了 redis 的一些描述信息 (name,description,likes,visitors)到哈希表 的 w3ckey 中

Redis Hdel 命令

Redis Hdel 命令用于删除哈希表 key 中的一个或者多个指定字段,不存在的字段将被忽略。

语法

redis Hdel 命令基本语法如下:

redis 127.0.0.1:6379> HDEL KEY_NAME FIELD1.. FIELDN 

可用版本
>= 2.0.0

返回值

被成功删除字段的数量,不包括被忽略的字段。

实例

redis 127.0.0.1:6379> HSET myhash field1 "foo"
(integer) 1
redis 127.0.0.1:6379> HDEL myhash field1
(integer) 1
redis 127.0.0.1:6379> HDEL myhash field2
(integer) 0

Redis Hexists 命令

Redis Hexists 命令用于查看哈希表的指定字段是否存在。

语法

redis Hexists 命令基本语法如下:

redis 127.0.0.1:6379> HEXISTS KEY_NAME FIELD_NAME 

可用版本
>= 2.0.0

返回值

如果哈希表有给定字段,返回 1 。 如果哈希表不含有给定字段,或key 不存在,返回 0 。

实例

redis 127.0.0.1:6379> HSET myhash field1 "foo"
(integer) 1
redis 127.0.0.1:6379> HEXISTS myhash field1
(integer) 1
redis 127.0.0.1:6379> HEXISTS myhash field2
(integer) 0

Redis Hget 命令

Redis Hget 命令用于返回哈希表中指定字段的值。

语法

redis Hget 命令基本语法如下:

redis 127.0.0.1:6379> HGET KEY_NAME FIELD_NAME 

可用版本
>= 2.0.0

返回值

返回给定字段的值。如果给定的字段或key 不存在时,返回 nil。

实例

# 字段存在

redis> HSET site redis redis.com
(integer) 1

redis> HGET site redis
"redis.com"


# 字段不存在

redis> HGET site mysql
(nil)

Redis Hgetall 命令

Redis Hgetall 命令用于返回哈希表中,所有的字段和值。

在返回值,紧跟每个字段名(field name)之后是字段的值(value),所以返回值的长度是哈希表大小的两倍。

语法

redis Hgetall 命令基本语法如下:

redis 127.0.0.1:6379> HGETALL KEY_NAME 

可用版本
>= 2.0.0

返回值

以列表形式返回哈希表的字段及字段值。 若 key 不存在,返回空列表。

实例

redis 127.0.0.1:6379> HSET myhash field1 "foo"
(integer) 1
redis 127.0.0.1:6379> HSET myhash field2 "bar"
(integer) 1
redis 127.0.0.1:6379> HGETALL myhash
1) "field1"
2) "Hello"
3) "field2"
4) "World"

Redis Hincrby 命令

Redis Hincrby 命令用于为哈希表中的字段值加上指定增量值。

增量也可以为负数,相当于对指定字段进行减法操作。

如果哈希表的 key 不存在,一个新的哈希表被创建并执行 HINCRBY 命令。

如果指定的字段不存在,那么在执行命令前,字段的值被初始化为 0 。

对一个储存字符串值的字段执行 HINCRBY 命令造成一个错误。

本操作的值被限制在 64位 (bit)有符号数字表示之内。

语法

redis Hincrby 命令基本语法如下:

redis 127.0.0.1:6379> HINCRBY KEY_NAME FIELD_NAME INCR_BY_NUMBER 

可用版本
>= 2.0.0

返回值

执行 Hincrby 命令之后,哈希表中的字段的值。

实例

redis 127.0.0.1:6379> HSET myhash field1 20
(integer) 1
redis 127.0.0.1:6379> HINCRBY myhash field 1
(integer) 21
redis 127.0.0.1:6379> HINCRBY myhash field -1
(integer) 20

Redis Hincrbyfloat 命令

Redis Hincrbyfloat 命令用于为哈希表中的字段值加上指定浮点数增量值。

如果指定的字段不存在,那么在执行命令前,字段的值被初始化为 0.

语法

redis Hincrbyfloat 命令基本语法如下:

redis 127.0.0.1:6379> HINCRBYFLOAT KEY_NAME FIELD_NAME INCR_BY_NUMBER 

可用版本
>= 2.6.0

返回值

执行 Hincrbyfloat 命令之后,哈希表中字段的值。

实例

redis 127.0.0.1:6379> HSET myhash field 20.50
(integer) 1
redis 127.0.0.1:6379> HINCRBYFLOAT mykey field 0.1
"20.60"

Redis Hkeys 命令

Redis Hkeys 命令用于获取哈希表中的所有字段名。

语法

redis Hkeys 命令基本语法如下:

redis 127.0.0.1:6379> HKEYS KEY_NAME FIELD_NAME INCR_BY_NUMBER 

可用版本
>= 2.0.0

返回值

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

实例

redis 127.0.0.1:6379> HSET myhash field1 "foo"
(integer) 1
redis 127.0.0.1:6379> HSET myhash field2 "bar"
(integer) 1
redis 127.0.0.1:6379> HKEYS myhash
1) "field1"
2) "field2"

Redis Hlen 命令

Redis Hlen 命令用于获取哈希表中字段的数量。

语法

redis Hlen 命令基本语法如下:

redis 127.0.0.1:6379> HLEN KEY_NAME 

可用版本
>= 2.0.0

返回值

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

实例

redis 127.0.0.1:6379> HSET myhash field1 "foo"
(integer) 1
redis 127.0.0.1:6379> HSET myhash field2 "bar"
(integer) 1
redis 127.0.0.1:6379> HLEN myhash
(integer) 2

Redis Hmget 命令

Redis Hmget 命令用于返回哈希表中一个或多个给定字段的值。

如果指定字段不存在与哈希表,那么返回一个 nil

语法

redis Hmget 命令基本语法如下:

redis 127.0.0.1:6379> HMGET KEY_NAME FIELD1...FIELDN 

可用版本
>= 2.0.0

返回值

一个包含多个给定字段关联值的表,表值的排列顺序和指定字段的请求顺序一样。

实例

redis 127.0.0.1:6379> HSET myhash field1 "foo"
(integer) 1
redis 127.0.0.1:6379> HSET myhash field2 "bar"
(integer) 1
redis 127.0.0.1:6379> HMGET myhash field1 field2 nofield
1) "foo"
2) "bar"
3) (nil)

Redis Hmset 命令

Redis Hmset 命令用于同时将多个 field-value (字段-值)设置到哈希表中

此命令会覆盖哈希表中已存在的字段。

如果哈希表不存在,会创建一个空哈希表,并执行 HMSET 操作。

语法

redis Hmset 命令基本语法如下:

redis 127.0.0.1:6379> HMSET KEY_NAME FIELD1 VALUE1 ...FIELDN VALUEN  

可用版本
>= 2.0.0

返回值

如果命令执行成功,返回 OK

实例

redis 127.0.0.1:6379> HMSET myhash field1 "foo" field2 "bar"
OK
redis 127.0.0.1:6379> HGET myhash field1
"foo"
redis 127.0.0.1:6379> HGET myhash field2
"bar"

Reids Hset 命令

Redis Hset 命令用于为哈希表中的字段赋值。

如果哈希表不存在,一个新的哈希表被创建并进行 HSET 操作。

如果字段已经存在于哈希表中,旧值将被覆盖。

语法

redis Hset 命令基本语法如下:

redis 127.0.0.1:6379> HSET KEY_NAME FIELD VALUE 

可用版本
>= 2.0.0

返回值

如果字段是哈希表中的一个新建字段,并且值设置成功,返回 1 。如果哈希表中字段仅在存在且旧值已被新值覆盖,返回 0 。

实例

redis 127.0.0.1:6379> HSET myhash field1 "foo"
OK
redis 127.0.0.1:6379> HGET myhash field1
"foo"

redis 127.0.0.1:6379> HSET website google "www.g.cn"       # 设置一个新域
(integer) 1

redis 127.0.0.1:6379>HSET website google "www.google.com" # 覆盖一个旧域
(integer) 0

Redis Hsetnx 命令

Redis Hsetnx 命令用于为哈希表中不存在的字段赋值。

如果哈希表不存在,一个新的哈希表被创建并进行 HSET 操作。

如果字段已经在于哈希表中,操作无效。

如果 key 不存在,一个新哈希表被创建并执行 HSETNX 命令

语法

redis Hsetnx 命令基本语法如下:

redis 127.0.0.1:6379> HSETNX KEY_NAME FIELD VALUE

可用版本
>= 2.0.0

返回值

设置成功,返回 1 。如果给定字段已经存在且没有操作被执行,返回 0 。

实例

redis 127.0.0.1:6379> HSETNX myhash field1 "foo"
(integer) 1
redis 127.0.0.1:6379> HSETNX myhash field1 "bar"
(integer) 0
redis 127.0.0.1:6379> HGET myhash field1
"foo"

redis 127.0.0.1:6379> HSETNX nosql key-value-store redis
(integer) 1

redis 127.0.0.1:6379> HSETNX nosql key-value-store redis       # 操作无效, key-value-store 已存在
(integer) 0

Redis Hvals 命令

Redis Hvals 命令返回哈希表所有字段的值。

语法

redis Hvals 命令基本语法如下:

redis 127.0.0.1:6379> HVALS KEY_NAME FIELD VALUE 

可用版本
>= 2.0.0

返回值

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

实例

redis 127.0.0.1:6379> HSET myhash field1 "foo"
(integer) 1
redis 127.0.0.1:6379> HSET myhash field2 "bar"
(integer) 1
redis 127.0.0.1:6379> HVALS myhash
1) "foo"
2) "bar"

# 空哈希表/不存在的key

redis 127.0.0.1:6379> EXISTS not_exists
(integer) 0

redis 127.0.0.1:6379> HVALS not_exists
(empty list or set)

Redis 列表(List)

Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者配尾部(右边)

一个列表最多可以白喊232-1 个元素,每个列表超过 40亿

实例

redis 127.0.0.1:6379> LPUSH w3ckey redis
(integer) 1
redis 127.0.0.1:6379> LPUSH w3ckey mongodb
(integer) 2
redis 127.0.0.1:6379> LPUSH w3ckey mysql
(integer) 3
redis 127.0.0.1:6379> LRANGE w3ckey 0 10

1) "mysql"
2) "mongodb"
3) "redis"

以上实例中我们使用 LPUSH 将三个值插入了名为 w3ckey 的列表当中。

Redis Blpop 命令

Redis Blpop 命令移出并获取列表的第一个元素,如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。

语法

redis Blpop 命令基本格式如下:

redis 127.0.0.1:6379> BLPOP LIST1 LIST2 .. LISTN TIMEOUT

可用版本
>= 2.0.0

返回值

如果列表为空,返回一个nil。否则,返回一个含有两个元素的列表,第一个元素是被弹出元素所属的 key ,第二个元素是被弹出元素的值。

实例

redis 127.0.0.1:6379> BLPOP list1 100

在以上实例中,操作会被阻塞,如果指定的列表 key list1 存在数据则会返回第一个元素,否则在等待 100 秒后会返回 nil。

(nil)
(100.06s)

Redis Brpop 命令

Redis Brpop 命令移出并获取列表的最后一个元素,如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。

语法

redis Brpop 命令基本语法如下:

redis 127.0.0.1:6379> BRPOP LIST1 LIST2 .. LISTN TIMEOUT 

可用版本
>= 2.0.0

返回值

加入在指定时间内没有任何元素被弹出,则返回一个 nil 和等待时长。反之,返回一个含有两个元素的列表,第一个元素是被弹出元素所属的key ,第二个元素是被弹出元素的值。

实例

redis 127.0.0.1:6379> BRPOP list1 100

在以上实例中,操作会被阻塞,如果指定的列表 key list1 存在数据则会返回第一个元素,否则在等待 100 秒后会返回 nil。

(nil)
(100.06s)

Redis Brpoplpush 命令

Redis Brpoplpush 命令从列表中弹出一个值,将弹出的元素插入另外一个列表中并返回它;如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。

语法

redis Brpoplpush 命令基本语法如下:

redis 127.0.0.1:6379> BRPOPLPUSH LIST1 ANOTHER_LIST TIMEOUT 

可用版本
>= 2.0.0

返回值

加入在指定时间内没有任何元素被弹出,则返回一个 nil 和等待时长。反之,返回一个含有两个元素的列表,第一个元素是被弹出元素的值,第二个元素是等等待时长。

实例

# 非空列表

redis> BRPOPLPUSH msg reciver 500
"hello moto"                        # 弹出元素的值
(3.38s)                             # 等待时长

redis> LLEN reciver
(integer) 1

redis> LRANGE reciver 0 0
1) "hello moto"


# 空列表

redis> BRPOPLPUSH msg reciver 1
(nil)
(1.34s)

Redis Lindex 命令

Redis Lindex 命令用于通过索引获取列表中的元素。你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示倒数第二个元素,以此类推。

语法

redis Lindex 命令基本语法如下:

redis 127.0.0.1:6379> LINDEX KEY_NAME INDEX_POSITION 

可用版本
>= 2.0.0

返回值

列表中下标为指定索引值的元素。如果指定索引值不在列表的区间范围内,返回 nil。

实例

redis 127.0.0.1:6379> LPUSH mylist "World"
(integer) 1

redis 127.0.0.1:6379> LPUSH mylist "Hello"
(integer) 2

redis 127.0.0.1:6379> LINDEX mylist 0
"Hello"

redis 127.0.0.1:6379> LINDEX mylist -1
"World"

redis 127.0.0.1:6379> LINDEX mylist 3        # index不在 mylist 的区间范围内
(nil)

Redis Linsert 命令

Redis Linsert 命令用于在列表的元素或者后插入元素。当指定元素不存在列表中时,不执行任何操作。当列表不存在时,被视为空列表,不执行任何操作。如果 key 不是列表类型,返回一个错误。

语法

redis Linsert 命令基本语法如下:

redis 127.0.0.1:6379> LINSERT KEY_NAME BEFORE EXISTING_VALUE NEW_VALUE 

可用版本
>= 1.0.0

返回值

如果命令执行成功,返回插入操作完成之后,列表的长度。如果没有找到指定元素,返回-1 。 如果 key 不存在或为空列表。返回 0 。

实例

redis 127.0.0.1:6379> RPUSH list1 "foo"
(integer) 1
redis 127.0.0.1:6379> RPUSH list1 "bar"
(integer) 2
redis 127.0.0.1:6379> LINSERT list1 BEFORE "bar" "Yes"
(integer) 3
redis 127.0.0.1:6379> LRANGE list1 0 -1
1) "foo"
2) "Yes"
3) "bar"

Redis Llen 命令

Redis Llen 命令惯用语返回列表的长度。如果列表 key 不存在,则 key 被解释为一个空列表,返回 0 。如果 key 不是列表 类型,返回一个错误。

语法

redis Llen 命令基本语法如下:

redis 127.0.0.1:6379> LLEN KEY_NAME 

可用版本
>= 1.0.0

返回值

列表的长度

实例

redis 127.0.0.1:6379> RPUSH list1 "foo"
(integer) 1
redis 127.0.0.1:6379> RPUSH list1 "bar"
(integer) 2
redis 127.0.0.1:6379> LLEN list1
(integer) 2

Redis Lpop 命令

Redis Lpop命令用于移除并返回列表的第一个元素。

语法

redis Lpop 命令基本语法如下:

redis 127.0.0.1:6379> LLEN KEY_NAME 

可用版本
>= 1.0.0

返回值

列表的第一个元素,当列表 key 不存在时,返回 nil 。

redis 127.0.0.1:6379> RPUSH list1 "foo"
(integer) 1
redis 127.0.0.1:6379> RPUSH list1 "bar"
(integer) 2
redis 127.0.0.1:6379> LPOP list1
"foo"

Redis Lpush 命令

Redis Lpush 命令将一个或多个值插入到列表头部。如果 key 不存在,一个空列表会被创建并执行 Lpush 操作。 当 key 存在但不是列表烈性时,返回一个错误。

注意:在 redis 2.4 版本以前的 Lpush 命令,都只接受单个value 值

语法

redis Lpush 命令基本语法如下:

redis 127.0.0.1:6379> LPUSH KEY_NAME VALUE1.. VALUEN

可用版本
>= 1.0.0

返回值

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

实例

127.0.0.1:6379> LPUSH list1 "foo"
(integer) 1
127.0.0.1:6379> LPUSH list1 "bar"
(integer) 2
127.0.0.1:6379> LRANGE list1 0 -1
1) "bar"
2) "foo"

Redis Lpushx 命令

Rdis Lpushx 将一个或多个值插入到已存在的列比哦啊头部,列表不存在时操作无效

语法

redis Lpushx 命令基本语法如下:

redis 127.0.0.1:6379> LPUSHX KEY_NAME VALUE1.. VALUEN

可用版本
>= 2.0.0

返回值

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

实例

127.0.0.1:6379> LPUSH list1 "foo"
(integer) 1
127.0.0.1:6379> LPUSHX list1 "bar"
(integer) 2
127.0.0.1:6379> LPUSHX list2 "bar"
(integer) 0
127.0.0.1:6379> LRANGE list1 0 -1
1) "bar"
2) "foo"

Redis Lrem 命令

Reids Lrem 根据参数 COUNT 的值,移除列表中与参数 value 相等的元素。

COUNT 的值可以是以下几种:

  • count > 0 : 从表头开始向表尾搜索,移除与 value 相等的值,数量为 count。
  • count < 0:从表尾开始向表头搜索,移除与 value 相等的值,数量为 count 的绝对值。
  • count = 0:移除表中所有与 value 相等的值。

语法

redis Lrem 命令基本语法如下:

redis 127.0.0.1:6379> LREM KEY_NAME COUNT VALUE

可用版本
>= 1.0.0

返回值

被移除元素的数量。列表不存在时返回 0 。

实例

redis 127.0.0.1:6379> RPUSH mylist "hello"
(integer) 1
redis 127.0.0.1:6379> RPUSH mylist "hello"
(integer) 2
redis 127.0.0.1:6379> RPUSH mylist "foo"
(integer) 3
redis 127.0.0.1:6379> RPUSH mylist "hello"
(integer) 4
redis 127.0.0.1:6379> LREM mylist -2 "hello"
(integer) 2

Redis Lset 命令

Redis Lset 通过索引来设置元素的值

当索引参数超出范围,或对一个空列表进行 lset 时,返回一个错误。

关于列表下标的更多信息,请参考 LINDEX 命令。

语法

redis Lset 命令基本语法如下:

redis 127.0.0.1:6379> LSET KEY_NAME INDEX VALUE

可用版本
>= 1.0.0

返回值

操作成功返回 ok ,否则返回错误信息。

实例

redis 127.0.0.1:6379> RPUSH mylist "hello"
(integer) 1
redis 127.0.0.1:6379> RPUSH mylist "hello"
(integer) 2
redis 127.0.0.1:6379> RPUSH mylist "foo"
(integer) 3
redis 127.0.0.1:6379> RPUSH mylist "hello"
(integer) 4
redis 127.0.0.1:6379> LSET mylist 0 "bar"
OK
redis 127.0.0.1:6379> LRANGE mylist 0 -1
1: "bar"
2) "hello"
3) "foo"
4) "hello"

Redis Ltrim 命令

Redis Ltrim 对一个列表进行修剪(trim ),就是说,让列表只保留自定区间内的元素,不在指定区间之内的元素都将被删除。

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

语法

redis Ltrim 命令基本语法如下:

redis 127.0.0.1:6379> LTRIM KEY_NAME START STOP

可用版本
>= 1.0.0

返回值

命令执行成功时,返回 ok 。

实例

redis 127.0.0.1:6379> RPUSH mylist "hello"
(integer) 1
redis 127.0.0.1:6379> RPUSH mylist "hello"
(integer) 2
redis 127.0.0.1:6379> RPUSH mylist "foo"
(integer) 3
redis 127.0.0.1:6379> RPUSH mylist "bar"
(integer) 4
redis 127.0.0.1:6379> LTRIM mylist 1 -1
OK
redis 127.0.0.1:6379> LRANGE mylist 0 -1
1) "hello"
2) "foo"
3) "bar"

Redis Rpop 命令

Redis Rpop 命令用于移除并返回列表的最后一个元素。

语法

redis Rpop 命令基本语法如下:

redis 127.0.0.1:6379> RPOP KEY_NAME 

可用版本
>= 1.0.0

返回值

列表的最后一个元素。当列表不存在时,返回 nil 。

实例

redis 127.0.0.1:6379> RPUSH mylist "hello"
(integer) 1
redis 127.0.0.1:6379> RPUSH mylist "hello"
(integer) 2
redis 127.0.0.1:6379> RPUSH mylist "foo"
(integer) 3
redis 127.0.0.1:6379> RPUSH mylist "bar"
(integer) 4
redis 127.0.0.1:6379> RPOP mylist
OK
redis 127.0.0.1:6379> LRANGE mylist 0 -1
1) "hello"
2) "hello"
3) "foo"

Redis Rpoplpush 命令

Redis Rpoplpush 命令用于移除列表的最后一个元素,并将元素添加到另一个列表并返回。

语法

redis Rpoplpush 命令基本语法如下:

redis 127.0.0.1:6379> RPOPLPUSH SOURCE_KEY_NAME DESTINATION_KEY_NAME

可用版本
>= 1.0.0

返回值

被弹出的元素

实例

redis 127.0.0.1:6379> RPUSH mylist "hello"
(integer) 1
redis 127.0.0.1:6379> RPUSH mylist "foo"
(integer) 2
redis 127.0.0.1:6379> RPUSH mylist "bar"
(integer) 3
redis 127.0.0.1:6379> RPOPLPUSH mylist myotherlist
"bar"
redis 127.0.0.1:6379> LRANGE mylist 0 -1
1) "hello"
2) "foo"

Redis Rpush 命令

Redis Rpush 命令用于将一个或多个值插入到列表的尾部(最右边)。

如果列表不存在,一个空列表会被创建并执行 Rpush 操作,当列表存在但不是列表类型时,返回一个错误。

注意:在 Redisa 2.4 版本以前的 Rpush 命令你给,都只能接受单个 value 值。

语法

redis Rpush 命令基本语法如下:

redis 127.0.0.1:6379> RPUSH KEY_NAME VALUE1..VALUEN

可用版本
>= 1.0.0

返回值

执行 Rpush 操作后,列表的长度。

实例

redis 127.0.0.1:6379> RPUSH mylist "hello"
(integer) 1
redis 127.0.0.1:6379> RPUSH mylist "foo"
(integer) 2
redis 127.0.0.1:6379> RPUSH mylist "bar"
(integer) 3
redis 127.0.0.1:6379> LRANGE mylist 0 -1
1) "hello"
2) "foo"
3) "bar"

Redis Rpushx 命令

Redis Rpushx 命令用于将一个或多个值插入到已存在的列表尾部(最右边)。如果列表不存在,操作无效。

语法

redis Rpushx 命令基本语法如下:

redis 127.0.0.1:6379> RPUSHX KEY_NAME VALUE1..VALUEN

返回值

执行 Rpushx 操作后,列表的长度。

实例

redis 127.0.0.1:6379> RPUSH mylist "hello"
(integer) 1
redis 127.0.0.1:6379> RPUSH mylist "foo"
(integer) 2
redis 127.0.0.1:6379> RPUSHX mylist2 "bar"
(integer) 0
redis 127.0.0.1:6379> LRANGE mylist 0 -1
1) "hello"
2) "foo"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值