Redis 命令

字符串 string

SET key value [EX seconds] [PX milliseconds] [NX|XX]

  1. SET key value:可以对已存在或不存在的键进行设置值
  2. EX seconds:将键的过期时间设置为 seconds 秒。 执行 SET key value EX seconds 的效果等同于执行 SETEX key seconds value
  3. PX milliseconds : 将键的过期时间设置为 milliseconds 毫秒。 执行 SET key value PX milliseconds 的效果等同于执行 PSETEX key milliseconds value
  4. NX : 只在键不存在时, 才对键进行设置操作。 执行 SET key value NX 的效果等同于执行 SETNX key value
  5. XX : 只在键已经存在时, 才对键进行设置操作。SET key value XX

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

  1. 如果键 key 不存在, 那么返回特殊值 nil ; 否则, 返回键 key 的值。
  2. 如果键 key 的值并非字符串类型, 那么返回一个错误, 因为 GET 命令只能用于字符串值。

GETSET key value

  1. 将键 key 的值设为 value , 并返回键 key 在被设置之前的旧值。
  2. 返回给定键 key 的旧值。
  3. 如果键 key 没有旧值, 也即是说, 键 key 在被设置之前并不存在, 那么命令返回 nil ,并且给key设置当前值。
  4. 当键 key 存在但不是字符串类型时, 命令返回一个错误

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

  1. STRLEN 命令返回字符串值的长度。
  2. 当键 key 不存在时, 命令返回 0
  3. key 储存的不是字符串值时, 返回一个错误。

APPEND key value

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

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

返回:追加 value 之后, 键 key 的值的长度

SETRANGE key offset value

  1. 从偏移量 offset 开始, 用 value 参数覆写(overwrite)键 key 储存的字符串值。
  2. 不存在的键 key 当作空白字符串处理。
  3. SETRANGE 命令会确保字符串足够长以便将 value 设置到指定的偏移量上, 如果键 key 原来储存的字符串长度比偏移量小(比如字符串只有 5 个字符长,但你设置的 offset10 ), 那么原字符和偏移量之间的空白将用零字节(zerobytes, "\x00" )进行填充。
  4. 因为 Redis 字符串的大小被限制在 512 兆(megabytes)以内, 所以用户能够使用的最大偏移量为 2^29-1(536870911) , 如果你需要使用比这更大的空间, 请使用多个 key

GETRANGE key start end

  1. 返回键 key 储存的字符串值的指定部分, 字符串的截取范围由 startend 两个偏移量决定 (包括 startend 在内)。
  2. 负数偏移量表示从字符串的末尾开始计数, -1 表示最后一个字符, -2 表示倒数第二个字符, 以此类推
  3. GETRANGE 通过保证子字符串的值域(range)不超过实际字符串的值域来处理超出范围的值域请求。

INCR key

  1. 为键 key 储存的数字值加上一。
  2. 如果键 key 不存在, 那么它的值会先被初始化为 0 , 然后再执行 INCR 命令。
  3. 如果键 key 储存的值不能被解释为数字, 那么 INCR 命令将返回一个错误。
  4. 本操作的值限制在 64 位(bit)有符号数字表示之内。

INCRBY key increment

  1. 为键 key 储存的数字值加上增量 increment
  2. 如果键 key 不存在, 那么键 key 的值会先被初始化为 0 , 然后再执行 INCRBY 命令。
  3. 如果键 key 储存的值不能被解释为数字, 那么 INCRBY 命令将返回一个错误。
  4. 本操作的值限制在 64 位(bit)有符号数字表示之内。

INCRBYFLOAT key increment

  1. 为键 key 储存的值加上浮点数增量 increment
  2. 如果键 key 不存在, 那么 INCRBYFLOAT 会先将键 key 的值设为 0 , 然后再执行加法操作。
  3. 如果命令执行成功, 那么键 key 的值会被更新为执行加法计算之后的新值, 并且新值会以字符串的形式返回给调用者。

