tpconfig清洗磁带 和 redis 常用运维命令

##第一节 : 清洗磁带

https://www.veritas.com/content/support/en_US/doc/123533878-127136857-0/v123555387-127136857

 https://vox.veritas.com/t5/NetBackup/Checking-on-TapeAlert-cleaning/td-p/378776

https://www.forzw.com/archives/746

 

 

step  1.清洗磁带驱动一般是在 带库磁带机端IE 做清洗的,推荐这么做

step 2.nbu 软件端 只能通过收到 带库磁带机 firmware 端的提示符号Tapealerts 。才通过tpclean -L 端出现提示,这个时候可以通过nbu 端做带库 驱动 的清洗,

 

https://vox.veritas.com/t5/NetBackup/Checking-on-TapeAlert-cleaning/td-p/378776

... and I believe here we have the answer ...

"I checked the library, and the drive still reported that it needed cleaning, which I ran manually from the robot management page."

From this, I know that the library is reading the status of the drives.

Tapealerts work like this.

When the drive has a problem (eg. clean me)  a 'clean me' bit is set in the firmware.

When the library (in this case) reads the bits , it is able to display the message you see.  However, the act of the library reading the 'bits' resets them, so they can never be read by NBU.

So, you need to configure the library so it knows nothing at all about cleaning or cleaning tapes.  Once the library is stopped from reading the drive status it will not reset the 'bits'.  Then, when NBU wishes to get the drive status (after each backupI think) the bits will not have been reset, and it should detect the drive needs cleaning.

Hope this helps,

Martin

 

nbu 软件端是通过服务器日志/var/log/messags 收到的信息,比如如下信息

TapeAlert Code: 0x15, TYPE:warning, Flag :clean periodic, from driver hp.ultium7-scsci.008

 

 

step 3. NBU 端清洗磁带机的方法如下:

清洗磁带机

1.查看需要清洗的磁带机

1
2
3
4
5
6
7
8
9
10
11
12
13
14
netback:root:/usr/openv/volmgr/bin>./tpclean -L
Drive Name              Type      Mount Time  Frequency   Last Cleaned         Comment
**********              ****      **********  *********   ****************     *******
IBM.ULT3580-TD4.000     hcart*    1906.3      0                N/A             NEEDS CLEANING
IBM.ULT3580-TD4.001     hcart*    2950.6      0                N/A             NEEDS CLEANING
IBM.ULT3580-TD4.002     hcart*    2804.5      0                N/A             NEEDS CLEANING
IBM.ULT3580-TD4.003     hcart*    2895.4      0                N/A             NEEDS CLEANING
IBM.ULT3580-TD4.004     hcart*    1804.2      0                N/A             NEEDS CLEANING
IBM.ULT3580-TD4.005     hcart*    2916.2      0                N/A             NEEDS CLEANING
IBM.ULT3580-TD4.006     hcart*    2970.3      0                N/A             NEEDS CLEANING
IBM.ULT3580-TD4.007     hcart*    2909.5      0                N/A             NEEDS CLEANING
IBM.ULT3580-TD4.008     hcart*    2895.8      0                N/A             NEEDS CLEANING
IBM.ULT3580-TD4.009     hcart*    2896.7      0                N/A             NEEDS CLEANING
IBM.ULT3580-TD4.010     hcart*    2840.6      0                N/A             NEEDS CLEANING

 

2.清洗磁带机

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
netback:root:/usr/openv/volmgr/bin>./tpclean -M “Drive Name” 
netback:root:/usr/openv/volmgr/bin>./tpclean -M IBM.ULT3580-TD4.000 
netback:root:/usr/openv/volmgr/bin>./tpclean -L
Drive Name              Type      Mount Time  Frequency   Last Cleaned         Comment
**********              ****      **********  *********   ****************     *******
IBM.ULT3580-TD4.000     hcart*    0.0         0           16:44 06/16/2015
IBM.ULT3580-TD4.001     hcart*    2950.6      0                N/A             NEEDS CLEANING
IBM.ULT3580-TD4.002     hcart*    2804.5      0                N/A             NEEDS CLEANING
IBM.ULT3580-TD4.003     hcart*    2895.4      0                N/A             NEEDS CLEANING
IBM.ULT3580-TD4.004     hcart*    1804.2      0                N/A             NEEDS CLEANING
IBM.ULT3580-TD4.005     hcart*    2916.2      0                N/A             NEEDS CLEANING
IBM.ULT3580-TD4.006     hcart*    2970.3      0                N/A             NEEDS CLEANING
IBM.ULT3580-TD4.007     hcart*    2909.5      0                N/A             NEEDS CLEANING
IBM.ULT3580-TD4.008     hcart*    2895.8      0                N/A             NEEDS CLEANING
IBM.ULT3580-TD4.009     hcart*    2896.7      0                N/A             NEEDS CLEANING
IBM.ULT3580-TD4.010     hcart*    2840.6      0                N/A             NEEDS CLEANING       
netback:root:/usr/openv/volmgr/bin>./tpclean -M IBM.ULT3580-TD4.001
netback:root:/usr/openv/volmgr/bin>./tpclean -M IBM.ULT3580-TD4.002
netback:root:/usr/openv/volmgr/bin>./tpclean -M IBM.ULT3580-TD4.003
netback:root:/usr/openv/volmgr/bin>./tpclean -M IBM.ULT3580-TD4.004
netback:root:/usr/openv/volmgr/bin>./tpclean -M IBM.ULT3580-TD4.005
netback:root:/usr/openv/volmgr/bin>./tpclean -M IBM.ULT3580-TD4.006
netback:root:/usr/openv/volmgr/bin>./tpclean -M IBM.ULT3580-TD4.007
netback:root:/usr/openv/volmgr/bin>./tpclean -M IBM.ULT3580-TD4.008
netback:root:/usr/openv/volmgr/bin>./tpclean -M IBM.ULT3580-TD4.009
netback:root:/usr/openv/volmgr/bin>./tpclean -M IBM.ULT3580-TD4.010

