看完后,我才明白 Redis 为什么默认 16 个数据库?

redis存储树结构的数据 优点简化设计:只需一个 Redis key 存储每个节点的详细数据,不需要额外的结构来保存子节点。直接存取:可以直接读取和写入节点数据,减少了数据结构的复杂性。缺点一致性维护:在节点增删改操作时,需要确保父子节点数据的一致性,特别是在并发环境下。性能考量:如果节点数目非常多,可能需要优化数据操作和存取性能。通过这样的设计,你可以有效地利用 Redis 来存储和操作树结构数据,同时保持数据的简洁性和高效性。 阅读详情

点击上方“程序猿技术大咖”,关注加群讨论

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

一、16个数据库的由来

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

以MySQL实例为例

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

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

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

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

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

该命令可以清空实例下的所有数据库数据,这与我们所熟知的关系型数据库所不同。关系型数据库多个库常用于存储不同应用程序的数据 ,且没有方式可以同时清空实例下的所有库数据。所以对于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个db,由于不支持自主进行数据库命名所以以dbX的方式命名。默认数据库数量可以修改配置文件的database值来设定。对于db正确的理解应为“命名空间”,多个应用程序不应使用同一个Redis不同库,而应一个应用程序对应一个Redis实例,不同的数据库可用于存储不同环境的数据。最后要注意,Redis集群下只有db0,不支持多db。

喜欢就点个"在看"呗,留言、转发朋友圈

Redis Redis是用C语言开发的一个开源的高性能键值对(key-value)数据库。redis是将数据存放到内存中,由于内容存取速度快所以redis被广泛应用在互联网项目中。 阅读详情

相关推荐

Redis为什么设计多个数据库

上面这段大意就是:我明白这功能可能有它的用途,但遗憾的是我认为在Redis设计中多数据库是我最糟糕的决策……当启动 Redis 服务时,根据配置(默认或用户指定),系统会初始化一个 redisDb 数组,数组的大小就是配置文件中指定的数据库数量,默认为 16。虽然可以创建多个数据库,但所有这些数据库都是彼此独立的,并且数据库之间的数据是完全隔离的。​关于Redis的知识前面已经介绍过很多了,但有个点没有讲,那就是一个Redis的实例并不是只有一个数据库,一般情况下,默认是Databases 0。

飞越蓝天的专栏 734

Redis缓存树形结构

 例如现有如下树形结构: id name path root Root '' 1 Node1 'root/' 11 Node11 'root/1/' ...

yin_zh0522的博客 1万+

GAMIT/GLOBK 10.71在Linux环境下的GNSS数据处理全流程解析(附实战案例)

本文详细解析了在Linux环境下部署和运行GAMIT/GLOBK 10.71进行GNSS数据处理的完整流程。从系统环境配置、软件编译安装、关键表格文件更新,到运行自带示例和实战案例,提供了清晰的步骤与避坑指南,帮助用户掌握这一高精度GNSS数据处理工具的核心使用方法。

kmeans3miner的博客 310

Redis基础知识:redis有16个数据库、redis是单线程的!

核心: redis是将所有的数据全部放在内存中的,所以说使用单线程去操作效率就是最高的,多线程(CPU上下文会切换︰这也是耗时的操作!),对于内存系统来说,如果没有上下文切换,单线程效率就是最高的!明白Redis是很快的,官方表示,Redis是基于内存操作,CPU不是Redis性能瓶颈,Redis的瓶颈是根据机器的内存和网络带宽,既然可以使用单线程来实现,就使用单线程了!Redis是C语言写的,官方提供的数据为100000+的QPS(每秒查询率),完全不比同样是使用key-vale的Memecache差!

dayuiicghaid的博客 6211

安卓逆向实战:用Batch Apktool 3.8.0快速汉化APK的完整流程

本文详细解析了如何使用Batch Apktool 3.8.0进行安卓APK汉化的完整流程,包括环境配置、反编译、资源解析、深度汉化、重构建与签名优化等关键步骤。通过这款集成化逆向工具,开发者可以高效完成APK汉化,提升工作效率。

s1t2u3的博客 1099

yakit 验证码识别 进行webfuzzer

在渗透测试的过程中,我们可能需要对管理员密码进行枚举,或者密码喷洒的时候,遇到验证码就很烦。有没有自动化识别验证码的办法呢?有的,兄弟,有的。验证码的识别率很低,captcha-killer-modified对算术验证码识别正确率非常低,还会识别成乱七八糟的结果,这就非常麻烦。因为你不知道到底是验证码不对,还是密码不对。这是 ddddocr 识别率的问题,如果师傅们找到准确度更高的工具,完全可以替换上去。

Arkmornings的博客 1666

玩转Redis-Lua脚本入门到实战-树形结构存储及查询

《玩转Redis》系列文章 by zxiaofan 系列第【16】篇,Lua脚本入门到实战、调试Lua脚本、树形结构的存储方案、“邻接表”、“路径枚举”、查找部门的所有上级部门。

zxiaofan.com 3526

LDPC码介绍:基础&编码&译码

本博客介绍了LDPC码的基本原理,其中包括校验矩阵的构造、Tanner 图和编译码的基础知识。

渺小的颗星的博客 4309

看完后,我才明白Redis为什么默认16个数据库?

导读:在实际项目中Redis常被应用于做缓存,分布式锁、消息队列等。但是在搭建配置好Redis服务器后很多朋友应该会发现和有这样的疑问,为什么Redis默认建立了16个数据库,如下图所示。 一、16个数据库的由来 Redis是一个字典结构的存储服务器,一个Redis实例提供了多个用来存储数据的字典,客户端可以指定将数据存储在哪个字典中。这与在一个关系数据库实例中可以创建多个数据库类似(如下图所示),所以可以将其中的每个字典都理解成一个独立的数据库。 以MySQL实例为例 Redis默认支..

qfguan的博客 786

你的App合规吗?手把手教你用Camille生成隐私调用报告给老板看

本文详细介绍了如何使用开源工具Camille进行Android App隐私合规检测,并生成高管易懂的隐私调用报告。通过动态插桩技术和多维度分析,Camille能有效识别高风险API调用,并将其映射到具体法律条款,帮助技术团队与法务、产品等非技术部门高效沟通,确保App符合《个保法》等法规要求。

weixin_33726318的博客 424

黑猫带你学eMMC协议第17篇:超详细的eMMC HS200 & HS400讲解

1 前言 1.1 声明 本文依据eMMC JEDEC5.1及个人工作经验整理而成,如有错误请留言。 本文结合eMMC JEDEC5.1协议手册查看效果更佳。 1.2 内容提要 本文大约6000字,主要内容有: 1.什么是emmc hs200/hs400? 2.什么是tuning?tuning的过程又是什么? 3.如何设置才能让emmc进入hs200 mode? 4.如何设置才能让emmc进入hs400 mode? 5.emmc关于HS200/HS400内部结构框图对比。 6.部分个人相关经验总结。

黑猫奥利奥的博客 1万+

不支持: redis_看完后,我才明白Redis为什么默认16个数据库?

www.toutiao.com/a6752317753866060299导读:在实际项目中Redis常被应用于做缓存,分布式锁、消息队列等。但是在搭建配置好Redis服务器后很多朋友应该会发现和有这样的疑问,为什么Redis默认建立了16个数据库,如下图所示。一、16个数据库的由来Redis是一个字典结构的存储服务器,一个Redis实例提供了多个用来存储数据的字典,客户端可以指定将数据存...

weixin_39602737的博客 1090

基于STM32LXXX的模数转换芯片ADC(CMS24AD2001)驱动C程序设计

/ 电压 = (原始值 / 2^23) * Vref (注意:24位有符号数范围为 -2^23 到 2^23-1)//---------------- 硬件端口映射 (请根据实际电路修改) ----------------ADC_SCLK_HIGH();- PGA 放大倍数可选:1、2、4、8、16、32、64、128、256;//---------------- 宏定义操作 -------------------//---------------- 函数声明 -------------------

myron6688的博客 161

mysql清空所有数据_看完后,我才明白 Redis 为什么默认 16 个数据库?

译者:SapphireCoderwww.toutiao.com/a6752317753866060299导读:在实际项目中Redis常被应用于做缓存,分布式锁、消息队列等。但是在搭建配置好Redis服务器后很多朋友应该会发现和有这样的疑问,为什么Redis默认建立了16个数据库,如下图所示。一、16个数据库的由来 Redis是一个字典结构的存储服务器,一个Redis实例提供了多个用来存储...

