在Redis中,我们在使用相关命令时实际上是在默认的数据库中执行的,因为在Redis中是有很多个数据库的,不同数据库与数据库之间数据是不同步的,那么在这一篇中, 我们主要了解一下Redis中数据库相关知识。
数据库管理
在Redis中主要提供了dbsize、select、flushdb/flushall等命令,下面我们分别介绍这些命令的详细使用。
1、切换数据库
select index
我们知道在其它的关系型数据库例如Mysql中也是支持有多个数据库,并且基本上关系型数据库都是以名字来判断数据库是否重复的。而在Redis中则不同,Redis是通过数字来判断的数据库是否重复的。在Redis中默认的数据库为0,而默认最大的数据库为16个。
select命令可以选择切换的数据库,因为Redis中默认是从0开始的,所以默认最大为15。如果超过这个范围Redis则会提示报错。并且在Redis中不同数据库与数据库之间,数据是不同步,也就是没有任何关系,也就是如上图所示。下面我们用更形象的图来表示Redis不同数据库之间的存储。如下图所示:
既然Redis中有多个数据库的功能,那我们在日常开发中,是不是可以将生产中的数据存储到指定的数据库中,然后将测试环境中的数据存储到另一个数据库中呢?答案就是在技术上当然是可以,但在业务上基本不会这么做,因为我们在平常使用关系型数据库例如Mysql我们也不会将生产环境中的数据和测试环境中的数据存储在同一个数据库实例中,而基本都是将生产环境和测试环境分离。那么Redis也是一样的。除此之外,在Redis以后在做分布式时,只允许使用0号数据库,也就是说越高版本的Redis已经越来越弱化这个功能了。只是为了兼容而没有将多数据库的功能去掉而已。下面我们分析一下,为什么Redis要弱化这个多数据库的功能。
如我们在实际的开发中,如果想使用多个数据库的功能时,可以向之前文章中介绍的那样,部署多个实例,也就是不同的端口来实现多数据库的功能。
2.flushdb/flushall 看名字我们应该能猜到flushdb和flushall都是清空Redis数据库的命令。它们的区别就是前者是清空当前数据库的中的数据,而后者是清除所有数据库中的数据。下面我们看具体的事例。
下面我们看一下flushdb/flushall的注意事项: