006、Redis的Key通用操作
本文最后更新于 66 天前,其中的信息可能已经过时,如有错误请发送邮件到wuxianglongblog@163.com

Redis的Key通用操作

一.Redis支持的数据类型

    Redis支持多种类型的数据结构,如字符串(strings),散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets)与范围查询,bitmaps,hyperloglogs和地理空间(geospatial)索引半径查询。 

    我们的笔记中会主要介绍的到常用的数据类型,如:string,hash,list,set,sortset等。

image-20210728174844910

二.Redis的KEY通用操作

1.使用"KEYS"指令查看已存在所有键的名字,了解即可,生产环境中禁用。

[root@redis201.oldboyedu.com ~]# redis-cli -a oldboyedu2021 -n 13 --raw
127.0.0.1:6379[13]> KEYS *  # 查询当前数据库Redis的所有KEY,生产环境中禁用,因为生产环境中可能有上千万个KEY哟~由于这个查询操作对数据库可能会造成不小的压力,而且查询的结果可能也并不符合咱们的预期
address
age
name
127.0.0.1:6379[13]> 
127.0.0.1:6379[13]> KEYS n*  # 查看以"n"开头的KEY名称。
name
127.0.0.1:6379[13]> 
127.0.0.1:6379[13]> QUIT
[root@redis201.oldboyedu.com ~]# 

2.使用"TYPE"指令返回键所存储值的类型

[root@redis201.oldboyedu.com ~]# redis-cli -a oldboyedu2021 --raw
127.0.0.1:6379> KEYS *
name
stars
127.0.0.1:6379> 
127.0.0.1:6379> TYPE name
string
127.0.0.1:6379> 
127.0.0.1:6379> TYPE stars
string
127.0.0.1:6379> 
127.0.0.1:6379> QUIT
[root@redis201.oldboyedu.com ~]# 

3.使用"TTL/PTTL"指令以"秒/毫秒"为单位返回KEY的生命周期,如果返回值为"-1"说明未设置过期时间。

[root@redis201.oldboyedu.com ~]# redis-cli -a oldboyedu2021 --raw
127.0.0.1:6379> KEYS *
name
stars
127.0.0.1:6379> 
127.0.0.1:6379> SET myname oldboyedu
OK
127.0.0.1:6379> 
127.0.0.1:6379> TYPE myname
string
127.0.0.1:6379> 
127.0.0.1:6379> TTL myname  # 以秒为单位返回变量的生命周期,如果返回值为"-1"说明未设置过期时间。
-1
127.0.0.1:6379> 
127.0.0.1:6379> PTTL myname  # 以毫秒为单位返回变量的生命周期,如果返回值为"-1"说明未设置过期时间。
-1
127.0.0.1:6379> 
127.0.0.1:6379> KEYS *
name
myname
stars
127.0.0.1:6379> 
127.0.0.1:6379> QUIT
[root@redis201.oldboyedu.com ~]# 

4.使用"EXPIRE/PEXPIRE"指令以秒\毫秒设定KEY的生命周期

[root@redis201.oldboyedu.com ~]# redis-cli -a oldboyedu2021 --raw
127.0.0.1:6379> KEYS *
name
myname
stars
127.0.0.1:6379> 
127.0.0.1:6379> TTL myname
-1
127.0.0.1:6379> 
127.0.0.1:6379> EXPIRE myname 30  # 设置KEY的过期时间为30秒。
1
127.0.0.1:6379> 
127.0.0.1:6379> TTL myname
26
127.0.0.1:6379> 
127.0.0.1:6379> TTL myname
23
127.0.0.1:6379> 
127.0.0.1:6379> TTL myname  # 以秒的形式显示剩余多长时间过期。
5
127.0.0.1:6379> 
127.0.0.1:6379> PTTL myname  # 以毫秒的形式显示剩余多长时间过期。
3339
127.0.0.1:6379> 
127.0.0.1:6379> PTTL myname
976
127.0.0.1:6379> 
127.0.0.1:6379> PTTL myname
-2
127.0.0.1:6379> 
127.0.0.1:6379> PTTL myname
-2
127.0.0.1:6379> KEYS *
name
stars
127.0.0.1:6379> 
127.0.0.1:6379> PEXPIRE name 30000  # 设置KEY的过期时间为30000毫秒(即30秒)。
1
127.0.0.1:6379> 
127.0.0.1:6379> PTTL name
21008
127.0.0.1:6379> 
127.0.0.1:6379> PTTL name
16003
127.0.0.1:6379> 
127.0.0.1:6379> TTL name
13
127.0.0.1:6379> 
127.0.0.1:6379> TTL name
12
127.0.0.1:6379> 
127.0.0.1:6379> TTL name
9
127.0.0.1:6379> 
127.0.0.1:6379> PTTL name
7828
127.0.0.1:6379> 
127.0.0.1:6379> 
127.0.0.1:6379> TTL name
5
127.0.0.1:6379> 
127.0.0.1:6379> 
127.0.0.1:6379> TTL name
4
127.0.0.1:6379> 
127.0.0.1:6379> TTL name
-2
127.0.0.1:6379> 
127.0.0.1:6379> PTTL name
-2
127.0.0.1:6379> 
127.0.0.1:6379> KEYS *
stars
127.0.0.1:6379> 
127.0.0.1:6379> QUIT
[root@redis201.oldboyedu.com ~]# 

    温馨提示:
        生产环境中建议不要大批量的设置过期时间,比如有100w个KEY设置相同的过期时间,这意味着整个集群在某一时刻会有大量的创建和删除操作,这很容易导致集群出现"雪崩"现象。
        综上所述,假设我们对100w个KEY做批量的过期时间设置,先不说Redis集群能否同时扛得住这种大批量读写。
        先说说Redis的后端能够抗住,比如100w的KEY失效后,会去后端拉取最新的数据,这意味着同一时刻会将100w个KEY从后端数据库拉取到Redis集群中(这得开发写程序实现)。

5.使用"PERSIST"指令取消KEY的生命周期设置

[root@redis201.oldboyedu.com ~]# redis-cli -a oldboyedu2021 --raw
127.0.0.1:6379> KEYS *
stars
127.0.0.1:6379> 
127.0.0.1:6379> TTL stars
-1
127.0.0.1:6379> 
127.0.0.1:6379> EXPIRE stars 30  # 设置starts的KEY生命周期为30秒
1
127.0.0.1:6379> 
127.0.0.1:6379> TTL stars
29
127.0.0.1:6379> 
127.0.0.1:6379> TTL stars
25
127.0.0.1:6379> 
127.0.0.1:6379> PERSIST stars  # 在starts的KEY未达到指定的过期时间时,我们是可以取消KEY的生命周期设置哟~
1
127.0.0.1:6379> 
127.0.0.1:6379> TTL stars  # 取消后,再次查看KEY的生命周期发现并没有过时。
-1
127.0.0.1:6379> 
127.0.0.1:6379> KEYS *
stars
127.0.0.1:6379> 
127.0.0.1:6379> QUIT
[root@redis201.oldboyedu.com ~]# 

6.使用"EXISTS"指令检查KEY是否存在,若不存在则返回0,如已经存在则返回1。

[root@redis201.oldboyedu.com ~]# redis-cli -a oldboyedu2021 --raw
127.0.0.1:6379> KEYS *
stars
127.0.0.1:6379> 
127.0.0.1:6379> EXISTS name  # 检查KEY是否存在,若不存在则返回0,如已经存在则返回1。
0
127.0.0.1:6379> 
127.0.0.1:6379> SET name oldboyedu
OK
127.0.0.1:6379> 
127.0.0.1:6379> EXISTS name
1
127.0.0.1:6379> 
127.0.0.1:6379> KEYS *
name
stars
127.0.0.1:6379> 
127.0.0.1:6379> QUIT
[root@redis201.oldboyedu.com ~]# 

7.使用"RENAME"指令变更KEY名

