目录
提起 database,我们常常想到 MySQL,一个 MySQL 服务器上可以有很多个 database,一个 database 可以有很多个表,MySQl 也可以所心所欲地创建、删除数据库。对于 Redis 来说,我们上来就是学 key - value,没怎么接触过 database 的操作,其实 Redis 也是有 database 的相关操作的,只不过不像 MYSQL 那样随意,Redis 的数据库是现成的,用户不能创建新的数据库,也不能删除已有的数据库,Redis 默认提供了 16 个数据库,编号 0 - 15,数据库之间数据隔离,相互之间不影响。默认情况下使用的就是 0 号。
Redis 提供了几个面向 Redis 数据库的操作,分别是 dbsize 、select 、flushdb 、flushall 命令。
select
切换数据库

数据库的切换使用编号就行,前面也说了 0 - 15。

可以看到数据库之间数据是相互隔离的,数据库默认是 0,是 0 的话前面就没有 [序号] 这样的形式,其余的都有,数据库的范围是 0 - 15,select 的序号超过了就报错。

Redis 中虽然支持多数据库,但随着版本的升级,其实不是特别建议使用多数据库特性。如果真的需要完全隔离的两套键值对,更好的做法是维护多个 Redis 实例,而不是在一个Redis 实例中维护多数据库。这是因为本身 Redis 并没有为多数据库提供太多的特性,其次无论是否有多个数据库,Redis 都是使用单线程模型,所以彼此之间还是需要排队等待命令的执行。同时多数据库还会让开发、调试和运维工作变得复杂。所以实践中,始终使用数据库 0 其实是一个很好的选择。
flushdb / flushall
清除数据库,区别在于 flushdb 只清除当前数据库,flushall 会清楚所有数据库。


这里的 [ASYNC | SYNC] 代表指令的执行是同步还是异步,同步会阻塞,异步不会,指令默认的执行操作根据是否开启 AOF 持久化决定,所以如果真的需要,就明确指定。

dbsize
返回当前 database 中的 key 数量。