DECR key

  1. 为键 key 储存的数字值减去一。
  2. 如果键 key 不存在, 那么键 key 的值会先被初始化为 0 , 然后再执行 DECR 操作。
  3. 如果键 key 储存的值不能被解释为数字, 那么 DECR 命令将返回一个错误。
  4. 本操作的值限制在 64 位(bit)有符号数字表示之内。

DECRBY key decrement

  1. 将键 key 储存的整数值减去减量 decrement
  2. 如果键 key 不存在, 那么键 key 的值会先被初始化为 0 , 然后再执行 DECRBY 命令。
  3. 如果键 key 储存的值不能被解释为数字, 那么 DECRBY 命令将返回一个错误。
  4. 本操作的值限制在 64 位(bit)有符号数字表示之内。

MSET key value [key value …]

  1. 同时为多个键设置值。
  2. 如果某个给定键已经存在, 那么 MSET 将使用新值去覆盖旧值, 如果这不是你所希望的效果, 请考虑使用 MSETNX 命令, 这个命令只会在所有给定键都不存在的情况下进行设置。
  3. MSET 是一个原子性(atomic)操作, 所有给定键都会在同一时间内被设置, 不会出现某些键被设置了但是另一些键没有被设置的情况。

MSETNX key value [key value …]

  1. 当且仅当所有给定键都不存在时, 为所有给定键设置值。
  2. 即使只有一个给定键已经存在, MSETNX 命令也会拒绝执行对所有键的设置操作。
  3. MSETNX 是一个原子性(atomic)操作, 所有给定键要么就全部都被设置, 要么就全部都不设置, 不可能出现第三种状态。

MGET key [key …]

  1. 返回给定的一个或多个字符串键的值。
  2. 如果给定的字符串键里面, 有某个键不存在, 那么这个键的值将以特殊值 nil 表示。

哈希表 hash

HSET hash field value

  1. 将哈希表 hash 中域 field 的值设置为 value
  2. 如果给定的哈希表并不存在, 那么一个新的哈希表将被创建并执行 HSET 操作。
  3. 如果域 field 已经存在于哈希表中, 那么它的旧值将被新值 value 覆盖。
  4. 返回值:当 HSET 命令在哈希表中新创建 field 域并成功为它设置值时, 命令返回 1 ; 如果域 field 已经存在于哈希表, 并且 HSET 命令成功使用新值覆盖了它的旧值, 那么命令返回 0

HSETNX hash field value

  1. 当且仅当域 field 尚未存在于哈希表的情况下, 将它的值设置为 value
  2. 如果给定域已经存在于哈希表当中, 那么命令将放弃执行设置操作。
  3. 如果哈希表 hash 不存在, 那么一个新的哈希表将被创建并执行 HSETNX 命令。

HGET hash field

  1. 返回哈希表中给定域的值
  2. 返回值:HGET 命令在默认情况下返回给定域的值。如果给定域不存在于哈希表中, 又或者给定的哈希表并不存在, 那么命令返回 nil

HEXISTS hash field

  1. 检查给定域 field 是否存在于哈希表 hash 当中
  2. 返回值:HEXISTS 命令在给定域存在时返回 1 , 在给定域不存在时返回 0

HDEL key field [field …]

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

HLEN key

  1. 返回哈希表key的域数量

HSTRLEN key field

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

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

HINCRBY key field increment

  1. 为哈希表 key 中的域 field 的值加上增量 increment

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

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

    如果域 field 不存在,那么在执行命令前,域的值被初始化为 0

  3. 对一个储存字符串值的域 field 执行HINCRBY命令将造成一个错误

HINCRBYFLOAT key field increment

  1. 为哈希表 key 中的域 field 加上浮点数增量 increment
  2. 如果哈希表中没有域 field ,那么HINCRBYFLOAT 会先将域 field 的值设为 0 ,然后再执行加法操作。
  3. 如果键 key 不存在,那么HINCRBYFLOAT会先创建一个哈希表,再创建域 field ,最后再执行加法操作。

HMSET key field value [field value …]

  1. 同时将多个 field-value (域-值)对设置到哈希表 key 中。
  2. 此命令会覆盖哈希表中已存在的域。
  3. 如果 key 不存在,一个空哈希表被创建并执行hmset操作

HMGET key field [field …]

  1. 返回哈希表 key 中,一个或多个给定域的值
  2. 如果给定的域不存在于哈希表,那么返回一个 nil

HKEYS key

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

HVALS key

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

HGETALL key

  1. 返回哈希表 key 中,所有的域和值
  2. 在返回值里,紧跟每个域名(field name)之后是域的值(value),所以返回值的长度是哈希表大小的两倍。

列表 list

LPUSH key value [value …]

  1. 将一个或多个值 value 插入到列表 key 的表头

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

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

    key 存在但不是列表类型时,返回一个错误。

LPUSHX key value

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

RPUSH key value [value …]

  1. 将一个或多个值 value 插入到列表 key 的表尾(最右边)。
  2. 如果有多个 value 值,那么各个 value 值按从左到右的顺序依次插入到表尾:比如对一个空列表 mylist 执行 RPUSH mylist a b c ,得出的结果列表为 a b c ,等同于执行命令 RPUSH mylist aRPUSH mylist bRPUSH mylist c
  3. 如果 key 不存在,一个空列表会被创建并执行 RPUSH操作

RPUSHX key value

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

LPOP key

  1. 移除并返回列表 key 的头元素

RPOP key

  1. 移除并返回列表 key 的尾元素。

RPOPLPUSH source destination

  1. 命令RPOPLPUSH 在一个原子时间内,执行以下两个动作:
    1. 将列表 source 中的最后一个元素(尾元素)弹出,并返回给客户端
    2. source 弹出的元素插入到列表 destination ,作为 destination 列表的的头元素
  2. 如果 source 不存在,值 nil 被返回,并且不执行其他动作
  3. 如果 sourcedestination 相同,则列表中的表尾元素被移动到表头,并返回该元素,可以把这种特殊情况视作列表的旋转(rotation)操作。

LREM key count value

  1. 根据参数 count 的值,移除列表中与参数 value 相等的元素
  2. count 的值可以是以下几种:
    • count > 0 : 从表头开始向表尾搜索,移除与 value 相等的元素,数量为 count
    • count < 0 : 从表尾开始向表头搜索,移除与 value 相等的元素,数量为 count 的绝对值。
    • count = 0 : 移除表中所有与 value 相等的值。

LLEN key

  1. 返回列表 key 的长度
  2. 如果 key 不存在,则 key 被解释为一个空列表,返回 0 .
  3. 如果 key 不是列表类型,返回一个错误。

LINDEX key index

  1. 返回列表 key 中,下标为 index 的元素。
  2. 下标(index)参数 startstop 都以 0 为底,也就是说,以 0 表示列表的第一个元素,以 1 表示列表的第二个元素,以此类推。
  3. 你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。

LINSERT key BEFORE|AFTER pivot value

  1. 将值 value 插入到列表 key 当中,位于值 pivot 之前或之后。
  2. pivot 不存在于列表 key 时,不执行任何操作
  3. key 不存在时, key 被视为空列表,不执行任何操作
  4. 如果 key 不是列表类型,返回一个错误

LSET key index value

  1. 将列表 key 下标为 index 的元素的值设置为 value
  2. index 参数超出范围,或对一个空列表( key 不存在)进行 LSET 时,返回一个错误

LRANGE key start stop

  1. 返回列表 key 中指定区间内的元素,区间以偏移量 startstop 指定。
  2. 下标(index)参数 startstop 都以 0 为底,也就是说,以 0 表示列表的第一个元素,以 1 表示列表的第二个元素,以此类推。
  3. 你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。