[root@redis201.oldboyedu.com ~]# redis-cli -a oldboyedu2021 --raw
127.0.0.1:6379> 
127.0.0.1:6379> KEYS *
name
stars
127.0.0.1:6379> 
127.0.0.1:6379> GET name  # 在改KEY名称之前,查看其存储的值。
oldboyedu
127.0.0.1:6379> 
127.0.0.1:6379> RENAME name myname  # 修改KEY的名称
OK
127.0.0.1:6379> 
127.0.0.1:6379> KEYS *
myname
stars
127.0.0.1:6379> 
127.0.0.1:6379> GET name  # 由于原来的name被重命名了,因此再次查看原来的KEY返回的是空串。

127.0.0.1:6379> 
127.0.0.1:6379> 
127.0.0.1:6379> GET myname
oldboyedu
127.0.0.1:6379> 
127.0.0.1:6379> QUIT
[root@redis201.oldboyedu.com ~]# 

8.使用"DEL"指令删除指定的KEY

[root@redis201.oldboyedu.com ~]# redis-cli -a oldboyedu2021 --raw
127.0.0.1:6379> KEYS *
myname
stars
127.0.0.1:6379> 
127.0.0.1:6379> DEL myname
1
127.0.0.1:6379> 
127.0.0.1:6379> KEYS *
stars
127.0.0.1:6379> 
127.0.0.1:6379> QUIT
[root@redis201.oldboyedu.com ~]# 

三.Redis服务管理命令

1.使用"INFO [section]"指令查看Redis服务器资源使用的详细信息,若不指定section,则查看所有的section信息。

[root@redis201.oldboyedu.com ~]# redis-cli -a oldboyedu2021 -n 13 --raw
127.0.0.1:6379[13]> INFO  # 若不指定section,则查看所有的section信息。
# Server
redis_version:3.2.13
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:2a6fbd16b3c9080c
redis_mode:standalone
os:Linux 3.10.0-1160.el7.x86_64 x86_64
arch_bits:64
multiplexing_api:epoll
gcc_version:4.8.5
process_id:4536
run_id:ef5ced7114802e96fb547eb0f46bf00de78d5e80
tcp_port:6379
uptime_in_seconds:141641
uptime_in_days:1
hz:10
lru_clock:4035343
executable:/root/redis-server
config_file:/oldboyedu/softwares/redis/conf/redis.conf

# Clients
connected_clients:1
client_longest_output_list:0
client_biggest_input_buf:0
blocked_clients:0

# Memory
used_memory:822304
used_memory_human:803.03K
used_memory_rss:7950336
used_memory_rss_human:7.58M
used_memory_peak:1197120
used_memory_peak_human:1.14M
total_system_memory:3953963008
total_system_memory_human:3.68G
used_memory_lua:37888
used_memory_lua_human:37.00K
maxmemory:0
maxmemory_human:0B
maxmemory_policy:noeviction
mem_fragmentation_ratio:9.67
mem_allocator:jemalloc-4.0.3

# Persistence
loading:0
rdb_changes_since_last_save:0
rdb_bgsave_in_progress:0
rdb_last_save_time:1614647296
rdb_last_bgsave_status:ok
rdb_last_bgsave_time_sec:0
rdb_current_bgsave_time_sec:-1
aof_enabled:1
aof_rewrite_in_progress:0
aof_rewrite_scheduled:0
aof_last_rewrite_time_sec:-1
aof_current_rewrite_time_sec:-1
aof_last_bgrewrite_status:ok
aof_last_write_status:ok
aof_current_size:359711
aof_base_size:4350
aof_pending_rewrite:0
aof_buffer_length:0
aof_rewrite_buffer_length:0
aof_pending_bio_fsync:0
aof_delayed_fsync:0

# Stats
total_connections_received:121
total_commands_processed:3874
instantaneous_ops_per_sec:0
total_net_input_bytes:514304
total_net_output_bytes:1364884
instantaneous_input_kbps:0.00
instantaneous_output_kbps:0.00
rejected_connections:0
sync_full:0
sync_partial_ok:0
sync_partial_err:0
expired_keys:0
evicted_keys:0
keyspace_hits:259
keyspace_misses:6
pubsub_channels:0
pubsub_patterns:0
latest_fork_usec:520
migrate_cached_sockets:0