3.清洗后查看

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
netback:root:/usr/openv/volmgr/bin>./tpclean -L
netback:root:/usr/openv/volmgr/bin>./tpclean -L
Drive Name              Type      Mount Time  Frequency   Last Cleaned         Comment
**********              ****      **********  *********   ****************     *******
IBM.ULT3580-TD4.000     hcart*    0.0         0           16:44 06/16/2015
IBM.ULT3580-TD4.001     hcart*    0.0         0           16:45 06/16/2015
IBM.ULT3580-TD4.002     hcart*    0.0         0           16:45 06/16/2015
IBM.ULT3580-TD4.003     hcart*    0.0         0           16:45 06/16/2015
IBM.ULT3580-TD4.004     hcart*    0.0         0           16:46 06/16/2015
IBM.ULT3580-TD4.005     hcart*    0.0         0           16:46 06/16/2015
IBM.ULT3580-TD4.006     hcart*    0.0         0           16:46 06/16/2015
IBM.ULT3580-TD4.007     hcart*    0.0         0           16:46 06/16/2015
IBM.ULT3580-TD4.008     hcart*    0.0         0           16:46 06/16/2015
IBM.ULT3580-TD4.009     hcart*    0.0         0           16:47 06/16/2015
IBM.ULT3580-TD4.010     hcart*    0.0         0           16:47 06/16/2015

 

3.

 

step 4. 有的时候,带库磁带机的IE 管理 界面没有提示 磁带需要清理, 但是nbu 服务器端,tpclean -L 却显示很多磁带 磁带驱动器  command 需要清理,

NEEDS CLEANING 

这个时候可以手工清理下磁带驱动器试试 使用步骤3.

 

 #############sample 3

一、bpverify
bpverify — 验证由 NetBackup 创建的备份
bpverify 通过读取备份卷,并将其内容与 NetBackup 目录库进行比较来验证一个或多个备份的内容。
该操作并不将卷数据与客户端磁盘的内容进行比较。它读取映像中的每个块以验证卷是否为可读。
NetBackup 一次只验证一个备份,并尝试最大限度地缩短介质装入和定位时间。

bpverify [-l] [-p] [-pb] [-v] [-local] [-client name] [-st sched_type] [-sl sched_label] [-L output_file [-en]] [-policy name] [-s date] [-e date]
[-M master_server] [-Bidfile file_name] [-pt policy_type] [-hoursago hours] [[-cn copy number] | [-primary]] [-backupid backup_id] [[-id media_id or path] |
[-stype server_type] [-dp disk_pool_name [-dv disk_volume]]] [-priority number]

二、选项
-backupid backup_id
指定要验证的单个备份的备份 ID。除 -Bidfile 以外,该选项优先于任何其他选择条件。默认为任何备份。

-Bidfile file_name
指定一个包含要验证的备份 ID 列表的文件。此文件会在命令行界面 (CLI) 激活期间删除。删除文件的原因是 NetBackup GUI 经常使用此参数。

-client name
指定生成原始备份的客户端的名称。默认为任何客户端。

-cn copy_number|-primary
确定要验证的备份 ID 的副本号。有效值为从 1 到 bpconfig -max_copies 设置所指定的设置,最大值为 10。默认值为 1。

-primary 指示应验证主副本而不是该副本。

-dp disk_pool_name [-dv disk_volume]
指定磁盘池的名称。磁盘池是该存储单元的数据存储区域。另外,bpverify 仅验证驻留在指定磁盘卷上的映像。该选项必须与 -stype 选项一起使用。磁盘池必须已存在。

-hoursago hours
从当前时间算起,指定要搜索此前多少小时之内的备份。这相当于将开始时间 (-s) 指定为当前时间减去 hours 值。不要将该选项与 -s 选项一起使用。

-id media_id | path
在映像目录库中搜索备份,以验证它们是否位于此介质 ID 或路径名上。如果备份的一些片段位于该介质 ID 上,而另一些片段位于其他介质 ID 上,则会发生以下情况:只要在所提供的介质 ID 的介质上开始备份,NetBackup 便会对跨介质映像进行验证。

-L output_file [-en]
指定要在其中写入进度信息的文件的名称。默认为不使用进度文件,在这种情况下,将进度信息写入 stderr。有关更多信息,请参见此命令说明后面介绍的“显示格式”。

-l
指定列表类型为长列表,以使 bpverify 向进度日志中写入附加信息。默认列表类型为短列表。有关附加信息,请参见此命令说明后面介绍的“显示格式”。

-local
如果从主服务器以外的主机启动 bpverify,并且没有使用 -local(默认),则发生以下情况:bpverify 在主服务器上启动该命令的远程副本。

-M master_server
指定提供 bpverify 映像数据的主服务器。主服务器必须允许发出 bpverify 命令的系统对其进行访问。默认为输入 bpverify 的系统的主服务器:

-p
预览验证,但并不执行验证。有关附加信息,请参见此命令说明后面介绍的“显示格式”。

-pb
预览验证,但并不执行验证。-pb 选项类似于 -p 选项,但前者不显示各备份的信息。有关附加信息,请参见此命令说明后面介绍的“显示格式”。

-policy name
在指定策略中搜索要验证的备份。默认为任何策略。

-priority number
为验证作业指定一个新优先级来覆盖默认作业优先级。

-pt policy_type
指定选择要验证的备份时使用的策略类型。默认值为任意策略类型。

-s date, -e date
为所有要验证的备份指定日期和时间范围的开始时间。-e 选项指定范围的截止时间。

-sl sched_label
搜索备份以验证指定的日程表已创建。默认值为所有日程表。

-st sched_type
搜索备份以验证指定的日程表类型已创建。默认值为任意日程表类型。

-stype server_type
指定标识存储服务器类型的字符串。server_type 值可能源自以下来源之一:

-v
选择详细模式。如果指定了 -v,调试日志和进度日志将包含更多信息。默认为非详细模式。

-p 显示内容中列出了满足 bpverify 命令行选项所设条件的备份 ID。-p 信息按卷顺序显示。对于包含所选备份的每个卷,都会列出介质 ID 和服务器。随后显示驻留在该卷上的所选备份 ID。

-pb 显示内容是 -p 显示内容的简要版本。对于包含满足选择条件的备份的每个卷,此选项将列出这些卷的介质 ID 和服务器。

三、示例
示例 1 - 对过去 36 小时内运行的备份进行验证:

bpverify -hoursago 36
Verify started Thu Feb 3 11:30:29 2012
INF - Verifying policy mkb_policy, schedule Full
(plim_0949536546), path /tmp/mkbunit, created 02/02/12 18:09:06.
INF - Verify of policy mkb_policy, schedule Full
(plim_0949536546) was successful.
INF - Status = successfully verified 1 of 1 images.
示例 2 - 比较 -p 和 -pb 这两种预览显示模式:

bpverify -p -hoursago 2000
Media id = A01001 Server = plim
Bid = plim_0949616279 Kbytes = 32800 Filenum = 1 Fragment = 1
Bid = gava_0949681647 Kbytes = 12191 Filenum = 2 Fragment = 1
Bid = gava_0949683298 Kbytes = 161 Filenum = 3 Fragment = 1
Bid = gava_0949683671 Kbytes = 11417 Filenum = 4 Fragment = 1

Media id = 400000 Server = plim
Bid = toaster2_0950199621 Kbytes = 298180 Filenum = 1 Fragment = 1
Bid = toaster2_0950199901 Kbytes = 298180 Filenum = 3 Fragment = 1

bpverify -pb -hoursago 200
Media id = A01001 Server = plim
Media id = 400000 Server = plim
返回值
0 退出状态表示已成功运行命令。任何非 0 的退出状态都表示发生了错误。

 

############

NetBackup status code 87: media close error

 

 

https://www.veritas.com/support/en_US/article.100030347

 

 

 

 

 

 

 ##第二节 :

######以下是redis 常用运维命令

 

##sample 1 转载 https://zhuanlan.zhihu.com/p/47692277
Redis 常用操作命令,非常详细!

Java技术栈
Java技术栈​
系统架构师
41 人赞同了该文章
下面总结并演示了 Redis 的 常用管理命令、key 操作、字符串、集合、列表、散列类型的操作命令。


常用管理命令
1、启动Redis
> redis-server [--port 6379]
如果命令参数过多,建议通过配置文件来启动Redis。

> redis-server [xx/xx/redis.conf]
6379是Redis默认端口号。

2、连接Redis
> ./redis-cli [-h 127.0.0.1 -p 6379]
3、停止Redis
> redis-cli shutdown

> kill redis-pid
以上两条停止Redis命令效果一样。

4、发送命令
给Redis发送命令有两种方式:

1、redis-cli带参数运行,如:

> redis-cli shutdown
not connected>
这样默认是发送到本地的6379端口。

2、redis-cli不带参数运行,如:

> ./redis-cli

127.0.0.1:6379> shutdown
not connected>
5、测试连通性
127.0.0.1:6379> ping
PONG
key操作命令
获取所有键
语法:keys pattern
127.0.0.1:6379> keys *
1) "javastack"
*表示通配符,表示任意字符,会遍历所有键显示所有的键列表,时间复杂度O(n),在生产环境不建议使用。
获取键总数
语法:dbsize
127.0.0.1:6379> dbsize
(integer) 6
获取键总数时不会遍历所有的键,直接获取内部变量,时间复杂度O(1)。

查询键是否存在
语法:exists key [key ...]
127.0.0.1:6379> exists javastack java
(integer) 2
查询查询多个,返回存在的个数。

删除键
语法:del key [key ...]
127.0.0.1:6379> del java javastack
(integer) 1
可以删除多个,返回删除成功的个数。

查询键类型
语法: type key
127.0.0.1:6379> type javastack
string
移动键
语法:move key db
如把javastack移到2号数据库。

127.0.0.1:6379> move javastack 2
(integer) 1
127.0.0.1:6379> select 2
OK
127.0.0.1:6379[2]> keys *
1) "javastack"
查询key的生命周期(秒)
秒语法:ttl key
毫秒语法:pttl key
127.0.0.1:6379[2]> ttl javastack
(integer) -1
-1:永远不过期。

设置过期时间
秒语法:expire key seconds
毫秒语法:pexpire key milliseconds
127.0.0.1:6379[2]> expire javastack 60
(integer) 1
127.0.0.1:6379[2]> ttl javastack
(integer) 55
设置永不过期
语法:persist key
127.0.0.1:6379[2]> persist javastack
(integer) 1
更改键名称
语法:rename key newkey
127.0.0.1:6379[2]> rename javastack javastack123
OK
字符串操作命令
字符串是Redis中最基本的数据类型,单个数据能存储的最大空间是512M。

存放键值
语法:set key value [EX seconds] [PX milliseconds] [NX|XX]
nx:如果key不存在则建立,xx:如果key存在则修改其值,也可以直接使用setnx/setex命令。

127.0.0.1:6379> set javastack 666
OK
获取键值
语法:get key
127.0.0.1:6379[2]> get javastack
"666"
值递增/递减
如果字符串中的值是数字类型的,可以使用incr命令每次递增,不是数字类型则报错。

语法:incr key
127.0.0.1:6379[2]> incr javastack
(integer) 667
一次想递增N用incrby命令,如果是浮点型数据可以用incrbyfloat命令递增。

同样,递减使用decr、decrby命令。

批量存放键值
语法:mset key value [key value ...]
127.0.0.1:6379[2]> mset java1 1 java2 2 java3 3
OK
获取获取键值
语法:mget key [key ...]
127.0.0.1:6379[2]> mget java1 java2
1) "1"
2) "2"
Redis接收的是UTF-8的编码,如果是中文一个汉字将占3位返回。

获取值长度
语法:strlen key
127.0.0.1:6379[2]> strlen javastack (integer) 3
追加内容
语法:append key value
127.0.0.1:6379[2]> append javastack hi
(integer) 5
向键值尾部添加,如上命令执行后由666变成666hi

获取部分字符
语法:getrange key start end
> 127.0.0.1:6379[2]> getrange javastack 0 4
"javas"
集合操作命令
集合类型和列表类型相似,只不过是集合是无序且不可重复的。

