redis java 一连问了好几个大佬,竟然都不知道Redis为什么默认16个数据库?

redis java 一连问了好几个大佬,竟然都不知道Redis为什么默认16个数据库?

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

redis java

# 16个数据库的由来

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

redis java

以MySQL实例为例

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

redis java

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

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

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

redis java

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

redis java

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

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

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

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

redis java

redis java

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

redis java

# 总结

Redis实例默认建立了16个db,由于不支持自主进行数据库命名所以以dbX的方式命名。默认数据库数量可以修改配置文件的值来设定。对于db正确的理解应为“命名空间”,多个应用程序不应使用同一个Redis不同库,而应一个应用程序对应一个Redis实例redis java,不同的数据库可用于存储不同环境的数据。最后要注意,Redis集群下只有db0,不支持多db。

Redis太难?这份阿里P8总结的Redis灵魂拷问70题解析,你又懂了多少?

在大数据时代,频繁地在应用和数据库之间进行读写操作在性能、速度、体验上已经远远不能满足用户、客户、开发人员的要求了,于是一种基于内存操作的数据库便应运而生。Redis 是一种基于内存的数据库,如何轻松理解并熟练操作 Redis 是一个有责任心、进取心程序员应该了解和掌握的技术。Redis在互联网技术存储方面使用如此广泛,几乎所有的后端技术面试官都要在Redis的使用和原理方面对小伙伴们进行各种刁难。在将面试问的Redis高级题目进行详细的梳理,并结合了解析在这免费分享给大家!

redis java

Redis高级面试专题

一、Redis基础概念相关问题

redis java

二、Redis 数据结构及指令相关问题

redis java

三、Redis 高并发处理策略相关问题

redis java

四、Redis 集群相关问题

redis java

五、Redis 缓存管理及持久化机制相关问题

redis java

六、Redis 应用场景设计相关问题

redis java

面试题答案

1. 什么是 Redis?

redis java

Redis 全称为: (远程数据服务),是一个基于内存且支持持久化的高性能 key-value 数据库。具备以下几个基本特征:

1. 多数据类型

2. 持久化机制

3. 主从同步

2. Redis 的特点有哪些?

1. Redis 本质上是一个 key-value 类型的数据库

2. 整个数据库都是在内存中进行操作,可定期刷新到磁盘进行持久化存储

3. 由于是在内存操作redis java 一连问了好几个大佬,竟然都不知道Redis为什么默认16个数据库?,读写能力非常好,每秒可以处理 10 万次读写操作

4. Redis 支持多种数据结构,提供了丰富的数据类型选择

5. Redis 同时支持数据备份,主从配置

6. Redis 的所有操作都是原子性的

3. 与 Redis 的区别都有哪些?

1. 存储方式不同: 把数据全部存在内存之中,断电后会丢失。Redis 所有数据加载在内存,但也会持久化到磁盘,保证数据的持久性。

2. 支持数据类型不同: 对数据类型支持相对简单,只支持 key-value 结构。Redis 有复杂的数据类型。

3. 底层模型不同:底层实现方式以及客户端通信应用协议不一样。 Redis 直接自己构建了 VM 机制。

4. 运行环境不同:Redis 目前官方只支持 Linux 上运行。

4. Redis 相比 有哪些优势?

1. 所有的值均是简单的字符串,Redis 作为其替代者,支持更为丰富的数据类型

2. Redis 的速度比 快很多

3. Redis 可以持久化其数据

公告:
1. 本站所有资源来源于用户上传和网络,如有侵权请联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系站长处理!
6. 本站不售卖代码,资源标价只是站长收集整理的辛苦费!如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
7. 站长QQ号码 2205675299

资源库 - 资源分享下载网 » redis java 一连问了好几个大佬,竟然都不知道Redis为什么默认16个数据库?

常见问题FAQ

关于资源售价和售后服务的说明?
本站所有资源的标价均为本站收集资源的辛苦费,不代表资源本身的价值。软件是高智慧高价值的商品,不可能是白菜价。本站资源标价只是赞助费用,收取的赞助费仅用来维持本站的日常运营!毕竟收集整理资料需要投入云计算资源和站长大量的精力。
代码有没有售后服务和技术支持?
由于代码的运行具有不可预见性,本站不保证代码完整可运行,不提供技术支持和售后服务。 本站原创代码都是站长自己开发的,可以有偿提供技术支持服务。 网站里标明【亲测】的代码都是站长亲测过的,其他的代码由于精力有限,没有一一测试,不能保证代码就一定能够使用,更没有技术支持服务,下载前请自行斟酌。
有没有搭建服务?
由于搭建服务比较费时费力,所以本站除了原创代码外均不提供搭建服务。本站分享代码纯属兴趣爱好,不以盈利为目的,请勿咨询有没有搭建服务,谢谢理解。
链接地址失效了怎么办?
请带上资源链接地址联系客服,工作时间内我们看到后将第一时间回复。
关于解压密码
本站资源一般都没有加密,如果发现需要解压密码的,那么就输入 hao.35dc.com 试试。

发表评论

资源库,由老程序员细心甄别、精心筛选,只为提供优质的源码资源

关于我们 联系我们