Redis中flushdb和flushall命令的区别
Redis中flushdb和flushall命令都可以清空数据库,不过需要注意以下几点:
- flushdb命令只会清除当前数据库中的数据,而不会影响其他数据库
- flushall会清除Redis实例所有数据库(0-15)的缓存数据,执行时候需要小心
1. flushdb命令
- flushdb命令只会清除当前数据库中的数据,而不会影响其他数据库
- 同步执行方式,会导致服务器阻塞
- Redis4.0提供了异步的选项 flushdb async
flushdb async, 实际数据库清空操作将放在后台线程中以异步方式进行,flushdb就不会再阻塞服务器了
假设数据库0存了3个键,数据库1存了2个键,别的数据库都没数据。在数据库1中执行flushdb命令,分别查看数据库中的键的个数,数据库0中键的个数是3,数据库1中键的个数变成0了。
127.0.0.1:6379> select 0
OK
127.0.0.1:6379> set a 1
OK
127.0.0.1:6379> set b 2
OK
127.0.0.1:6379> set c 3
OK
127.0.0.1:6379> dbsize
(integer) 3
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> set a 2
OK
127.0.0.1:6379[1]> set b 1
OK
127.0.0.1:6379[1]> dbsize
(integer) 2
127.0.0.1:6379[1]> flushdb
OK
127.0.0.1:6379[1]> dbsize
(integer) 0
127.0.0.1:6379[1]> select 0
OK
127.0.0.1:6379> dbsize
(integer) 3
2. flushall命令
- flushall会清除Redis实例所有数据库(0-15)的缓存数据,执行flushall命令前要格外小心
- 同步方式执行,会导致服务器阻塞
- Redis4.0提供了异步的选项 flushall async
flushall async 命令将以异步方式在后线程中执行所有实际的数据库清空操作,flushall命令将不会阻塞服务器了
假设数据库0存了3个键,数据库1存了2个键,别的数据库都是没数据。在数据库1中执行flushall命令,分别查看数据库中的键的个数,数据库0中键的个数变成0,数据库1中键的个数变成0。
127.0.0.1:6379[1]> select 0
OK
127.0.0.1:6379> dbsize
(integer) 3
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> dbsize
(integer) 0
127.0.0.1:6379[1]> set a 1
OK
127.0.0.1:6379[1]> set b 2
OK
127.0.0.1:6379[1]> dbsize
(integer) 2
127.0.0.1:6379[1]> flushall
OK
127.0.0.1:6379[1]> dbsize
(integer) 0
127.0.0.1:6379[1]> select 0
OK
127.0.0.1:6379> dbsize
(integer) 0
3.使用到的命令介绍
3.1 select命令
select命令是用来切换到指定的数据库。select db
127.0.0.1:6379> select 0
OK
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> select 2
OK
127.0.0.1:6379[2]> select 15
OK
3.2 dbsize命令
dbsize命令是用来查看当前数据库中key的数量
127.0.0.1:6379[1]> select 0
OK
127.0.0.1:6379> dbsize
(integer) 3
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> dbsize
(integer) 2