集合
存储值
语法:sadd key member [member ...]
// 这里有8个值(2个java),只存了7个
127.0.0.1:6379> sadd langs java php c++ go ruby python kotlin java
(integer) 7
获取元素
获取所有元素语法:smembers key
127.0.0.1:6379> smembers langs
1) "php"
2) "kotlin"
3) "c++"
4) "go"
5) "ruby"
6) "python"
7) "java"
随机获取语法:srandmember langs count
127.0.0.1:6379> srandmember langs 3
1) "c++"
2) "java"
3) "php"
判断集合是否存在元素
语法:sismember key member
127.0.0.1:6379> sismember langs go
(integer) 1
获取集合元素个数
语法:scard key
127.0.0.1:6379> scard langs
(integer) 7
删除集合元素
语法:srem key member [member ...]
127.0.0.1:6379> srem langs ruby kotlin
(integer) 2
弹出元素
语法:spop key [count]
127.0.0.1:6379> spop langs 2
1) "go"
2) "java"
有序集合
和列表的区别:

1、列表使用链表实现,两头快,中间慢。有序集合是散列表和跳跃表实现的,即使读取中间的元素也比较快。

2、列表不能调整元素位置,有序集合能。

3、有序集合比列表更占内存。

存储值
语法:zadd key [NX|XX] [CH] [INCR] score member [score member ...]
127.0.0.1:6379> zadd footCounts 16011 tid 20082 huny 2893 nosy
(integer) 3
获取元素分数
语法:zscore key member
127.0.0.1:6379> zscore footCounts tid
"16011"
获取排名范围排名语法:zrange key start stop [WITHSCORES]
// 获取所有,没有分数
127.0.0.1:6379> zrange footCounts 0 -1
1) "nosy"
2) "tid"
3) "huny"

// 获取所有及分数
127.0.0.1:6379> zrange footCounts 0 -1 Withscores
1) "nosy"
2) "2893"
3) "tid"
4) "16011"
5) "huny"
6) "20082"
获取指定分数范围排名语法:zrangebyscore key min max [WITHSCORES] [LIMIT offset count]
127.0.0.1:6379> zrangebyscore footCounts 3000 30000 withscores limit 0 1
1) "tid"
2) "16011"
增加指定元素分数
语法:zincrby key increment member
127.0.0.1:6379> zincrby footCounts 2000 tid
"18011"
获取集合元素个数
语法:zcard key
127.0.0.1:6379> zcard footCounts
(integer) 3
获取指定范围分数个数
语法:zcount key min max
127.0.0.1:6379> zcount footCounts 2000 20000
(integer) 2
删除指定元素
语法:zrem key member [member ...]
127.0.0.1:6379> zrem footCounts huny
(integer) 1
获取元素排名
语法:zrank key member
127.0.0.1:6379> zrank footCounts tid
(integer) 1
列表操作命令
列表类型是一个有序的字段串列表,内部是使用双向链表实现,所有可以向两端操作元素,获取两端的数据速度快,通过索引到具体的行数比较慢。

列表类型的元素是有序且可以重复的。

存储值
左端存值语法:lpush key value [value ...]
127.0.0.1:6379> lpush list lily sandy
(integer) 2
右端存值语法:rpush key value [value ...]
127.0.0.1:6379> rpush list tom kitty
(integer) 4
索引存值语法:lset key index value
127.0.0.1:6379> lset list 3 uto
OK
弹出元素
左端弹出语法:lpop key
127.0.0.1:6379> lpop list
"sandy"
右端弹出语法:rpop key
127.0.0.1:6379> rpop list
"kitty"
获取元素个数
语法:llen key
127.0.0.1:6379> llen list
(integer) 2
获取列表元素
两边获取语法:lrange key start stop
127.0.0.1:6379> lpush users tom kitty land pony jack maddy
(integer) 6

127.0.0.1:6379> lrange users 0 3
1) "maddy"
2) "jack"
3) "pony"
4) "land"

// 获取所有
127.0.0.1:6379> lrange users 0 -1
1) "maddy"
2) "jack"
3) "pony"
4) "land"
5) "kitty"
6) "tom"

// 从右端索引
127.0.0.1:6379> lrange users -3 -1
1) "land"
2) "kitty"
3) "tom"
索引获取语法:lindex key index
127.0.0.1:6379> lindex list 2
"ketty"

// 从右端获取
127.0.0.1:6379> lindex list -5
"sady"
删除元素
根据值删除语法:lrem key count value
127.0.0.1:6379> lpush userids 111 222 111 222 222 333 222 222
(integer) 8

// count=0 删除所有
127.0.0.1:6379> lrem userids 0 111
(integer) 2

// count > 0 从左端删除前count个
127.0.0.1:6379> lrem userids 3 222
(integer) 3

// count < 0 从右端删除前count个
127.0.0.1:6379> lrem userids -3 222
(integer) 2
范围删除语法:ltrim key start stop
// 只保留2-4之间的元素
127.0.0.1:6379> ltrim list 2 4
OK
散列操作命令
redis字符串类型键和值是字典结构形式,这里的散列类型其值也可以是字典结构。

存放键值
单个语法:hset key field value
127.0.0.1:6379> hset user name javastack
(integer) 1
多个语法:hmset key field value [field value ...]
127.0.0.1:6379> hmset user name javastack age 20 address china
OK
不存在时语法:hsetnx key field value
127.0.0.1:6379> hsetnx user tall 180
(integer) 0
获取字段值
单个语法:hget key field
127.0.0.1:6379> hget user age
"20"
多个语法:hmget key field [field ...]
127.0.0.1:6379> hmget user name age address
1) "javastack"
2) "20"
3) "china"
获取所有键与值语法:hgetall key
127.0.0.1:6379> hgetall user
1) "name"
2) "javastack"
3) "age"
4) "20"
5) "address"
6) "china"
获取所有字段语法:hkeys key
127.0.0.1:6379> hkeys user
1) "name"
2) "address"
3) "tall"
4) "age"
获取所有值语法:hvals key
127.0.0.1:6379> hvals user
1) "javastack"
2) "china"
3) "170"
4) "20"
判断字段是否存在
语法:hexists key field
127.0.0.1:6379> hexists user address
(integer) 1
获取字段数量
语法:hlen key
127.0.0.1:6379> hlen user
(integer) 4
递增/减
语法:hincrby key field increment
127.0.0.1:6379> hincrby user tall -10
(integer) 170
删除字段
语法:hdel key field [field ...]
127.0.0.1:6379> hdel user age
(integer) 1
都是基本的命令用法,不会用了就来翻一下吧!

写了大半天,点赞转发支持一下吧,亲!


##sample 2 http://blog.itpub.net/29785807/viewspace-2703930/
Redis日常运维-常用命令汇总

●目录●


一 查看redis是否启动
二 启动redis
三 连接redis
四 选择数据库
五 string操作方法
六 哈希(Hash)操作方法
七 Redis 列表(List)
八 Redis 集合(Set)
九 Redis 有序集合(sorted set)
●内容●

一 查看redis是否启动


[redis@cjcos01 src]$ ps -ef|grep redis
redis 2156 1 0 17:47 ? 00:00:00 ./redis-server 0.0.0.0:6379
二 启动redis


[redis@cjcos01 src]$ pwd
/usr/local/redis/src
[redis@cjcos01 src]$ ./redis-server ../conf/redis.conf
三 连接redis


[redis@cjcos01 ~]$ redis-cli --help
[redis@cjcos01 ~]$ redis-cli
[redis@cjcos01 ~]$ redis-cli -h 192.168.30.100 -p 6379
[redis@cjcos01 ~]$ redis-cli -h 192.168.30.100 -p 6379 --raw
四 选择数据库

安装完redis后默认创建16个数据库(0-15),默认登录的是0号数据库


192.168.30.100:6379> select 0
OK
192.168.30.100:6379> select 1
OK
192.168.30.100:6379[1]> select 5
OK
192.168.30.100:6379[5]> select 15
OK
192.168.30.100:6379[15]> select 16
ERR DB index is out of range
五 string操作方法

Redis 字符串数据类型的相关命令用于管理 redis 字符串值

5.1 新增


192.168.30.100:6379> set name cjc
OK
5.2 查询

 

192.168.30.100:6379> get name
cjc
5.3 修改


192.168.30.100:6379> set name chenjch
5.4 修改同时返回旧值

 

192.168.30.100:6379> getset name chenjch
cjc
192.168.30.100:6379> get name
chenjch
5.5 返回字符串长度

 

192.168.30.100:6379> strlen name
7
5.6 将key中存储的数字值加一(可用于点赞计数等)

 

192.168.30.100:6379> get age
18
192.168.30.100:6379> incr age
19
192.168.30.100:6379> incr age
20
192.168.30.100:6379> incr age
21
192.168.30.100:6379> incr age
22
192.168.30.100:6379> incr age
23
5.7 将key中存储的数字值加指定的值

 

192.168.30.100:6379> incrby age 5
28
5.8 将key中存储的数字值减一

 

192.168.30.100:6379> decr age
22
192.168.30.100:6379> decr age
21
192.168.30.100:6379> decr age
20
5.9 将key中存储的数字值减掉指定的值

 

192.168.30.100:6379> decrby age 2
18
5.10 如果key 已经存在并且是一个字符串, APPEND 命令将指定的 value 追加到该 key 原来值(value)的末尾。

 

192.168.30.100:6379> get name
chenjch
192.168.30.100:6379> append name cjc
10
192.168.30.100:6379> get name
chenjchcjc
5.11 删除

 

192.168.30.100:6379> del name
1
5.12 查看当前数据库所有key(生产环境谨慎使用)

 

192.168.30.100:6379> keys *
name
age
5.13 清空当前数据库(生产环境谨慎使用)


192.168.30.100:6379> flushdb
OK
5.14 清空所有数据库(生产环境谨慎使用)

 

192.168.30.100:6379> flushall
OK
5.15 设置值及值得过期时间

 

192.168.30.100:6379> setex name 10 chenjch
OK
5.16 查看过期时间(默认-1,表示永不过期)

 

192.168.30.100:6379> ttl name
3
5.17 修改过期时间

 

192.168.30.100:6379> expire name 100
1
192.168.30.100:6379> ttl name
96
5.18 批量添加值

 

192.168.30.100:6379> mset name cjc age 18 sex male
OK
192.168.30.100:6379> keys *
name
sex
age
5.19 批量查询值

 

192.168.30.100:6379> mget age sex name
18
male
cjc
六 哈希(Hash)操作方法


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

Redis 中每个 hash 可以存储 2^23 - 1 键值对(40多亿)。

七 Redis 列表(List)


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

一个列表最多可以包含 2^32 - 1 个元素 (4294967295, 每个列表超过40亿个元素)。

7.1 创建list数据


192.168.30.100:6379> lpush ckey redis
1
192.168.30.100:6379> lpush ckey mongodb
2
192.168.30.100:6379> lpush ckey mysql
3
192.168.30.100:6379> lpush ckey oracle
4
192.168.30.100:6379> lpush ckey db2
5
7.2 查询list数据

 

192.168.30.100:6379> lrange ckey 0 100
db2
oracle
mysql
mongodb
redis
192.168.30.100:6379> lrange ckey 1 2
oracle
mysql
7.3 获取列表长度

 

192.168.30.100:6379> llen ckey
5
7.4 将一个或多个值插入到列表头部

 

192.168.30.100:6379> lpush ckey sqlserver
6
192.168.30.100:6379> lrange ckey 0 100
sqlserver
db2
oracle
mysql
mongodb
redis
7.5 移除列表的最后一个元素,返回值为移 除的元素

 

192.168.30.100:6379> rpop ckey
redis
192.168.30.100:6379> lrange ckey 0 100
sqlserver
db2
oracle
mysql
mongodb
八 Redis 集合(Set)


Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。

Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。

新增,自动去重


192.168.30.100:6379> sadd cjckey redis
1
192.168.30.100:6379> sadd cjckey mongodb
1
192.168.30.100:6379> sadd cjckey mysql
1
192.168.30.100:6379> sadd cjckey oracle
1
192.168.30.100:6379> sadd cjckey oracle
192.168.30.100:6379> sadd cjckey mysql
0
查看集合,去重,无序

 

192.168.30.100:6379> smembers cjckey
mysql
redis
mongodb
oracle
九 Redis 有序集合(sorted set)

Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。

不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。

有序集合的成员是唯一的,但分数(score)却可以重复。


