MySQL 数据库学习(九)Redis 服务集群

1 案例1:搭建redis服务器

1.1 具体要求如下

  1. 在主机redis64运行redis服务
  2. 修改服务运行参数
  • ip 地址192.168.88.64
  • 服务监听的端口6364
  • redis服务的连接密码为 tarenaplj

1.2 方案

准备1台新虚拟机,要求如表-1所示

IP地址主机名角色
192.168.88.64Redis64Redis服务器

1.3 步骤

实现此案例需要按照如下步骤进行。

步骤一:在主机redis64运行redis服务

命令操作如下所示:

[root@redis64 ~]# yum -y install redis  安装软件
[root@redis64 ~]# systemctl  start redis 启动服务
[root@redis64 ~]# netstat  -utnlp  | grep redis-server  查看端口
tcp        0      0 127.0.0.1:6379    0.0.0.0:*    LISTEN      1970/redis-server 1
[root@redis64 ~]# redis-cli  连接服务
127.0.0.1:6379> ping 检查能否正在访问
PONG 
127.0.0.1:6379> set school tarena 存储变量
OK
127.0.0.1:6379> get school 查看变量
"tarena"
127.0.0.1:6379> exit 断开连接
[root@redis64 ~]#

步骤二:修改服务运行参数

命令操作如下所示:

[root@redis64 ~]# systemctl  stop redis
[root@redis64 ~]# vim /etc/redis.conf
69 bind 192.168.88.64
92 port 6364
647 requirepass tarenaplj
:wq
[root@redis64 ~]# setenforce 0
[root@redis64 ~]# systemctl start redis
[root@redis64 ~]# netstat  -utnlp  | grep redis-server
tcp   0    0 192.168.88.64:6364   0.0.0.0:*    LISTEN      2009/redis-server 1 
[root@redis64 ~]#
[root@redis64 ~]# redis-cli  -h 192.168.88.64 -p 6364 连接服务
192.168.88.64:6364> ping 不输入密码无法正常访问
(error) NOAUTH Authentication required.
192.168.88.64:6364> auth tarenaplj  输入密码
OK
192.168.88.64:6364> keys *  查看存储的变量
1) "school"
192.168.88.64:6364> exit  断开连接
[root@redis64 ~]#

2 案例2:常用命令限

2.1 问题

1)练习如下命令的使用

  • mset mget keys type
  • exists ttl expire move select
  • del flushdb flushall

2.2 方案

在搭建的redis64练习常用命令的使用。

2.3 步骤

实现此案例需要按照如下步骤进行。

命令操作如下所示:

192.168.88.64:6364> mset name plj  age 80 class nsd2108    一起存储多个变量
OK
192.168.88.64:6364> keys *
1) "age"
2) "classs"
3) "name"
4) "school"
192.168.88.64:6364> mget name age  一起查看多个变量
1) "plj"
2) "80"
keys 使用统配符查看变量
* 匹配所有变量名
? 一个字符
192.168.88.64:6364> keys *
1) "age"
2) "classs"
3) "name"
4) "school"
192.168.88.64:6364> keys ???  变量名是3个字符
1) "age"
192.168.88.64:6364> keys a*   变量名是a 开头的
1) "age"
192.168.88.64:6364> 
192.168.88.64:6364> keys gender 查看指定变量是否存在
(empty list or set) 说明变量没有定义
192.168.88.64:6364> keys name
1) "name"
192.168.88.64:6364> 
select 切换库 默认库编号 0-15 
192.168.88.64:6364> select 1  切换到 1号库里
OK
192.168.88.64:6364[1]> keys * 查看数据没有数据
(empty list or set)
192.168.88.64:6364[1]> 
192.168.88.64:6364[1]> select 0  
OK
192.168.88.64:6364> select 16
(error) ERR DB index is out of range
move 命令 移动变量到其他库里
192.168.88.64:6364> keys *
1) "age"
2) "classs"
3) "name"
4) "school"
192.168.88.64:6364> move age 1   把age 变量移动到1 号库里
(integer) 1 
192.168.88.64:6364> keys *
1) "classs"
2) "name"
3) "school"
192.168.88.64:6364> select  1
OK
192.168.88.64:6364[1]> keys *
1) "age"
exists 检查变量是否存储  返回值1  变量存储 返回值是0 变量不存在
192.168.88.64:6364[1]> select 0
OK
192.168.88.64:6364> EXISTS name  检查name变量是否存在
(integer) 1
192.168.88.64:6364> get name
"plj"
192.168.88.64:6364> set name bob
OK
192.168.88.64:6364> get name
"bob"
192.168.88.64:6364>
EXPIRE 命令设置变量的过期时间 不设置变量永不过期
ttl   检查变量可以在内存里存多久
192.168.88.64:6364> set sex girl
OK
192.168.88.64:6364> ttl sex
(integer) -1  表示永不过期
192.168.88.64:6364> EXPIRE sex 15   设置过期时间15 秒
(integer) 1
192.168.88.64:6364> keys sex
1) "sex"
192.168.88.64:6364> ttl sex
(integer) 8  还剩下8秒时间过期
192.168.88.64:6364> ttl sex
(integer) -2  表示已经过期被删除
192.168.88.64:6364> keys  sex
(empty list or set)
192.168.88.64:6364> 
type 命令检查变量存储数据的类型  
使用set  mset命令存储的数据都字符类型。
数据的类型不同 管理的命令也不同 
明天讲数据类型。
192.168.88.64:6364> set x 99
OK
192.168.88.64:6364> mset y 108
OK
192.168.88.64:6364> type x
string
192.168.88.64:6364> type y
string
192.168.88.64:6364> lpush  tea nb  wk  zzg plj lx   定义类别类型的变量tea
192.168.88.64:6364> type tea 查看变量类型  list 列表类型的数据
list  
del 删除内存里的变量
192.168.88.64:6364> keys *
1) "y"
2) "tea"
3) "name"
4) "school"
5) "x"
6) "classs"
192.168.88.64:6364> del tea y school
(integer) 3
192.168.88.64:6364> keys *
1) "name"
2) "x"
3) "classs"
192.168.88.64:6364> 
flushdb  删除当前所在库的所有数据
192.168.88.64:6364> keys *
1) "name"
2) "x"
3) "classs"
192.168.88.64:6364> flushdb
OK
192.168.88.64:6364> keys *
(empty list or set)
192.168.88.64:6364> SELECT 1
OK
192.168.88.64:6364[1]> keys *
1) "age"
192.168.88.64:6364[1]> flushall 删除内存里的所有内存里所有数据 (慎用)

3 案例3:部署LNP+Redis

3.1 问题

  1. 在主机192.168.88.64部署LNP 环境
  2. 配置PHP支持redis
  3. 编写网站脚本,把数据存储到本机的内存里

3.2 方案

在redis64主机同时运行nginx 服务,并配置nginx服务可以把数据存储在本机的redis内存服务里。

3.3 步骤

实现此案例需要按照如下步骤进行。

步骤一:在主机192.168.88.64部署LNP 环境

1)安装源码nginx及php

]#yum  -y  install  gcc    pcre-devel   zlib-devel  make   安装依赖
]#]# tar -xf nginx-1.22.1.tar.gz 解压源码
]#cd nginx-1.22.1 进源码目录
]#./configure 配置
]#make 编译
]#make  install 安装
]# ls /usr/local/nginx/  查看安装目录
conf  html  logs  sbin
]# yum   -y     install php  php-fpm   php-devel  安装php 软件
2)配置动静分离

]# vim +65 /usr/local/nginx/conf/nginx.conf
location ~ \.php$ {
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
            include        fastcgi.conf;
        }
:wq
3)启动nginx服务