# Replication
role:master
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0

# CPU
used_cpu_sys:102.92
used_cpu_user:31.28
used_cpu_sys_children:0.13
used_cpu_user_children:0.01

# Cluster
cluster_enabled:0

# Keyspace
db13:keys=3,expires=0,avg_ttl=0
127.0.0.1:6379[13]> 
127.0.0.1:6379[13]> INFO memory  # 仅查看memory section的信息。
# Memory
used_memory:821328
used_memory_human:802.08K
used_memory_rss:7950336
used_memory_rss_human:7.58M
used_memory_peak:1197120
used_memory_peak_human:1.14M
total_system_memory:3953963008
total_system_memory_human:3.68G
used_memory_lua:37888
used_memory_lua_human:37.00K
maxmemory:0
maxmemory_human:0B
maxmemory_policy:noeviction
mem_fragmentation_ratio:9.68
mem_allocator:jemalloc-4.0.3
127.0.0.1:6379[13]> 
127.0.0.1:6379[13]> INFO cpu  # 仅查看cpu section的信息。
# CPU
used_cpu_sys:103.18
used_cpu_user:31.28
used_cpu_sys_children:0.13
used_cpu_user_children:0.01
127.0.0.1:6379[13]> 
127.0.0.1:6379[13]> INFO Replication  # 仅查看Replication section的信息。
# Replication
role:master
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
127.0.0.1:6379[13]> 
127.0.0.1:6379[13]> QUIT
[root@redis201.oldboyedu.com ~]# 

课堂练习1: 
    请获取当前redis的连接数量。

参考案例:
redis-cli -h 172.200.1.106 -a 666666 info Clients | awk -F ':' '$1~/connected_clients/{print $2}'
redis-cli -h 172.200.1.106 -a 666666 info Clients | awk -F ':' 'NR==2{print $2}'

课堂练习2:
    获取数据库,该库的KEY数量以及KEY的过期时间个数。格式为:"dbN:keys:expires"。

参考案例:
redis-cli -h 172.200.1.106 -a 666666 info Keyspace | awk -F '[,:=]'  '{print $1":"$3":"$5 }' | grep -v "Keyspace"

2.使用"CLIENT LIST"指令查看当前的客户端连接信息

[root@redis201.oldboyedu.com ~]# redis-cli -a oldboyedu2021 -n 13 --raw
127.0.0.1:6379[13]> CLIENT LIST  # 查看当前客户端连接
id=125 addr=127.0.0.1:45010 fd=7 name= age=22 idle=22 flags=N db=13 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=command
id=126 addr=127.0.0.1:45012 fd=8 name= age=15 idle=15 flags=N db=13 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=command
id=127 addr=127.0.0.1:45014 fd=9 name= age=10 idle=10 flags=N db=13 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=command
id=128 addr=127.0.0.1:45016 fd=10 name= age=2 idle=0 flags=N db=13 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=32768 obl=0 oll=0 omem=0 events=r cmd=client
127.0.0.1:6379[13]> 
127.0.0.1:6379[13]> QUIT
[root@redis201.oldboyedu.com ~]# 

3.使用"CLIENT KILL"指令主动断开客户端连接

[root@redis201.oldboyedu.com ~]# redis-cli -a oldboyedu2021 -n 13 --raw
127.0.0.1:6379[13]> CLIENT LIST
id=125 addr=127.0.0.1:45010 fd=7 name= age=123 idle=123 flags=N db=13 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=command
id=126 addr=127.0.0.1:45012 fd=8 name= age=116 idle=116 flags=N db=13 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=command
id=127 addr=127.0.0.1:45014 fd=9 name= age=111 idle=111 flags=N db=13 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=command
id=129 addr=127.0.0.1:45018 fd=10 name= age=2 idle=0 flags=N db=13 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=32768 obl=0 oll=0 omem=0 events=r cmd=client
127.0.0.1:6379[13]> 
127.0.0.1:6379[13]> CLIENT KILL 127.0.0.1:45014  # 主动断开"127.0.0.1:45014"客户端连接
OK
127.0.0.1:6379[13]> 
127.0.0.1:6379[13]> CLIENT LIST
id=125 addr=127.0.0.1:45010 fd=7 name= age=138 idle=138 flags=N db=13 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=command
id=126 addr=127.0.0.1:45012 fd=8 name= age=131 idle=131 flags=N db=13 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=command
id=129 addr=127.0.0.1:45018 fd=10 name= age=17 idle=0 flags=N db=13 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=32768 obl=0 oll=0 omem=0 events=r cmd=client
127.0.0.1:6379[13]> 
127.0.0.1:6379[13]> QUIT
[root@redis201.oldboyedu.com ~]# 

4.使用"CONFIG GET"指令获取Redis实例的配置信息

[root@redis201.oldboyedu.com ~]# redis-cli -a oldboyedu2021 -n 13 --raw
127.0.0.1:6379[13]> CONFIG GET *  # 查看Redis实例所有的配置信息,配置项和其值分别用2行存储,若未设置则默认为空行哟~
dbfilename
mydump.rdb
requirepass
oldboyedu2021
masterauth

unixsocket

logfile
/oldboyedu/logs/redis/redis.log
pidfile
/var/run/redis.pid
slave-announce-ip

maxmemory
0
maxmemory-samples
5
timeout
0

...

appendonly
yes
dir
/oldboyedu/data/redis
save
900 1 300 10 60 10000
client-output-buffer-limit
normal 0 0 0 slave 268435456 67108864 60 pubsub 33554432 8388608 60
unixsocketperm
0
slaveof

notify-keyspace-events

bind
172.200.1.201 127.0.0.1
127.0.0.1:6379[13]> 
127.0.0.1:6379[13]> CONFIG GET a*  # 查看以"a"开头的配置信息
auto-aof-rewrite-percentage
100
auto-aof-rewrite-min-size
67108864
activerehashing
yes
aof-rewrite-incremental-fsync
yes
aof-load-truncated
yes
appendfsync
everysec
appendonly
yes
127.0.0.1:6379[13]> 
127.0.0.1:6379[13]> CONFIG GET bind  # 进查看某个配置
bind
172.200.1.201 127.0.0.1
127.0.0.1:6379[13]> 
127.0.0.1:6379[13]> QUIT
[root@redis201.oldboyedu.com ~]# 

5.使用"DBSIZE"指令查看当前数据库的键值对数量

[root@redis201.oldboyedu.com ~]# redis-cli -a oldboyedu2021 -n 13 --raw
127.0.0.1:6379[13]> KEYS *
address
age
name
127.0.0.1:6379[13]> 
127.0.0.1:6379[13]> DBSIZE  # 查看当前数据库的键值对数量
3
127.0.0.1:6379[13]> 
127.0.0.1:6379[13]> SET blog https://www.cnblogs.com/oldboyedu/
OK
127.0.0.1:6379[13]> 
127.0.0.1:6379[13]> SET game LOL
OK
127.0.0.1:6379[13]> 
127.0.0.1:6379[13]> KEYS *
age
blog
name
address
game
127.0.0.1:6379[13]> 
127.0.0.1:6379[13]> DBSIZE
5
127.0.0.1:6379[13]> 
127.0.0.1:6379[13]> QUIT
[root@redis201.oldboyedu.com ~]# 

6.使用"SELECT"指令切换到指定的数据库,类似于MySQL的"USE"指令

[root@redis201.oldboyedu.com ~]# redis-cli -a oldboyedu2021 -n 13 --raw
127.0.0.1:6379[13]> KEYS *
age
blog
name
address
game
127.0.0.1:6379[13]> 
127.0.0.1:6379[13]> SELECT 1  # 切换到编号为1的数据库
OK
127.0.0.1:6379[1]> 
127.0.0.1:6379[1]> SELECT 11
OK
127.0.0.1:6379[11]> 
127.0.0.1:6379[11]> SELECT 15
OK
127.0.0.1:6379[15]> 
127.0.0.1:6379[15]> 
127.0.0.1:6379[15]> SELECT 0  # 切换到编号为0的数据库,若连接Redis不指定数据库时,默认连接的就是0号数据库哟~
OK
127.0.0.1:6379> 
127.0.0.1:6379> SELECT 16  # 需要注意的是,Redis默认有16个数据库,对应的编号为0-15,因此我们想要切换到编号为16的数据库此时是失败的!
ERR invalid DB index