192.168.30.100:6379> zadd chenjchkey 1 redis
1
192.168.30.100:6379> zadd chenjchkey 2 mongodb
1
192.168.30.100:6379> zadd chenjchkey 3 mysql
1
192.168.30.100:6379> zadd chenjchkey 4 db2
1
192.168.30.100:6379> zadd chenjchkey 5 oracle
1
192.168.30.100:6379> zadd chenjchkey 6 redis
192.168.30.100:6379> zadd chenjchkey 6 tidb
1
192.168.30.100:6379> zadd chenjchkey 6 gbase
1
查看

 

192.168.30.100:6379> zrange chenjchkey 0 100
mongodb
mysql
db2
oracle
gbase
redis
tidb

192.168.30.100:6379> zrange chenjchkey 0 100 withscores
mongodb
2
mysql
3
db2
4
oracle
5
gbase
6
redis
6
tidb
6

##sample 3
https://www.cnblogs.com/youngdeng/p/12858778.html
Redis总结(七)Redis运维常用命令
redis 服务器端命令

redis 127.0.0.1:6380> time ,显示服务器时间 , 时间戳(秒), 微秒数

1) "1375270361"

2) "504511"

 

redis 127.0.0.1:6380> dbsize // 当前数据库的key的数量

(integer) 2

redis 127.0.0.1:6380> select 2

OK

redis 127.0.0.1:6380[2]> dbsize

(integer) 0

redis 127.0.0.1:6380[2]>

 

 

BGREWRITEAOF 后台进程重写AOF

BGSAVE 后台保存rdb快照

SAVE 保存rdb快照

LASTSAVE 上次保存时间

 

Slaveof master-Host port , 把当前实例设为master的slave

 

Flushall 清空所有库所有键

Flushdb 清空当前库所有键

Showdown [save/nosave]

 

注: 如果不小心运行了flushall, 立即 shutdown nosave ,关闭服务器

然后 手工编辑aof文件, 去掉文件中的 “flushall ”相关行, 然后开启服务器,就可以导入回原来数据.

 

如果,flushall之后,系统恰好bgrewriteaof了,那么aof就清空了,数据丢失.

 

Slowlog 显示慢查询

注:多慢才叫慢?

答: 由slowlog-log-slower-than 10000 ,来指定,(单位是微秒)

 

服务器储存多少条慢查询的记录?

答: 由 slowlog-max-len 128 ,来做限制

 

Info [Replication/CPU/Memory..]

查看redis服务器的信息

 

Config get 配置项

Config set 配置项 值 (特殊的选项,不允许用此命令设置,如slave-of, 需要用单独的slaveof命令来设置)

 

Redis运维时需要注意的参数

1: 内存

# Memory

used_memory:859192 数据结构的空间

used_memory_rss:7634944 实占空间

mem_fragmentation_ratio:8.89 前2者的比例,1.N为佳,如果此值过大,说明redis的内存的碎片化严重,可以导出再导入一次.

2: 主从复制

# Replication

role:slave

master_host:192.168.1.128

master_port:6379

master_link_status:up

 

3:持久化

# Persistence

rdb_changes_since_last_save:0

rdb_last_save_time:1375224063

 

4: fork耗时

#Status

latest_fork_usec:936 上次导出rdb快照,持久化花费微秒

注意: 如果某实例有10G内容,导出需要2分钟,

每分钟写入10000次,导致不断的rdb导出,磁盘始处于高IO状态.

 

 

5: 慢日志

config get/set slowlog-log-slower-than

CONFIG get/SET slowlog-max-len

slowlog get N 获取慢日志

 

运行时更改master-slave

修改一台slave(设为A)为new master

1) 命令该服务不做其他redis服务的slave

命令: slaveof no one

2) 修改其readonly为yes

 

其他的slave再指向new master A

1) 命令该服务为new master A的slave

命令格式 slaveof IP port

所有内容皆为个人总结或转载别人的文章,只为学习技术。 若您觉得文章有用,欢迎点赞分享! 若无意对您的文章造成侵权,请您留言,博主看到后会及时处理,谢谢。

 

 

 

#########sample 4  在2个节点安装1主一从3哨兵 模式 redis-5.0.8

 https://www.cnblogs.com/caonw/p/11907038.html

https://www.jianshu.com/p/e71c5a3a7162

https://www.cnblogs.com/kevincaptain/p/10606456.html

10.10.1..11、10.10.1.12


要求如下:
reids 的密码设置为amas
端口master(node1)/slave(node2) 配7000,三个哨兵nodes 7001(node1) 7002(node1) 7003(node2)
2个节点安装10.10.1.11、10.10.1.12
软件介质:10.241.28.223 /home/sunline/env/

3.2 redis安装及配置 (以下命令 使用root/cradmin 用户 运行)

3.2.1 上传压缩包
将redis-5.0.8.tar压缩包上传到Linux环境下;(生产服务器:57.12.43.11,57.12.43.12)
3.2.2 解压
将上传的redis-5.0.8.tar.gz压缩包文件进行解压
sudo cp redis-5.0.8.tar.gz /usr/local/redis-5.0.8.tar.gz
cd /usr/local/
tar zxvf redis-5.0.8.tar.gz

cd /usr/local/redis-5.0.8


解压命令:tar -zxvf redis-5.0.8.tar.gz
3.2.3 查看gcc环境
查看Linux环境是否有安装过gcc环境,这里是必须要安装gcc环境,不然接下来make编译时会报错;(因编译过程需要GCC环境)
查看是否安装了gcc环境,要是没有安装,则可以下载gcc压缩包进行安装,具体详细安装步骤,可以网上查看下;(行方服务器一般默认是安装了)
命令:gcc --version

3、安装依赖包和建用户授权
yum install gcc -y
yum install ruby -y
yum -y install gcc gcc-c++ make
yum -y install *atomic*

3.2.4 编译和安装
进入到刚解压后的redis文件夹里面,进行编译和安装
相关命令:
make 编译
(如果失败了,需要重新安装目录,在编译)
make install (安装到该目录,如果安装到其他目录则用命令 make install PREFIX=/usr/local/redis )

3.2.5 集群部署
以上步骤就安装完redis,接下来进行集群部署,行内要求集群部署满足一主一从三哨兵模式;

4.创建redis 数据目录 日志目录(3台)

 


3.2.6修改配置文件相关属性以及启动 (以下命令 使用appuser 用户 运行)

su - appuser

