Redis 常用命令

Redis 常用命令

  • Redis 运维常用的命令

    • 不同数据类型的操作

      • del

      • flushdb

      • 过期时间

RDB AOF这两个快照是运维保证持久化

3.6.1 CONFIG

config 命令用于查看当前 redis 配置、以及不重启更改 redis 配置等,用于在动态的情况下修改 redis 的配置,不用去配置文件。

3.6.1.1 更改最大内存

# 通过 config set 修改 maxmemory 内存为 8589934592
127.0.0.1:6379> CONFIG SET maxmemory 8589934592
OK
127.0.0.1:6379> CONFIG GET maxmemory
1) "maxmemory"
2) "8589934592"

3.6.1.2 设置链接密码

# 通过 CONFIG 修改 requirepass 请求密码 123456
127.0.0.1:6379> CONFIG SET requirepass 123456
OK

# 通过 CONFIG 查看 requirepass 请求密码已经修改为了 123456
127.0.0.1:6379> CONFIG GET requirepass
1) "requirepass"
2) "123456"

3.6.1.3 获取当前所有配置

127.0.0.1:6379> CONFIG GET *

3.6.2 info

显示当前节点 redis 运行状态信息,这个状态中决定了最大内存和占用的最大。以及redis链接数各种redis的系统信息等等。

127.0.0.1:6379> info

3.6.3 SELECT

切换数据库,等于MySQL 的 use DBNAME 指令。这是使用 select 1将切换到了1这个库,默认是 0 为第一个数据库

# 通过 select 切换到 1 数据库中
127.0.0.1:6379> SELECT 1
OK
127.0.0.1:6379[1]>      # 后面的标记变为了 1

3.6.4 keys

查看当前库下的所有key: KEYS * 显示当前库中所有的key

# 通过 KEYS 命令查看当前数据库下所有的 key
127.0.0.1:6379> KEYS *
 1) "zset1"
 2) "key2"
 3) "B"
 4) "num"
 5) "list1"
 6) "list2"
 7) "name"
 8) "zhang"
 9) "list3"
10) "key1"
11) "channel1"
12) "lsti2"
13) "lsti1"
14) "paihangbang"
15) "set1"
16) "A"
17) "hash1"
18) "zste2"

3.6.5 BGSAVE

手动在后台执行RDB持久化操作 。这里只让他直接执行了一个快照。

3.6.5.1 与 redis 交互实现 RDB 备份

1、在 redis 终端中输入 BGSAVE 手动执行 RDB 持久化操作

# 输入 BGSAVE 命令开始快照
127.0.0.1:6379> BGSAVE
Background saving started

2、一旦执行完了bgsave以后就会在我们配置文件中定义的redis快照目录下生成一个rdb后缀的快照文件。然后我们可以通过使用mv修改这个rdb文件的名称这样就实现了多个快照文件的共存

[16:25:55 root@redis-server ~]#ll /apps/redis/data/
-rw-r--r-- 1 redis redis  645 Oct  9 16:24 redis_6379.rdb

3、这就共存了两个 rdb 的快照文件。我们通常会写个脚本。一半会半个小时让他快照一次。

# 进入到我们自定义的 redis 数据存储目录下
[16:29:06 root@redis-server ~]#cd /apps/redis/data/
# 将 redis_6379.rdb 文件通过 MV 移动的方式实现备份
[16:29:08 root@redis-server data]#mv redis_6379.rdb redis_6379.rdb.bck

# 再次登录至 redis
[16:29:14 root@redis-server data]#redis-cli -a 123456
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
# 通过 BGSAVE 是心啊 RDB 快照
127.0.0.1:6379> BGSAVE
Background saving started
127.0.0.1:6379> exit

# 通过 ll 查看就会发现当前目录下有两个 RDB 快照文件
[16:29:37 root@redis-server data]#ll
total 12
-rw-r--r-- 1 redis redis 2078 Oct  9 15:45 appendonly_6379.aof
-rw-r--r-- 1 redis redis  645 Oct  9 16:29 redis_6379.rdb
-rw-r--r-- 1 redis redis  645 Oct  9 16:29 redis_6379.rdb.bck

3.6.5.2 不与 redis 交互下实现 RDB 备份

直接redis-cli -a 12345 -h 127.0.0.1 bgsave 就可以在外面不进入redis 的情况下做快照。而我们可以通过这种方式创建一个脚本,在加一个周期任务计划,让他在某些特定时间下做一次快照。

[16:29:39 root@redis-server data]#redis-cli -a 123456 -h 127.0.0.1 bgsave

3.6.5.3 通过脚本实现自动化 RDB 备份

1、编写一个自动快照的脚本。

[16:54:39 root@redis-server data]#vim rdb.back.sh
#♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥
# File Name: rdb.back.sh
# Author: 老张
# mail: as953027255@qq.com
# http://1717zgy.com/
# Created Time: Fri 09 Oct 2020 04:37:26 PM CST
#♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥
#!/bin/bash
DATE=`date +%F-%H-%M-%S`
S_PATH="/apps/redis/data/redis_6379.rdb"
D_PATH="/apps/redis/data/${DATE}redis_6379.rdb"

# 在 redis 终端执行 bgsave 参数实现备份
redis-cli -a 123456 -h 127.0.0.1 bgsave
if [ $? -eq 0 ];then
    sleep 3
    mv ${S_PATH} ${D_PATH}
else
    echo "没有备份成功" && mail -s "rdb error at ${DATE} as953027255@qq.com"
fi 

2、执行脚本就将快照文件改为了当前时间的命名的文件。这样实现了多个rdb文件的共存

# 运行脚本
[16:55:13 root@redis-server data]#bash rdb.back.sh

# 通过查看就会发现多了一个以时间命名的 .rdb 文件
[16:55:56 root@redis-server data]#ll
total 16
-rw-r--r-- 1 redis redis  645 Oct  9 16:55 2020-10-09-16-55-53redis_6379.rdb

3.6.5.4 还原 rdb 快照

然后需要还原快照就要到 redis 的配置文件中将 dbfilename 这个参数后面改为我们的快照的名称即可。然后重启redis 服务就能够恢复快照。假如 AOF 开启的话就会优先还原 AOF 的快照。AOF默认是自动做快照所以我们就不用去关AOF

1、修改 redis 配置文件

# 打开 redis 配置文件
[16:55:58 root@redis-server data]#vim /apps/redis/etc/redis.conf 

# 找到 dbfilename 这行将 dbfilename 后面跟上我们在脚本中的自定义的快照文件
dbfilename 2020-10-09-16-55-53redis_6379.rdb

2、重启 redis

[17:02:08 root@redis-server data]#systemctl restart redis

3.6.6 DBSIZE

返回当前库下的所有 key 数量 DBSIZE 显示当前库中所有 key 数量。

# 通过 DBSIZE 查看当前数据库 key 数量
127.0.0.1:6379> DBSIZE
(integer) 18            # 当前数据库 18 个 key 数量

3.6.7 FLUSHDB(工作中最好不要执行)

强制清空当前库中的所有key。这是对当前库的强制清除

# 清空当前库中所有 key
127.0.0.1:6379> FLUSHDB
OK

# 在使用 keys * 查看提示空没有任何 key
127.0.0.1:6379> KEYS *
(empty array)
点赞