熟悉关系型数据库的同学都知道关系数据库有数据库、表的概念,正如我们的mysql,需要先创建数据库,然后创建表,那么redis有没有数据库呢?
答案当然是有的。
多数据库配置
留意redis配置文件( /etc/redis/6379.conf
)的同学可能看到里边有这么一个配置:
# Set the number of databases. The default database is DB 0, you can select
# a different one on a per-connection basis using SELECT <dbid> where
# dbid is a number between 0 and 'databases'-1
databases 16
databases
是的,就是它!
意思就是说,设置redis的数据库数量,默认使用0号库,可以 使用 SELECT <dbid>
切换数据库,默认有 16
个数据库,即 0~15
号库。
Redis下,数据库是由一个整数索引标识,而不是由一个数据库名称。
每个数据库都有属于自己的空间,不必担心之间的key冲突。
flushdb命令清除数据,只会清除当前的数据库下的数据,不会影响到其他数据库。
切换数据库
Select 命令用于切换到指定的数据库,数据库索引号 index 用数字值指定,以 0 作为起始索引值。
# redis-cli
127.0.0.1:6379> AUTH 123456
OK
127.0.0.1:6379> SET name zhangsan # 默认使用0号库
OK
127.0.0.1:6379> GET name
"zhangsan"
127.0.0.1:6379> SELECT 1 # 切换至1号库
OK
127.0.0.1:6379[1]> GET name # 注意前面的[1]就表示当前是1号库,每个数据库互相独立,0号库设置的name,在1号库是不存在的。
(nil)
127.0.0.1:6379[1]> SET name lisi
OK
127.0.0.1:6379[1]> GET name
"lisi"
FLUSHDB,清除当前库的数据
127.0.0.1:6379[1]> FLUSHDB
OK
127.0.0.1:6379[1]> keys *
(empty list or set)
127.0.0.1:6379[1]> SELECT 0
OK
127.0.0.1:6379> keys *
1) "name"
FLUSHDB是清除当前数据库的所有数据库。
FLUSHALL命令会清除这个实例的数据,小心使用哦!