Redis为什么默认建立16个数据库

46次阅读
没有评论

共计 1576 个字符,预计需要花费 4 分钟才能阅读完成。

这篇文章主要讲解了“Redis 为什么默认建立 16 个数据库”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着丸趣 TV 小编的思路慢慢深入,一起来研究和学习“Redis 为什么默认建立 16 个数据库”吧!

在实际项目中 Redis 常被应用于做缓存,分布式锁、消息队列等。但是在搭建配置好 Redis 服务器后很多朋友应该会发现和有这样的疑问,为什么 Redis 默认建立了 16 个数据库?

在实际项目中 Redis 常被应用于做缓存,分布式锁、消息队列等。但是在搭建配置好 Redis 服务器后很多朋友应该会发现和有这样的疑问,为什么 Redis 默认建立了 16 个数据库,如下图所示。

一、16 个数据库的由来

Redis 是一个字典结构的存储服务器,一个 Redis 实例提供了多个用来存储数据的字典,客户端可以指定将数据存储在哪个字典中。这与在一个关系数据库实例中可以创建多个数据库类似 (如下图所示),所以可以将其中的每个字典都理解成一个独立的数据库。

以 MySQL 实例为例

Redis 默认支持 16 个数据库,可以通过调整 Redis 的配置文件 redis/redis.conf 中的 databases 来修改这一个值,设置完毕后重启 Redis 便完成配置。

客户端与 Redis 建立连接后会默认选择 0 号数据库,不过可以随时使用 SELECT
命令更换数据库。

#  切库  
redis  SELECT 1 #  默认 0 号 db,切换为 1 号 db 
OK 
redis [1]   GET username #  从 1 号库中获取  username 
(nil)

在实际项目中则可以通过以 Redis 配置文件的形式指定数据库,如下图所示

二、正确理解 Redis 的“数据库”概念

由于 Redis 不支持自定义数据库的名字,所以每个数据库都以编号命名。开发者则需要自己记录存储的数据与数据库的对应关系。另外 Redis 也不支持为每个数据库设置不同的访问密码,所以一个客户端要么可以访问全部数据库,要么全部数据库都没有权限访问。但是,要正确地理解 Redis 的“数据库”概念这里不得不提到一个
命令:

#  清空一个 Redis 实例中所有数据库中的数据  
redis 127.0.0.1:6379  FLUSHALL

该命令可以清空实例下的所有数据库数据,这与我们所熟知的关系型数据库所不同。关系型数据库多个库常用于存储不同应用程序的数据,且没有方式可以同时清空实例下的所有库数据。所以对于 Redis 来说这些 db 更像是一种命名空间,且不适宜存储不同应用程序的数据。比如可以使用 0 号数据库存储某个应用生产环境中的数据,使用 1 号数据库存储测试环境中的数据,但不适宜使用 0 号数据库存储 A 应用的数据而使用 1 号数据库 B 应用的数据,不同的应用应该使用不同的 Redis 实例存储数据。Redis 非常轻量级,一个空 Redis 实例占用的内在只有 1M 左右,所以不用担心多个 Redis 实例会额外占用很多内存。

三、集群情况下是否支持一个实例多个 db?

要注意以上所说的都是基于单体 Redis 的情况。而在集群的情况下不支持使用 select 命令来切换 db,因为 Redis 集群模式下只有一个 db0。再扩展一些集群与单机 Reids 的区别,感兴趣的朋友可以去查阅相关的资料深入理解,这里就不做讨论了。

key 批量操作支持有限:例如 mget、mset 必须在一个 slot

Key 事务和 Lua 支持有限:操作的 key 必须在一个节点

key 是数据分区的最小粒度:不支持 bigkey 分区

不支持多个数据库:集群模式下只有一个 db0

复制只支持一层:不支持树形复制结构

感谢各位的阅读,以上就是“Redis 为什么默认建立 16 个数据库”的内容了,经过本文的学习后,相信大家对 Redis 为什么默认建立 16 个数据库这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是丸趣 TV,丸趣 TV 小编将为大家推送更多相关知识点的文章,欢迎关注!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-15发表,共计1576字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)