[root@redis64 ~]# /usr/local/nginx/sbin/nginx  -t  测试配置
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@redis64 ~]# 
[root@redis64 ~]# /usr/local/nginx/sbin/nginx  启动服务
[root@redis64 ~]# netstat  -utnlp  | grep 80
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      10469/nginx: master 
[root@redis64 ~]#
启动php-fpm服务
]# vim /etc/php-fpm.d/www.conf
38 ;listen = /run/php-fpm/www.sock
39 listen = 127.0.0.1:9000  非sock方式运行 (不是必须的)
:wq
[root@redis64 ~]# systemctl  start php-fpm  启动服务
[root@redis64 ~]# netstat  -utnlp  | grep 9000  查看端口
tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      10477/php-fpm: mast 
[root@redis64 ~]#
测试配置
[root@redis64 ~]# vim /usr/local/nginx/html/test.php  编写php脚本
<?php
 echo  "hello world!!! \n";
?>
[root@redis64 ~]# curl  http://localhost/test.php  访问php脚本
hello world!!! 
[root@redis64 ~]#

步骤二:配置PHP支持redis

1)安装软件提供模块

--with-php-config=/usr/bin/php-config 获取php版本信息

[root@redis64 pub]# tar -xf redis-cluster-4.3.0.tgz  解压源码
[root@redis64 pub]# cd redis-4.3.0/ 进源码目录
[root@redis64 redis-4.3.0]# phpize  获取php版本信息
Configuring for:
PHP Api Version:         20170718
Zend Module Api No:      20170718
Zend Extension Api No:   320170718
[root@redis64 redis-4.3.0]# ./configure --with-php-config=/usr/bin/php-config  配置
[root@redis64 redis-4.3.0]# make && make install 编译并安装
Build complete.
Don't forget to run 'make test'.
Installing shared extensions:     /usr/lib64/php/modules/  提示模块安装的位置
[root@redis64 redis-4.3.0]# ls /usr/lib64/php/modules/redis.so  查看模块
/usr/lib64/php/modules/redis.so
[root@redis64 redis-4.3.0]#
2)调用模块

[root@redis64 redis-4.3.0]# vim /etc/php.ini  编辑php进程主配置文件
737 extension_dir = "/usr/lib64/php/modules/"   指定模块所在目录
739 extension = "redis.so"  指定模块名
:wq
3)加载模块

[root@redis64 redis-4.3.0]# systemctl  restart php-fpm
4)查看模块

[root@redis64 ~]# php -m | grep redis
redis
[root@redis64 ~]#

步骤三:编写网站脚本,把数据存储到本机的内存里

1)允许通过lo口连接本机redis服务

[root@redis64 ~]# systemctl  stop redis
[root@redis64 ~]# vim /etc/redis.conf
69 bind 127.0.0.1 192.168.88.64
:wq
[root@redis64 ~]# netstat  -utnlp  | grep redis-server
tcp        0      0 192.168.88.64:6364  0.0.0.0:* LISTEN      12794/redis-server  
tcp        0      0 127.0.0.1:6364  0.0.0.0:* LISTEN      12794/redis-server  
[root@redis64 ~]#
2)编写php脚本

[root@redis64 ~]# vim /usr/local/nginx/html/redis.php
<?php
$redis = new redis();
$redis->connect("127.0.0.1", "6364");
$redis->auth("tarenaplj");
$redis->set("class","nsd");
echo "save ok\n";
?>
3)访问脚本

[root@redis64 ~]# curl  http://localhost/redis.php
save ok
[root@redis64 ~]# 
4)连接redis服务查看变量

[root@redis64 ~]# redis-cli  -h 127.0.0.1 -p 6364 
127.0.0.1:6364> auth tarenaplj
OK
127.0.0.1:6364> keys *
1) "school"
2) "class"
127.0.0.1:6364> get class
"nsd"
127.0.0.1:6364>

4 案例4:创建redis集群

4.1 问题

  1. 准备集群环境
  2. 创建集群
  3. 查看集群信息
  4. 访问集群

4.2 方案

创建6台新虚拟机,具体要求如表-2所示。

主机名IP地址端口角色
Host51192.168.88.516379Redis服务器
Host52192.168.88.526379Redis服务器
Host53192.168.88.536379Redis服务器
Host54192.168.88.546379Redis服务器
Host55192.168.88.556379Redis服务器
Host56192.168.88.566379Redis服务器

4.3 步骤

实现此案例需要按照如下步骤进行。

步骤一:准备集群环境

说明:准备做集群的主机,不允许存储数据、不允许设置连接密码

