redis 中如何切换db
Posted F
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了redis 中如何切换db相关的知识,希望对你有一定的参考价值。
一台服务器上都快开启200个redis实例了,看着就崩溃了。这么做无非就是想让不同类型的数据属于不同的应用程序而彼此分开。
那么,redis有没有什么方法使不同的应用程序数据彼此分开同时又存储在相同的实例上呢?就相当于MySQL数据库,不同的应用程序数据存储在不同的数据库下。
redis下,数据库是由一个整数索引标识,而不是由一个数据库名称。默认情况下,一个客户端连接到数据库0。
redis配置文件中下面的参数来控制数据库总数:
/etc/redis/redis.conf
文件中,有个配置项 databases = 16 //默认有16个数据库
可以通过下面的命令来切换到不同的数据库下
随后,所有的命令将使用数据库3,直到你明确切换到另一个数据库下
每个数据库都有属于自己的空间,不必担心之间的key冲突。
127.0.0.1:6379[2]> select 0 OK 127.0.0.1:6379> set a db0 OK 127.0.0.1:6379> select 1 OK 127.0.0.1:6379[1]> set a db1 OK 127.0.0.1:6379> select 2 OK 127.0.0.1:6379[1]> set a db2 OK
不同的数据库下,相同的key取到各自的值。
127.0.0.1:6379[2]> select 0 OK 127.0.0.1:6379> set a db0 OK 127.0.0.1:6379> select 1 OK 127.0.0.1:6379[1]> set a db1 OK 127.0.0.1:6379> select 2 OK 127.0.0.1:6379[1]> set a db2 OK 127.0.0.1:6379[1]> select 0 OK 127.0.0.1:6379> get a "db0" 127.0.0.1:6379> select 1 OK 127.0.0.1:6379[1]> get a "db1" 127.0.0.1:6379[1]> select 2 OK 127.0.0.1:6379[2]> get a "db2"
flushdb命令清除数据,只会清除当前的数据库下的数据,不会影响到其他数据库。
127.0.0.1:6379[2]> select 0 OK 127.0.0.1:6379> set a db0 OK 127.0.0.1:6379> select 1 OK 127.0.0.1:6379[1]> set a db1 OK 127.0.0.1:6379[1]> get a "db1" 127.0.0.1:6379[1]> flushdb OK 127.0.0.1:6379[1]> get a (nil) 127.0.0.1:6379[1]> select 0 OK 127.0.0.1:6379> get a "db0" 127.0.0.1:6379>
flushall命令会清除这个实例的数据。在执行这个命令前要格外小心。
127.0.0.1:6379[1]> select 0 OK 127.0.0.1:6379> get a "db0" 127.0.0.1:6379> select 1 OK 127.0.0.1:6379[1]> get a "db1" 127.0.0.1:6379[1]> select 2 OK 127.0.0.1:6379[2]> get a "db2" 127.0.0.1:6379[2]> flushall OK 127.0.0.1:6379[2]> select 0 OK 127.0.0.1:6379> get a (nil) 127.0.0.1:6379> select 1 OK 127.0.0.1:6379[1]> get a (nil) 127.0.0.1:6379[1]> select 2 OK 127.0.0.1:6379[2]> get a (nil) 127.0.0.1:6379[2]>
数据库的数量是可以配置的,默认情况下是16个。
redis没有提供任何方法来关联标识不同的数据库。因此,需要你来跟踪什么数据存储到哪个数据库下。
因此上面的快开启200个实例的场景,可以使用不同的数据库来存储,而不必开启如此那么多的实例。
以上是关于redis 中如何切换db的主要内容,如果未能解决你的问题,请参考以下文章