127.0.0.1:6379> 
127.0.0.1:6379[15]> QUIT
[root@redis201.oldboyedu.com ~]# 

温馨提示:
    如果想要自定义redis的个数,请修改"databases"的参数即可,默认为16.

7.使用"MONITOR"指令监控实时命令

    (1)终端1执行的命令:
        [root@redis201.oldboyedu.com ~]# redis-cli -a oldboyedu2021 -n 13 --raw
        127.0.0.1:6379[13]> 
        127.0.0.1:6379[13]> MONITOR  # 执行该指令后当前终端会被阻塞,但其他终端执行的命令都会被打印到当前终端中
        OK

        1614653780.755058 [0 127.0.0.1:45042] "AUTH" "oldboyedu2021"
        1614653780.755121 [0 127.0.0.1:45042] "SELECT" "13"
        1614653780.757507 [13 127.0.0.1:45042] "COMMAND"
        1614653787.022958 [13 127.0.0.1:45042] "KEYS" "*"

    (2)终端2执行的命令:
        [root@redis201.oldboyedu.com ~]# redis-cli -a oldboyedu2021 -n 13 --raw
        127.0.0.1:6379[13]> 
        127.0.0.1:6379[13]> KEYS *
        age
        blog
        name
        address
        game
        127.0.0.1:6379[13]> 

    温馨提示:
        生产环境中,如果我们想要记录Redis执行命令的记录用于后续日志审计,可以执行以下命令:
            [root@redis201.oldboyedu.com ~]# redis-cli -a oldboyedu2021 -n 13 -h 172.200.1.201 -p 6379 --raw MONITOR >> /tmp/redis.log &
            [1] 19079
            [root@redis201.oldboyedu.com ~]# 
            [root@redis201.oldboyedu.com ~]# 
            [root@redis201.oldboyedu.com ~]# tail -10f /tmp/redis.log 
            OK
            1614653763.947586 [0 127.0.0.1:45040] "AUTH" "oldboyedu2021"
            1614653763.948008 [0 127.0.0.1:45040] "SELECT" "13"
            1614653763.949747 [13 127.0.0.1:45040] "COMMAND"
            1614653780.755058 [0 127.0.0.1:45042] "AUTH" "oldboyedu2021"
            1614653780.755121 [0 127.0.0.1:45042] "SELECT" "13"
            1614653780.757507 [13 127.0.0.1:45042] "COMMAND"
            1614653787.022958 [13 127.0.0.1:45042] "KEYS" "*"