##part 1 主从部分

3.2.6.1 主-redis (生产服务器:57.12.43.11)

mkdir -p /os/redis-5.0.8/{redis-master,sentinel_1,sentinel_2,conf,redis-log,sentinel-log}
#/home/appuser/redis-5.0.8/redis-master
chown -R appuser:users /os/redis-5.0.8
chmod -R 755 /os/redis-5.0.8

cd /os/redis-5.0.8/redis-master
vi redis.conf
bind10.10.1.11
port 7000
requirepass amas
daemonize yes
dir /os/redis-5.0.8/redis-master
maxmemory 3gb
logfile "/os/redis-5.0.8/redis-log/redis.log"
masterauth amas

(解释如下新建文件夹redis-5.0.8/ redis-master 新增文件redis.conf,文件内容如下:
bind10.10.1.11 #本机ip
port 7000 #端口
requirepass amas #redis密码
daemonize yes #默认值
dir /os/redis-5.0.8/redis-master #输出目录,一般就该目录下redis-5.0.8/ redis-master
maxmemory 3gb #默认值
logfile "/os/redis-5.0.8/redis-log/redis.log" )
masterauth amas

将执行文件放到bin目录下
cp /usr/local/redis-5.0.8/src/redis-server /usr/local/bin/redis-server
cp /usr/local/redis-5.0.8/src/redis-cli /usr/local/bin/redis-cli
cp /usr/local/redis-5.0.8/src/redis-sentinel /usr/local/bin/redis-sentinel
chmod 755 /usr/local/bin/redis-server
chmod 755 /usr/local/bin/redis-cli
chmod 755 /usr/local/bin/redis-sentinel

启动:../src/redis-server redis.conf
或者
redis-server redis.conf

查看是否启动成功 ps -ef | grep redis 7000为主

3.2.6.2 从-redis(生产服务器:57.12.43.12)
mkdir -p /os/redis-5.0.8/{redis-slaveof,sentinel_3,conf,redis-log,sentinel-log}
#/home/appuser/redis-5.0.8/redis-master
chown -R appuser:users /os/redis-5.0.8
chmod -R 755 /os/redis-5.0.8
将执行文件放到bin目录下
cp /usr/local/redis-5.0.8/src/redis-server /usr/local/bin/redis-server
cp /usr/local/redis-5.0.8/src/redis-cli /usr/local/bin/redis-cli
cp /usr/local/redis-5.0.8/src/redis-sentinel /usr/local/bin/redis-sentinel
chmod 755 /usr/local/bin/redis-server
chmod 755 /usr/local/bin/redis-cli
chmod 755 /usr/local/bin/redis-sentinel

su - appuser
cd /os/redis-5.0.8/redis-slaveof
vi slaveof-7000.conf
新建文件夹redis-5.0.8/redis-slaveof 新增文件slaveof-7000.conf,文件内容如下:
bind10.10.1.12
port 7000
daemonize yes
dir /os/redis-5.0.8/redis-slaveof
logfile "/os/redis-5.0.8/redis-log/redis.log"
maxmemory 3gb
masterauth amas
slaveof10.10.1.11 7000 #主地址
requirepass amas #redis密码

 

 


启动命令:../src/redis-server slaveof-7000.conf
或者
redis-server slaveof-7000.conf

###查看是否启动成功
ps -ef | grep redis 7000为从

####查看集群是否正常[root@redis-node1 ~]#
redis-cli -h10.10.1.11 -p 7000 -a amas
192.168.1.114:6379> AUTH amas
192.168.1.115:6379> info replication
# Replication
role:master
connected_slaves:1

192.168.1.115:6379> set k1 v1
OK
192.168.1.115:6379> exit


redis-cli -h10.10.1.12 -p 7000 -a amas
192.168.1.114:6379> AUTH amas
OK
192.168.1.115:6379> info replication
role:slave
master_host:57.12.43.11
master_port:7000

192.168.1.114:6379> get k1
"v1"
192.168.1.114:6379> exit


###part 2 哨兵部分

3.2.6.3 哨兵1-redis(生产服务器:57.12.43.11)
cd /os/redis-5.0.8/sentinel_1

:新建文件夹redis-5.0.8/sentinel_1 新增文件sentinel-7001.conf
文件内容如下:
bind10.10.1.11
port 7001
daemonize yes
logfile "/os/redis-5.0.8/sentinel-log/redis-sentinel.log"
dir "/os/redis-5.0.8/sentinel_1"
sentinel deny-scripts-reconfig yes
sentinel monitor mymaster10.10.1.11 7000 2 #Sentinel监听redis主节点 #2 :表示多少个Sentinel认为redis主节点失效时,才算真正失效
# Generated by CONFIG REWRITE
maxclients 4064
# master或slave多长时间(默认30秒)不能使用后标记为s_down状态。
sentinel down-after-milliseconds mymaster 1500
sentinel failover-timeout mymaster 30000 #配置失效时间,master会被这个sentinel主观地认为是不可用的,单位毫秒
sentinel auth-pass mymaster amas

#哨兵程序自动添加的部分
sentinel config-epoch mymaster 0
sentinel leader-epoch mymaster 28829
sentinel known-sentinel mymaster10.10.1.11 7002 #Sentine 2 ###除了当前的哨兵还有哪些监控的哨兵
sentinel known-sentinel mymaster10.10.1.12 7003 #Sentine 3
sentinel current-epoch 28829


启动命令:../src/redis-sentinel sentinel-7001.conf
或者
redis-sentinel sentinel-7001.conf

查看是否启动成功 ps -ef | grep redis 7001为从

3.2.6.4 哨兵2-redis(生产服务器:57.12.43.11)
cd cd /os/redis-5.0.8/sentinel_2
新建文件夹redis-5.0.8/sentinel_2 新增文件 sentinel-7002.conf
文件内容如下:
bind10.10.1.11
port 7002
daemonize yes
dir "/os/redis-5.0.8/sentinel_2"
logfile "/os/redis-5.0.8/sentinel-log/redis-sentine2.log"
sentinel deny-scripts-reconfig yes
sentinel monitor mymaster10.10.1.11 7000 2 #Sentinel监听redis主节点
sentinel down-after-milliseconds mymaster 1500
sentinel auth-pass mymaster amas
# Generated by CONFIG REWRITE
maxclients 4064
sentinel failover-timeout mymaster 30000
sentinel config-epoch mymaster 0
sentinel leader-epoch mymaster 28829
sentinel known-slave mymaster10.10.1.12 7000
sentinel known-sentinel mymaster10.10.1.11 7001
sentinel known-sentinel mymaster10.10.1.12 7003
sentinel current-epoch 28829