配置服务器192.168.88.51

]# yum -y install redis 安装软件
]# vim  /etc/redis.conf 修改主配置文件夹
    92 port  6379   //端口号
69 bind   192.168.88.51  //IP地址
    838 cluster-enabled  yes                                //启用集群功能  
    846 cluster-config-file  nodes-6379.conf         //存储集群信息文件
    852 cluster-node-timeout  5000  //集群中主机通信超时时间
:wq
]# systemctl   start  redis
]# netstat -utnlp  | grep redis-serve
tcp  0  0 192.168.88.51:6379  0.0.0.0:*   LISTEN      21201/redis-serve  
tcp  0  0 192.168.88.51:16379   0.0.0.0:*   LISTEN   21201/redis-serve   
配置服务器192.168.88.52

]# yum -y install redis
]# vim  /etc/redis.conf
    92 port  6379
69 bind   192.168.88.52
    838 cluster-enabled  yes                                 //启用集群功能  
    846 cluster-config-file  nodes-6379.conf         //存储集群信息文件
    852 cluster-node-timeout  5000  //集群中主机通信超时时间
:wq
]# systemctl   start  redis
]# netstat -utnlp  | grep redis-serve
tcp  0  0 192.168.88.52:6379  0.0.0.0:*   LISTEN      21201/redis-serve  
tcp  0  0 192.168.88.52:16379   0.0.0.0:*   LISTEN   21201/redis-serve
配置服务器192.168.88.53

]# yum -y install redis
]# vim  /etc/redis.conf
    92 port  6379
69 bind   192.168.88.53
    838 cluster-enabled  yes                                 //启用集群功能  
    846 cluster-config-file  nodes-6379.conf         //存储集群信息文件
    852 cluster-node-timeout  5000  //集群中主机通信超时时间
:wq
]# systemctl   start  redis
]# netstat -utnlp  | grep redis-serve
tcp  0  0 192.168.88.53:6379  0.0.0.0:*   LISTEN      21201/redis-serve  
tcp  0  0 192.168.88.53:16379   0.0.0.0:*   LISTEN   21201/redis-serve
配置服务器192.168.88.54

]# yum -y install redis
]# vim  /etc/redis.conf
    92 port  6379
69 bind   192.168.88.54
    838 cluster-enabled  yes                                 //启用集群功能  
    846 cluster-config-file  nodes-6379.conf         //存储集群信息文件
    852 cluster-node-timeout  5000  //集群中主机通信超时时间
:wq
]# systemctl   start  redis
]# netstat -utnlp  | grep redis-serve
tcp  0  0 192.168.88.54:6379  0.0.0.0:*   LISTEN      21201/redis-serve  
tcp  0  0 192.168.88.54:16379   0.0.0.0:*   LISTEN   21201/redis-serve 
配置服务器192.168.88.55

]# yum -y install redis
]# vim  /etc/redis.conf
    92 port  6379
69 bind   192.168.88.55
    838 cluster-enabled  yes                                 //启用集群功能  
    846 cluster-config-file  nodes-6379.conf         //存储集群信息文件
    852 cluster-node-timeout  5000  //集群中主机通信超时时间
:wq
]# systemctl   start  redis
]# netstat -utnlp  | grep redis-serve
tcp  0  0 192.168.88.55:6379  0.0.0.0:*   LISTEN      21201/redis-serve  
tcp  0  0 192.168.88.55:16379   0.0.0.0:*   LISTEN   21201/redis-serve 
配置服务器192.168.88.56

]# yum -y install redis
]# vim  /etc/redis.conf
    92 port  6379
69 bind   192.168.88.56
    838 cluster-enabled  yes                                 //启用集群功能  
    846 cluster-config-file  nodes-6379.conf         //存储集群信息文件
    852 cluster-node-timeout  50ha00  //集群中主机通信超时时间
:wq
]# systemctl   start  redis
]# netstat -utnlp  | grep redis-serve
tcp  0  0 192.168.88.56:6379  0.0.0.0:*   LISTEN      21201/redis-serve  
tcp  0  0 192.168.88.56:16379   0.0.0.0:*   LISTEN   21201/redis-serve 