LTRIM key start stop

  1. 对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。
  2. 下标(index)参数 startstop 都以 0 为底,也就是说,以 0 表示列表的第一个元素,以 1 表示列表的第二个元素,以此类推。
  3. 你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。

BLPOP key [key …] timeout

  1. BLPOP是列表的阻塞式(blocking)弹出原语,它是LPOP key命令的阻塞版本,当给定列表内没有任何元素可供弹出的时候,连接将被BLPOP 命令阻塞,直到等待超时或发现可弹出元素为止。

  2. 当给定多个 key 参数时,按参数 key 的先后顺序依次检查各个列表,弹出第一个非空列表的头元素

  3. BLPOP被调用时,如果给定 key 内至少有一个非空列表,那么弹出遇到的第一个非空列表的头元素,并和被弹出元素所属的列表的名字一起,组成结果返回给调用者

  4. 当存在多个给定 key 时, BLPOP 按给定 key 参数排列的先后顺序,依次检查各个列表。

  5. 假设现在有 jobcommandrequest 三个列表,其中 job 不存在, commandrequest 都持有非空列表。考虑以下命令:

    BLPOP job command request 0
    

    BLPOP保证返回的元素来自 command ,因为它是按”查找 job -> 查找 command -> 查找 request “这样的顺序,第一个找到的非空列表。

  6. 超时参数 timeout 接受一个以秒为单位的数字作为值。超时参数设为 0 表示阻塞时间可以无限期延长(block indefinitely) 。

  7. 相同的 key 可以被多个客户端同时阻塞。

    不同的客户端被放进一个队列中,按『先阻塞先服务』(first-BLPOP,first-served)的顺序为 key 执行BLPOP命令。

BRPOP key [key …] timeout

  1. BRPOP是列表的阻塞式(blocking)弹出原语。它是RPOP key命令的阻塞版本,当给定列表内没有任何元素可供弹出的时候,连接将被 BRPOP命令阻塞,直到等待超时或发现可弹出元素为止。
  2. 类似于BLPOP

BRPOPLPUSH source destination timeout

  1. BRPOPLPUSHRPOPLPUSH的阻塞版本

集合 set

SADD key member [member …]

  1. 将一个或多个 member 元素加入到集合 key 当中,已经存在于集合的 member 元素将被忽略

  2. 假如 key 不存在,则创建一个只包含 member 元素作成员的集合。

    key 不是集合类型时,返回一个错误

SISMEMBER key member

  1. 如果 member 元素是集合的成员,返回 1 。 如果 member 元素不是集合的成员,或 key 不存在,返回 0

SPOP key [count]

  1. 移除并返回集合中的count个随机元素,count默认是1

SRANDMEMBER key [count]

  1. 如果命令执行时,只提供了 key 参数,那么返回集合中的一个随机元素。

SREM key member [member …]

  1. 移除集合 key 中的一个或多个 member 元素,不存在的 member 元素会被忽略
  2. key 不是集合类型,返回一个错误。

SMOVE source destination member

  1. member 元素从 source 集合移动到 destination 集合。
  2. SMOVE是原子性操作
  3. 如果 source 集合不存在或不包含指定的 member 元素,则SOMVE命令不执行任何操作,仅返回 0 。否则, member 元素从 source 集合中被移除,并添加到 destination 集合中去。
  4. destination 集合已经包含 member 元素时, SMOVE 命令只是简单地将 source 集合中的 member 元素删除

SCARD key

  1. 返回集合 key 的基数(集合中元素的数量)。

SMEMBERS key

  1. 返回集合 key 中的所有成员

SINTER key [key …]

  1. 返回一个集合的全部成员,该集合是所有给定集合的交集
  2. 不存在的 key 被视为空集
  3. 当给定集合当中有一个空集时,结果也为空集(根据集合运算定律)。

