本文最后更新于 319 天前,其中的信息可能已经过时,如有错误请发送邮件到wuxianglongblog@163.com
Redis的Key通用操作
一.Redis支持的数据类型
Redis支持多种类型的数据结构,如字符串(strings),散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets)与范围查询,bitmaps,hyperloglogs和地理空间(geospatial)索引半径查询。
我们的笔记中会主要介绍的到常用的数据类型,如:string,hash,list,set,sortset等。
二.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 ~]#