为什么Redis默认使用16个数据库?

来源:SapphireCoder https://www.toutiao.com/a6752317753866060299简介:在实际项目中,Redis通常用作缓存,分布式锁,消息队列等。

但是在设置和配置Redis服务器之后,许多朋友应该找到并对于为什么Redis默认情况下会建立16个数据库存在疑问,如下图所示。

1. 16个数据库的来源Redis是具有字典结构的存储服务器。

Redis实例提供了用于存储数据的多个字典。

客户端可以指定存储数据的词典。

这类似于在关系数据库实例中创建多个数据库(如下图所示),因此可以将其中的每个词典理解为一个独立的数据库。

Redis默认支持16个数据库。

您可以通过调整Redis配置文件redis / redis.conf中的数据库来修改此值。

设置完成后,重新启动Redis以完成配置。

客户端与Redis建立连接后,默认情况下它将选择数据库0,但是您可以随时使用SELECT命令替换数据库。

#& nb剪切库redis& gt; SELECT 1#& nbsp;默认0 db,切换到1 db OKredis& nbsp; [1]& n>实际获取GET用户名# 从数据库1获取用户名(nil)在项目中,可以以Redis配置文件的形式指定数据库,如下图所示。

2.正确理解Redis的“数据库”。

概念。

由于Redis不支持自定义数据库名称,因此每个数据库都用一个数字命名。

开发人员需要记录存储的数据和数据库之间的对应关系。

另外,Redis不支持为每个数据库设置不同的访问密码,因此客户端可以访问所有数据库,或者所有数据库均无权访问它们。

但是,为了正确地理解Redis的“数据库”,需要对Redis进行修改。

概念,我不得不在这里提到一条命令:#在Redis实例中清除所有数据库中的数据redis 127.0.0.1:6379> FLUSHALL该命令可以清除实例下的所有数据库数据,这与我们所知道的关系数据库不同。

具有多个库的关系数据库通常用于存储来自不同应用程序的数据,并且无法同时清除一个实例下的所有库数据。

因此,对于Redis而言,这些数据库更像是一种名称空间,不适合存储不同应用程序的数据。

例如,您可以使用No.0数据库在某个应用程序生产环境中存储数据,并使用No.1数据库在测试环境中存储数据,但是不适合使用No.0数据库来存储特定应用程序环境中的数据。

一个应用程序并使用1号数据库B。

数据是不同的。

应用程序应使用不同的Redis实例来存储数据。

Redis非常轻巧,一个空的Redis实例在内部仅占大约1M,因此无需担心多个Redis实例会占用很多额外的内存。

3.在集群的情况下,一个实例是否支持多个数据库?应该注意的是,以上是基于单一Redis情况的。

对于集群,不支持使用select命令来切换db,因为Redis集群模式下只有一个db0。

为了扩大群集和独立Reids之间的某些差异,有兴趣的朋友可以转到相关材料中进行深入了解,在此不再赘述。

密钥批处理操作支持是有限的:例如,mget和mset必须在插槽中密钥事务和Lua支持是有限的:操作的密钥必须在一个节点上。

关键是数据分区的最小粒度:不支持bigkey分区不支持多个数据库:仅在集群模式下db0复制仅支持一个级别:不支持树复制结构。

第四,摘要Redis实例默认情况下具有16个数据库。

由于它不支持独立的数据库命名,因此以dbX的形式命名。

可以通过修改配置文件的数据库值来设置数据库的默认数量。

对db的正确理解应该是“命名空间”,多个应用程序不应该使用相同的Redis不同的库,但是一个应用程序对应于一个Redis实例,并且可以使用不同的数据库在不同的环境中存储数据。

最后,请注意,Redis集群中只有db0,并且不支持多个db。

免责声明:本文内容经21ic授权后发布,版权归原作者所有。

该平台仅提供信息存储服务。

本文仅代表作者的个人观点,并不代表该平台的立场。

如有任何疑问,请与我们联系,谢谢!