步骤二:创建集群

说明:

1、在任意一台redis服务器上都可以执行创建集群的命令。

2、--cluster-replicas 1 给每个master服务器分配一台slave服务器,每个主至少要分配1台slave服务器,不然无法实现redis服务的高可用。

3、创建集群时,会自动创建主从角色,默认把主机列表中的前3台服务器创建为

Master角色的redis服务器,剩下的均配置为slave角色服务器。

4、创建集群时,会自动给master角色的主机分配hash槽 ,通过hash槽实现数据的分布式存储。

]# redis-cli  --cluster   create   192.168.88.51:6379  192.168.88.52:6379  192.168.88.53:6379  192.168.88.54:6379 192.168.88.55:6379 192.168.88.56:6379  --cluster-replicas 1
>>> Creating cluster
>>> Performing hash slots allocation on 6 nodes...
Using 3 masters:
192.168.88.51:6379
192.168.88.52:6379
192.168.88.53:6379
Adding replica 192.168.88.55:6379 to 192.168.88.51:6379
Adding replica 192.168.88.56:6379 to 192.168.88.52:6379
Adding replica 192.168.88.54:6379 to 192.168.88.53:6379
M: 0eb3b7aa0493a19189cba35b0c658202cc20884b 192.168.88.51:6379
   slots:0-5460 (5461 slots) master
M: a9cb8ccd31bf3eb70433c00906c9f1a99b5e8441 192.168.88.52:6379
   slots:5461-10922 (5462 slots) master
M: f2c1bdb78d8d224c3666fa6440bdf80ba563c581 192.168.88.53:6379
   slots:10923-16383 (5461 slots) master
S: bdba77868965371680fa825badff59bf8ef95a81 192.168.88.54:6379
   replicates f2c1bdb78d8d224c3666fa6440bdf80ba563c581
S: 11510f42bfd9cf667bab5f31c01476d94984200a 192.168.88.55:6379
   replicates 0eb3b7aa0493a19189cba35b0c658202cc20884b
S: fe572ce003ee634c52adc4b42d92d15f847937d7 192.168.88.56:6379
   replicates a9cb8ccd31bf3eb70433c00906c9f1a99b5e8441
Can I set the above configuration? (type 'yes' to accept): yes 同意 
....
....
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.  //创建成功的提示

步骤三:查看集群信息

第一列:主服务器ip地址

第二列:主服务器ID

第三列:存储变量个数

第四列:hash槽个数 (hash槽的作用在集群存储工程过程里讲)

第五列:从服务器数量

]# redis-cli --cluster  info  192.168.88.51:6379
192.168.88.53:6379 (f2c1bdb7...) -> 0 keys | 5461 slots | 1 slaves.
192.168.88.51:6379 (0eb3b7aa...) -> 0 keys | 5461 slots | 1 slaves.
192.168.88.52:6379 (a9cb8ccd...) -> 0 keys | 5462 slots | 1 slaves.
[OK] 0 keys in 3 masters.
0.00 keys per slot on average.

步骤四:访问集群

[root@host51 ~]# redis-cli  -c -h 192.168.88.51 -p 6379
192.168.88.51:6379> set school  tarena
-> Redirected to slot [8455] located at 192.168.88.52:6379
OK
192.168.88.52:6379> set teacher plj
-> Redirected to slot [12541] located at 192.168.88.53:6379
OK
192.168.88.53:6379> set class NSD
-> Redirected to slot [741] located at 192.168.88.51:6379
OK
192.168.88.51:6379> 

会发现3个变量被分别存储到集群中的3台master服务器上,实现了数据的分布式存储。当连接集群中的任意一台redis服务器存储数据时,会调用集群CRC16算法 得出此次

存储变量使用的hash 槽,然后连接hash 槽 所在的master服务器存储变量。