SINTERSTORE destination key [key …]

  1. 这个命令类似于 [SINTER key ]命令,但它将结果保存到 destination 集合,而不是简单地返回结果集。
  2. 如果 destination 集合已经存在,则将其覆盖。

SUNION key [key …]

  1. 返回一个集合的全部成员,该集合是所有给定集合的并集。

SUNIONSTORE destination key [key …]

  1. 这个命令类似于 [SUNION key ]命令,但它将结果保存到 destination 集合,而不是简单地返回结果集。
  2. 如果 destination 已经存在,则将其覆盖。

SDIFF key [key …]

  1. 返回一个集合的全部成员,该集合是所有给定集合之间的差集

SDIFFSTORE destination key [key …]

  1. 这个命令的作用和 [SDIFF key ] 类似,但它将结果保存到 destination 集合,而不是简单地返回结果集。

有序集合 zset

ZADD key score member [[score member] [score member] …]

  1. 将一个或多个 member 元素及其 score 值加入到有序集 key 当中
  2. 如果某个 member 已经是有序集的成员,那么更新这个 memberscore 值,并通过重新插入这个 member 元素,来保证该 member 在正确的位置上。
  3. score 值可以是整数值或双精度浮点数。

ZSCORE key member

  1. 返回有序集 key 中,成员 memberscore
  2. 如果 member 元素不是有序集 key 的成员,或 key 不存在,返回 nil

ZINCRBY key increment member

  1. 为有序集 key 的成员 memberscore 值加上增量 increment
  2. 可以通过传递一个负数值 increment ,让 score 减去相应的值,比如 ZINCRBY key -5 member ,就是让 memberscore 值减去 5
  3. key 不存在,或 member 不是 key 的成员时, ZINCRBY key increment member 等同于 ZADD key increment member

ZCARD key

  1. 返回有序集 key 的基数,也就是member的数量

ZCOUNT key min max

  1. 返回有序集 key 中, score 值在 minmax 之间(默认包括 score 值等于 minmax )的成员的数量。

ZRANGE key start stop [WITHSCORES]

  1. 返回有序集 key 中,指定区间内的成员。

    其中成员的位置按 score 值递增(从小到大)来排序。

  2. 具有相同 score 值的成员按字典序来排列

  3. 如果你需要成员按 score 值递减(从大到小)来排列,请使用 [ZREVRANGE key start stopWITHSCORES 命令。

  4. 可以通过使用 WITHSCORES 选项,来让成员和它的 score 值一并返回,返回列表以 value1,score1, ..., valueN,scoreN 的格式表示

ZREVRANGE key start stop [WITHSCORES]

  1. 返回有序集 key 中,指定区间内的成员
  2. 其中成员的位置按 score 值递减(从大到小)来排列。 具有相同 score 值的成员按字典序的逆序排列

ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]

  1. 返回有序集 key 中,所有 score 值介于 minmax 之间(包括等于 minmax )的成员。有序集成员按 score 值递增(从小到大)次序排列。
  2. 可选的 LIMIT 参数指定返回结果的数量及区间(就像SQL中的 SELECT LIMIT offset, count ),注意当 offset 很大时,定位 offset 的操作可能需要遍历整个有序集,此过程最坏复杂度为 O(N) 时间。
  3. minmax 可以是 -inf+inf ,这样一来,你就可以在不知道有序集的最低和最高 score 值的情况下
  4. 默认情况下,区间的取值使用闭区间 (小于等于或大于等于),你也可以通过给参数前增加 ( 符号来使用可选的开区间(小于或大于)。

ZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count]

  1. 返回有序集 key 中, score 值介于 maxmin 之间(默认包括等于 maxmin )的所有的成员。有序集成员按 score 值递减(从大到小)的次序排列。
  2. 具有相同 score 值的成员按字典序的逆序排列

ZRANK key member

  1. 返回有序集 key 中成员 member 的排名。其中有序集成员按 score 值递增(从小到大)顺序排列。
  2. 排名以 0 为底,也就是说, score 值最小的成员排名为 0