8.使用"SHUTDOWN"指令关闭Redis实例

    (1)进入redis-cli交互式字符界面关闭Redis:
        [root@redis201.oldboyedu.com ~]# ss -ntl
        State       Recv-Q Send-Q                                                 Local Address:Port                                                                Peer Address:Port              
        LISTEN      0      128                                                                *:6379                                                                           *:*                  
        LISTEN      0      128                                                                *:22                                                                             *:*                  
        LISTEN      0      128                                                             [::]:6379                                                                        [::]:*                  
        LISTEN      0      128                                                             [::]:22                                                                          [::]:*                  
        [root@redis201.oldboyedu.com ~]# 
        [root@redis201.oldboyedu.com ~]# 
        [root@redis201.oldboyedu.com ~]# redis-cli 
        127.0.0.1:6379> SHUTDOWN
        13125:M 25 Feb 19:27:00.343 # User requested shutdown...
        13125:M 25 Feb 19:27:00.343 * Saving the final RDB snapshot before exiting.
        13125:M 25 Feb 19:27:00.344 * DB saved on disk
        13125:M 25 Feb 19:27:00.344 # Redis is now ready to exit, bye bye...
        not connected> 
        not connected> quit
        [root@redis201.oldboyedu.com ~]# 
        [root@redis201.oldboyedu.com ~]# ss -ntl
        State       Recv-Q Send-Q                                                 Local Address:Port                                                                Peer Address:Port              
        LISTEN      0      128                                                                *:22                                                                             *:*                  
        LISTEN      0      128                                                             [::]:22                                                                          [::]:*                  
        [root@redis201.oldboyedu.com ~]# 

    (2)直接在redis-cli字符界面安装Redis:
        [root@redis201.oldboyedu.com ~]# ss -ntl
        State       Recv-Q Send-Q                                                 Local Address:Port                                                                Peer Address:Port              
        LISTEN      0      128                                                                *:6379                                                                           *:*                  
        LISTEN      0      128                                                                *:22                                                                             *:*                  
        LISTEN      0      128                                                             [::]:6379                                                                        [::]:*                  
        LISTEN      0      128                                                             [::]:22                                                                          [::]:*                  
        [root@redis201.oldboyedu.com ~]# 
        [root@redis201.oldboyedu.com ~]# 
        [root@redis201.oldboyedu.com ~]# redis-cli shutdown
        14154:M 25 Feb 19:29:07.636 # User requested shutdown...
        14154:M 25 Feb 19:29:07.636 * Saving the final RDB snapshot before exiting.
        14154:M 25 Feb 19:29:07.638 * DB saved on disk
        14154:M 25 Feb 19:29:07.638 # Redis is now ready to exit, bye bye...
        [1]+  完成                  redis-server
        [root@redis201.oldboyedu.com ~]# 
        [root@redis201.oldboyedu.com ~]# 
        [root@redis201.oldboyedu.com ~]# ss -ntl
        State       Recv-Q Send-Q                                                 Local Address:Port                                                                Peer Address:Port              
        LISTEN      0      128                                                                *:22                                                                             *:*                  
        LISTEN      0      128                                                             [::]:22                                                                          [::]:*                  
        [root@redis201.oldboyedu.com ~]# 

9.使用"FLUSHDB/FLUSHALL"指令删除所有的KEY(生产环境中慎用!了解即可)

9.1创建测试数据

[root@redis201.oldboyedu.com ~]# redis-cli -a oldboyedu2021 -n 1 --raw  # 我们使用"-n"参数可以指定进入的数据库编号,若不指定默认进入的是编号为"0"的数据库
127.0.0.1:6379[1]> KEYS *

127.0.0.1:6379[1]> set name jason
OK
127.0.0.1:6379[1]> 
127.0.0.1:6379[1]> set age 18
OK
127.0.0.1:6379[1]> 
127.0.0.1:6379[1]> KEYS *
age
name
127.0.0.1:6379[1]> 
[root@redis201.oldboyedu.com ~]# 
[root@redis201.oldboyedu.com ~]# redis-cli -a oldboyedu2021 -n 2 --raw
127.0.0.1:6379[2]> KEYS *

127.0.0.1:6379[2]> 
127.0.0.1:6379[2]> set address beijing
OK
127.0.0.1:6379[2]> 
127.0.0.1:6379[2]> set game lol
OK
127.0.0.1:6379[2]> 
127.0.0.1:6379[2]> KEYS *
address
game
127.0.0.1:6379[2]> 
127.0.0.1:6379[2]> quit
[root@redis201.oldboyedu.com ~]# 
[root@redis201.oldboyedu.com ~]# redis-cli -a oldboyedu2021 -n 3 --raw  # 我们使用"--raw"选项,是便于命令行支持中文输出
127.0.0.1:6379[3]> KEYS *

127.0.0.1:6379[3]> 
127.0.0.1:6379[3]> set blog https://www.cnblogs.com/oldboyedu/
OK
127.0.0.1:6379[3]> 
127.0.0.1:6379[3]> set name oldboyedu
OK
127.0.0.1:6379[3]> 
127.0.0.1:6379[3]> KEYS *
name
blog
127.0.0.1:6379[3]> 
127.0.0.1:6379[3]> QUIT
[root@redis201.oldboyedu.com ~]# 

