今天连公司数据库,发现db达到255个,不知道为什么,其实是256个从0开始的

redis多数据库 redis database数量_redis多数据库

而我自己的只有16个

redis多数据库 redis database数量_redis_02

我是windows的,linux是一样的,目录结构如图:

redis多数据库 redis database数量_缓存_03

编辑redis.conf配置文件,搜索database,可以找到:

databases 16

如图:

redis多数据库 redis database数量_Redis_04

通过看简单描述,我们大概知道: 最后一句话,意思是,初始的DB是0,(默认的是16),你能自己选择一个数字来作为数据库的大小,但是不能为0,大概就是这样…我们可以通过修改16,来达到你想要的=-=…

注意:启动需要指定的配置文件。可以通过命令行启动,在当前文件夹下启动命令行 redis-server.exe ./redis.conf;

我写了个bat文件: start redis-server.exe redis.conf还是在当前文件就好了…


redis 多数据库 database配置项解析

读到redis配置文件的时候,碰到databases 16我不明白了,然后开启百度和google的搜索介绍之门,下面把我读取文章吸取到的解释介绍如下。

官方的解释:可用数据库数,默认值为16,默认数据库为0。

刚开始咋一看没有明白,可用数据库的个数,redis一个实例不就是一个数据库吗。怎么还可以配置多个数据库。这是因为Redis下,数据库是由一个整数索引标识,而不是由一个数据库名称,可以直白的理解为配置不同的的库,占用的是不同的内存空间,不同的库之间相互不影响,独立工作,只不过都是借宿在这个Redis实例上面生存的空间。

Redis的配置文件中默认的数据库总数为16个,默认它是一个下标基于0到15的数组:

databases 16

redis多数据库 redis database数量_redis多数据库_05


应用场景

为什么Redis会有这么一个设计场景呢,我想这是一个类似多租户的概念。就像虚拟化和容器一样,你可以虚拟出多台机器和多个容器来,充分利用物理机器的硬件配置来work,达到服务器性能最大的利用率,各个虚拟机和容器之间单独运行,互补影响和干扰,我想Redis的多数据库也是同样的道理。

场景:

redis多数据库 redis database数量_缓存_06

你或许希望一个Redis应用(一个Redis server,或者一个Redis server/slaves群组)能为多个客户端应用服务,如果这些客户端应用都各自为营,向Redis写数据的话,很可能会导致key冲突(我们知道Redis是一个key-value结构的存储结构)。为了将不同的应用分开,你可以用不同的前缀去区分(eg: app_i:xx:yy, app_ii:xx:yy)。这时候你就不用这么麻烦,就可以直接利用Redis分割这些key的机制:Database的概念。

每个数据库都有属于自己的空间,不必担心之间的key冲突。

redis多数据库 redis database数量_缓存_07

不同的数据库下,相同的key取到各自的值。

redis多数据库 redis database数量_Redis_08

flushdb命令清除数据,只会清除当前的数据库下的数据,不会影响到其他数据库。flushall命令短链接会清除这个实例的数据,在执行这个命令之前要考虑清楚,我这里只是实验环境,无所谓了。

数据库的数量是可以配置的,默认情况下是16个。修改redis.conf下的databases指令:

databases 64

redis没有提供任何方法来关联标识不同的数据库。因此,需要你来跟踪什么数据存储到哪个数据库下或者什么业务的数据存在哪个库里面,这个我觉得可以用Zookeeper来解决。