启动命令:../src/redis-sentinel sentinel-7002.conf
或者
redis-sentinel sentinel-7002.conf

查看是否启动成功 ps –ef | grep redis 7002为从

3.2.6.5 哨兵3-redis(生产服务器:57.12.43.12)

cd cd /os/redis-5.0.8/sentinel_3
新建文件夹redis-5.0.8/ sentinel_3 新增文件 sentinel-7003.conf,文件内容如下:
bind10.10.1.12
port 7003
daemonize yes
dir "/os/redis-5.0.8/sentinel_3"
logfile "/os/redis-5.0.8/sentinel-log/redis-sentine3.log"
sentinel deny-scripts-reconfig yes
sentinel monitor mymaster10.10.1.11 7000 2
sentinel down-after-milliseconds mymaster 1500
sentinel auth-pass mymaster amas
# Generated by CONFIG REWRITE
maxclients 4064
sentinel failover-timeout mymaster 30000
sentinel config-epoch mymaster 0
sentinel leader-epoch mymaster 28826
sentinel known-slave mymaster10.10.1.12 7000
sentinel known-sentinel mymaster10.10.1.11 7001
sentinel known-sentinel mymaster10.10.1.11 7002
sentinel current-epoch 28826


启动命令:../src/redis-sentinel sentinel-7003.conf
或者
redis-sentinel sentinel-7003.conf

查看是否启动成功 ps -ef | grep redis 7003为从


####查看集群哨兵工作是否正常
1. redis-cli -h10.10.1.11 -p 7000 -a amas info Replication

# Replication
role:master
connected_slaves:1


2.kill 11上的redis服务 顺利切换到12上


3.redis-cli -h10.10.1.12 -p 7000 -a amas info Replication
role:master
connected_slaves:0

 

######加入启动redis 命令到用户的home 目录下

vi /home/appuser/redis_readme.txt

# node 1 start
cd /os/redis-5.0.8/redis-master
redis-server redis.conf


cd /os/redis-5.0.8/sentinel_1
redis-sentinel sentinel-7001.conf


cd /os/redis-5.0.8/sentinel_2
redis-sentinel sentinel-7002.conf


##node 2
cd /os/redis-5.0.8/redis-slaveof
redis-server slaveof-7000.conf

cd /os/redis-5.0.8/sentinel_3
redis-sentinel sentinel-7003.conf

 


############附录:
##########问题1
[root@samasapp03 redis-5.0.8]# make
cd src && make all
make[1]: Entering directory '/usr/local/redis-5.0.8/src'
LINK redis-server
/usr/bin/ld: cannot find -latomic
collect2: error: ld returned 1 exit status
make[1]: *** [Makefile:228: redis-server] Error 1
make[1]: Leaving directory '/usr/local/redis-5.0.8/src'
make: *** [Makefile:6: all] Error 2

方法
yum -y install *atomic*
https://bbs.huaweicloud.com/forum/thread-59424-1-1.html


#########问题2
从库上显示 replication master_link_status:down
57.12.43.12:7000> info replication
# Replication
role:slave
master_host:57.12.43.11
master_port:7000
master_link_status:down
master_last_io_seconds_ago:-1
master_sync_in_progress:0
slave_repl_offset:1
master_link_down_since_seconds:1637287403
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:0ad884d9a39e19328c541a9890d33b3eb1e9aeb2
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0

redis log
tail -f /os/redis-5.0.8/redis-log/redis.log
875158:S 19 Nov 2021 10:15:56.668 * Retrying with SYNC...
875158:S 19 Nov 2021 10:15:56.668 # MASTER aborted replication with an error: NOAUTH Authentication required.
875158:S 19 Nov 2021 10:15:57.670 * Connecting to MASTER10.10.1.11:7000
875158:S 19 Nov 2021 10:15:57.670 * MASTER <-> REPLICA sync started
875158:S 19 Nov 2021 10:15:57.670 * Non blocking connect for SYNC fired the event.
875158:S 19 Nov 2021 10:15:57.670 * Master replied to PING, replication can continue...
875158:S 19 Nov 2021 10:15:57.670 * (Non critical) Master does not understand REPLCONF listening-port: -NOAUTH Authentication required.
875158:S 19 Nov 2021 10:15:57.670 * (Non critical) Master does not understand REPLCONF capa: -NOAUTH Authentication required.
875158:S 19 Nov 2021 10:15:57.670 * Partial resynchronization not possible (no cached master)
875158:S 19 Nov 2021 10:15:57.670 # Unexpected reply to PSYNC from master: -NOAUTH Authentication required.
875158:S 19 Nov 2021 10:15:57.670 * Retrying with SYNC...
875158:S 19 Nov 2021 10:15:57.671 # MASTER aborted replication with an error: NOAUTH Authentication required.

方法:
从库配置文件加入masterauth amas


########问题3

redis log 出现如下告警

895916:M 19 Nov 2021 09:42:44.175 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.

903980:M 19 Nov 2021 10:57:58.059 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.


方法:

#######问题4
redis cluster中info replication主节点没有获取到从节点信息
显然,主从关系还是没对应好。
再查看一对主从节点,master不可以查看到slave,而slave可以查看到master


解决办法:
给这6个服务实例的配置文件,加上如下两个参数,即可解决这个问题

master上启用安全认证,requirepass
slave连接口令,masterauth
服务实例的验证口令尽量配置成一样的

 

###########问题5
启动 sentinel 报错如下

*** FATAL CONFIG FILE ERROR ***
Reading the configuration file, at line 6
>>> 'sentinel deny-scripts-reconfig yes'
sentinel directive while not in sentinel mode

方法:
redis-sentinel /opt/redis/conf/sentinel.conf

 

posted @ 2021-05-30 08:56  feiyun8616  阅读(582)  评论(0编辑  收藏  举报