温馨提示:
    如果想要修改Redis数据库的个数,可以直接修改"databases"参数值即可。
    如果redis是刚刚初始化,此时可以任意指定大于0的数字即可,比如"databases 3"。
    如果redis已经将数据持久化到本地,且持久化的数据库使用了指定的数据库,比如使用了15号数据库,则我们自定义时需要指定的值大于它。

9.2使用"FLUSHDB"删除当前数据库的所有KEY

[root@redis201.oldboyedu.com ~]# redis-cli -a oldboyedu2021 -n 1 --raw
127.0.0.1:6379[1]> KEYS *
age
name
127.0.0.1:6379[1]> 
127.0.0.1:6379[1]> FLUSHDB  # 默认只删除当前所在数据库的节点。
OK
127.0.0.1:6379[1]> 
127.0.0.1:6379[1]> KEYS *

127.0.0.1:6379[1]> 
127.0.0.1:6379[1]> QUIT
[root@redis201.oldboyedu.com ~]# 
[root@redis201.oldboyedu.com ~]# redis-cli -a oldboyedu2021 -n 2 --raw
127.0.0.1:6379[2]> 
127.0.0.1:6379[2]> KEYS *
address
game
127.0.0.1:6379[2]> 
127.0.0.1:6379[2]> QUIT
[root@redis201.oldboyedu.com ~]# 
[root@redis201.oldboyedu.com ~]# 
[root@redis201.oldboyedu.com ~]# redis-cli -a oldboyedu2021 -n 3 --raw
127.0.0.1:6379[3]> KEYS *
name
blog
127.0.0.1:6379[3]> 
127.0.0.1:6379[3]> QUIT
[root@redis201.oldboyedu.com ~]# 
[root@redis201.oldboyedu.com ~]# 

9.3使用"FLUSHALL"指令删除所有数据库的KEY

[root@redis201.oldboyedu.com ~]# redis-cli -a oldboyedu2021 -n 2 --raw
127.0.0.1:6379[2]> 
127.0.0.1:6379[2]> KEYS *
address
game
127.0.0.1:6379[2]> 
127.0.0.1:6379[2]> QUIT
[root@redis201.oldboyedu.com ~]# 
[root@redis201.oldboyedu.com ~]# 
[root@redis201.oldboyedu.com ~]# redis-cli -a oldboyedu2021 -n 3 --raw
127.0.0.1:6379[3]> KEYS *
name
blog
127.0.0.1:6379[3]> 
127.0.0.1:6379[3]> QUIT
[root@redis201.oldboyedu.com ~]# 
[root@redis201.oldboyedu.com ~]# redis-cli -a oldboyedu2021 -n 1 --raw
127.0.0.1:6379[1]> KEYS *

127.0.0.1:6379[1]> 
127.0.0.1:6379[1]> set name jason
OK
127.0.0.1:6379[1]> 
127.0.0.1:6379[1]> KEYS *
name
127.0.0.1:6379[1]> 
127.0.0.1:6379[1]> FLUSHALL  # 删除所有数据库的KEY信息
OK
127.0.0.1:6379[1]> 
127.0.0.1:6379[1]> KEYS *

127.0.0.1:6379[1]> 
127.0.0.1:6379[1]> QUIT
[root@redis201.oldboyedu.com ~]# 
[root@redis201.oldboyedu.com ~]# redis-cli -a oldboyedu2021 -n 2 --raw
127.0.0.1:6379[2]> 
127.0.0.1:6379[2]> KEYS *

127.0.0.1:6379[2]> 
127.0.0.1:6379[2]> quit
[root@redis201.oldboyedu.com ~]# 
[root@redis201.oldboyedu.com ~]# redis-cli -a oldboyedu2021 -n 3 --raw
127.0.0.1:6379[3]> KEYS *

127.0.0.1:6379[3]> 
127.0.0.1:6379[3]> QUIT
[root@redis201.oldboyedu.com ~]# 
谨此笔记,记录过往。凭君阅览,如能收益,莫大奢望。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