ZREVRANK key member

  1. 返回有序集 key 中成员 member 的排名。其中有序集成员按 score 值递减(从大到小)排序。

ZREM key member [member …]

  1. 移除有序集 key 中的一个或多个成员,不存在的成员将被忽略
  2. key 存在但不是有序集类型时,返回一个错误。

ZREMRANGEBYRANK key start stop

  1. 移除有序集 key 中,指定排名(rank)区间内的所有成员
  2. 区间分别以下标参数 startstop 指出,包含 startstop 在内。
  3. 下标参数 startstop 都以 0 为底,也就是说,以 0 表示有序集第一个成员,以 1 表示有序集第二个成员,以此类推。 你也可以使用负数下标,以 -1 表示最后一个成员, -2 表示倒数第二个成员,以此类推。

ZREMRANGEBYSCORE key min max

  1. 移除有序集 key 中,所有 score 值介于 minmax 之间(包括等于 minmax )的成员

ZRANGEBYLEX key min max [LIMIT offset count]

  1. 当有序集合的所有成员都具有相同的分值时, 有序集合的元素会根据成员的字典序(lexicographical ordering)来进行排序, 而这个命令则可以返回给定的有序集合键 key 中, 值介于 minmax 之间的成员。
  2. 如果有序集合里面的成员带有不同的分值, 那么命令返回的结果是未指定的(unspecified)。
  3. 合法的 minmax 参数必须包含 ( 或者 [ , 其中 ( 表示开区间(指定的值不会被包含在范围之内), 而 [ 则表示闭区间(指定的值会被包含在范围之内)。
  4. 特殊值 +-min 参数以及 max 参数中具有特殊的意义, 其中 + 表示正无限, 而 - 表示负无限。 因此, 向一个所有成员的分值都相同的有序集合发送命令 ZRANGEBYLEX <zset> - + , 命令将返回有序集合中的所有元素。

ZLEXCOUNT key min max

  1. 对于一个所有成员的分值都相同的有序集合键 key 来说, 这个命令会返回该集合中, 成员介于 minmax 范围内的元素数量

ZREMRANGEBYLEX key min max

  1. 对于一个所有成员的分值都相同的有序集合键 key 来说, 这个命令会移除该集合中, 成员介于 minmax 范围内的所有元素。

ZUNIONSTORE destination numkeys key [key …] [WEIGHTS weight [weight …]] [AGGREGATE SUM|MIN|MAX]

  1. 计算给定的一个或多个有序集的并集,其中给定 key 的数量必须以 numkeys 参数指定,并将该并集(结果集)储存到 destination
  2. 默认情况下,结果集中某个成员的 score 值是所有给定集下该成员 score 值之
  3. 使用 WEIGHTS 选项,你可以为 每个 给定有序集 分别 指定一个乘法因子(multiplication factor),每个给定有序集的所有成员的 score 值在传递给聚合函数(aggregation function)之前都要先乘以该有序集的因子。如果没有指定 WEIGHTS 选项,乘法因子默认设置为 1
  4. 使用 AGGREGATE 选项,你可以指定并集的结果集的聚合方式。
  5. 默认使用的参数 SUM ,可以将所有集合中某个成员的 score 值之 作为结果集中该成员的 score 值;使用参数 MIN ,可以将所有集合中某个成员的 最小 score 值作为结果集中该成员的 score 值;而参数 MAX 则是将所有集合中某个成员的 最大 score 值作为结果集中该成员的 score 值。

ZINTERSTORE destination numkeys key [key …] [WEIGHTS weight [weight …]] [AGGREGATE SUM|MIN|MAX]

  1. 计算给定的一个或多个有序集的交集,其中给定 key 的数量必须以 numkeys 参数指定,并将该交集(结果集)储存到 destination
  2. 默认情况下,结果集中某个成员的 score 值是所有给定集下该成员 score 值之和.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值