weixin_39988779的博客 104

【即插即用模块】Mamba篇 | CVPR 2025 | MaIR:新型Mamba扫描方式+通道混洗注意力,全任务涨点!

MaIR是一种新型图像恢复模型,通过嵌套S形扫描策略(NSS)和序列混洗注意力(SSA)改进传统Mamba方法。NSS采用条纹区域划分和S形扫描路径,既保留图像局部性又维持空间连续性;SSA通过通道洗牌和门控机制增强特征聚合。该模块创新性地融合多路径选择性扫描、深度卷积和注意力机制,在保持O(N)计算复杂度的同时,显著提升超分辨率和去噪等任务的性能表现(PSNR提升0.2-0.5dB)。代码实现包含特征洗牌、组卷积等关键操作,适用于高分辨率视觉任务,可作为即插即用组件替代传统自注意力模块。

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 1168

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

redis key命名规范_看完后,我才明白Redis为什么默认16个数据库?

www.toutiao.com/a6752317753866060299导读:在实际项目中Redis常被应用于做缓存,分布式锁、消息队列等。但是在搭建配置好Redis服务器后很多朋友应该会发现和有这样的疑问,为什么Redis默认建立了16个数据库,如下图所示。一、16个数据库的由来Redis是一个字典结构的存储服务器,一个Redis实例提供了多个用来存储数据的字典,客户端可以指定将数据存...

weixin_39867327的博客 379

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Redis切换database及如何设置database个数

今天连公司数据库,发现db达到255个,不知道为什么,其实是256个从0开始的 而我自己的只有16个 我是windows的,linux是一样的,目录结构如图: 编辑redis.conf配置文件,搜索database,可以找到: databases 16 如图: 通过看简单描述,我们大概知道: 最后一句话,意思是,初始的DB是0,(默认的是16),你能自己选择一个数字来作为数据库的大小,但是不能为0,大概就是这样…我们可以通过修改16,来达到你想要的=-=… 注意:启动需要指定的

z69183787的专栏 7012

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Redis入门到超神 - 02 Redis为什么默认16个数据库

1、看视频进行系统学习这几年的Crud经历,让我明白自己真的算是菜鸡中的战斗机,也正因为Crud,导致自己技术比较零散,也不够深入不够系统,所以重新进行学习是很有必要的。我差的是系统知识,差的结构框架和思路,所以通过视频来学习,效果更好,也更全面。关于视频学习,个人可以推荐去B站进行学习,B站上有很多学习视频,唯一的缺点就是免费的容易过时。2、读源码,看实战笔记,学习大神思路“编程语言是程序员的表达的方式,而架构是程序员对世界的认知”。所以,程序员要想快速认知并学习架构,读源码是必不可少的。

2401_84102979的博客 547

redis 多数据库 database配置项解析

读到redis配置文件的时候,碰到databases 16我不明白了,然后开启百度和google的搜索介绍之门,下面把我读取文章吸取到的解释介绍如下。 官方的解释:可用数据库数,默认值为16,默认数据库为0。 刚开始咋一看没有明白,可用数据库的个数,redis一个实例不就是一个数据库吗。怎么还可以配置多个数据库。这是因为Redis下,数据库是由一个整数索引标识,而不是由一个数据库名称,可以直白...

whatday的专栏 7018

Redis冷知识

Redis冷知识前言1、Redis测试性能2、 基础的知识3、Redis为什么这么快4、Redis 为什么单线程还这么快? 前言 提示:本文章是日常学习内容的总结,并非全部原创;仅供大家参考借鉴,并无其他商业用途。 1、Redis测试性能 redis-benchmark 是一个压力测试工具! 官方自带的性能测试工具! redis-benchmark 命令参数! 序号选项描述默认值 1 -h 指定服务器主机名 127.0.0.1 2 -p 指定服务器端口 6379 3 -s 指定服务器 soc

ws13575291650的博客 1万+
上一篇: 越努力,越贬值?
下一篇: 对比:微服务VS单体架构
xcbeyond
xcbeyond 优质创作者: 云计算技术领域 优质创作者: 云计算技术领域 领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
博客等级 码龄16年 1万+粉丝 288原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值