在创建集群时会把默认的16384个槽平均的分配给集群中的3个master服务器。可以通过查看集群信息查看每个master服务器占用hash槽的个数。

]# redis-cli  --cluster  info  192.168.88.51:6379
192.168.88.53:6379 (f2c1bdb7...) -> 0 keys | 5461 slots | 1 slaves.
192.168.88.51:6379 (0eb3b7aa...) -> 0 keys | 5461 slots | 1 slaves.
192.168.88.52:6379 (a9cb8ccd...) -> 0 keys | 5462 slots | 1 slaves.
[OK] 0 keys in 3 masters.
0.00 keys per slot on average

集群中slave角色的主机会自动同步master角色主机的数据,实现数据的自动备份,

分别连接集群中的3台slave服务器查看变量

[root@host54 ~]# redis-cli -c -h 192.168.88.54 -p 6379
192.168.88.54:6379> keys *
1) "class"
[root@host55 ~]# redis-cli -c -h 192.168.88.55 -p 6379
192.168.88.55:6379> keys *
1) "school"
[root@host56 ~]# redis-cli -c -h 192.168.88.56 -p 6379
192.168.88.56:6379> keys *
1) "teacher"

当master角色的服务器宕机时,对应的slave服务器会升级为master 并接手对应的hash槽,实现redis服务的高可用,例如停止host53主机的redis服务,对应的从会升级为master 。(当宕机的master恢复后 自动做当前主的从服务器)

停止redis服务
[root@host53 ~]# systemctl  stop  reddis  
查看集群信息
[root@host51 ~]#]# redis-cli --cluster  info  192.168.88.51:6379
192.168.88.54:6379 (f2c1bdb7...) -> 1 keys | 5461 slots | 0 slaves.
192.168.88.51:6379 (0eb3b7aa...) -> 1 keys | 5461 slots | 1 slaves.
192.168.88.52:6379 (a9cb8ccd...) -> 1 keys | 5462 slots | 1 slaves.
[OK] 0 keys in 3 masters.
keys per slot on average.
启动redis服务
[root@host53 ~]# systemctl  start  reddis 
查看集群信息
[root@host51 ~]#]# redis-cli --cluster  info  192.168.88.51:6379
192.168.88.54:6379 (f2c1bdb7...) -> 1 keys | 5461 slots | 1 slaves.
192.168.88.51:6379 (0eb3b7aa...) -> 1 keys | 5461 slots | 1 slaves.
192.168.88.52:6379 (a9cb8ccd...) -> 1 keys | 5462 slots | 1 slaves.
[OK] 0 keys in 3 masters.
keys per slot on average.
存储数据脚本
[root@redis64 ~]# vim /usr/local/nginx/html/set.php
<?php
$redis_list = ['192.168.88.51:6379','192.168.88.52:6379','192.168.88.53:6379','192.168.88.54:6379','192.168.88.55:6379','192.168.88.56:6379'];
$client = new RedisCluster(NUll,$redis_list);
$client->set("i","tarenaA ");
$client->set("j","tarenaB ");
$client->set("k","tarenaC ");
echo "save ok\n";
?>
:wq
查看数据脚本
[root@ redis64 ~]# vim  /usr/local/nginx/html/get_data.php 
<?php
$redis_list = ['192.168.88.51:6379','192.168.88.52:6379','192.168.88.53:6379','192.168.88.54:6379','192.168.88.55:6379','192.168.88.56:6379'];  //定义redis服务器列表
$client = new RedisCluster(NUll,$redis_list); //定义连接redis服务命令
echo $client->get("i");  //获取变量i 的数据
echo $client->get("j");  //获取变量j 的数据
echo $client->get("k");  //获取变量k 的数据
?>
:wq
3)访问脚本

]# curl http://192.168.88.64/set_data.php
save ok 
]# curl http://192.168.88.64/get_data.php
tarenaA tarenaB tarenaC 
4)命令行连接redis集群主机查看数据

[root@host51 ~]# redis-cli -c -h 192.168.88.51 -p 6379
192.168.88.51:6379> keys *
1) "j"
[root@host52 ~]# redis-cli -c -h 192.168.88.52 -p 6379
192.168.88.52:6379> keys *
1) "k"
[root@host53 ~]# redis-cli -c -h 192.168.88.53 -p 6379
192.168.88.53:6379> keys *
1) "i"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值