欢乐狗 发表于 2024-8-26 20:15:11

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

https://i-blog.csdnimg.cn/blog_migrate/7c959d1401aafdfe427db6a942c2921e.jpeg
以MySQL实例为例
Redis默认支持16个数据库,可以通过调整Redis的设置文件redis/redis.conf中的databases来修改这一个值,设置完毕后重启Redis便完成设置。
https://i-blog.csdnimg.cn/blog_migrate/1071d6351472f0575994449fa3d902c1.png
客户端与Redis创建毗连后会默认选择0号数据库,不过可以随时使用SELECT下令更换数据库。
切库redis> SELECT 1 # 默认0号db,切换为1号dbOKredis > GET username # 从1号库中获取 username (nil)

在实际项目中则可以通过以Redis设置文件的形式指定命据库,如下图所示
https://i-blog.csdnimg.cn/blog_migrate/3e4b175c385ebddbc804285af03b9dd0.png
# 正确理解Redis的“数据库”概念
https://i-blog.csdnimg.cn/blog_migrate/963a5c6011fc0a5a438fd01cabd60009.png
由于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?
https://i-blog.csdnimg.cn/blog_migrate/d4585a8719122b33dc3e0318cda74b88.png
要注意以上所说的都是基于单体Redis的环境。而在集群的环境下不支持使用select下令来切换db,因为Redis集群模式下只有一个db0。再扩展一些集群与单机Reids的区别,感兴趣的朋侪可以去查阅相关的资料深入理解,这里就不做讨论了。


[*] key批量操作支持有限:例如mget、mset必须在一个slot
[*] Key事务和Lua支持有限:操作的key必须在一个节点
[*] key是数据分区的最小粒度:不支持bigkey分区
[*] 不支持多个数据库:集群模式下只有一个db0
[*] 复制只支持一层:不支持树形复制结构
https://i-blog.csdnimg.cn/blog_migrate/7759c85cecea9a9868d5333bba1795a9.png
# 总结
Redis实例默认创建了16个db,由于不支持自主举行数据库命名所以以dbX的方式命名。默认数据库数量可以修改设置文件的database值来设定。对于db正确的理解应为“命名空间”,多个应用步伐不应使用同一个Redis不同库,而应一个应用步伐对应一个Redis实例,不同的数据库可用于存储不同环境的数据。最后要注意,Redis集群下只有db0,不支持多db。
Redis太难?这份阿里P8总结的Redis灵魂拷问70题解析,你又懂了多少?
=======================================
在大数据时代,频仍地在应用和数据库之间举行读写操作在性能、速度、体验上已经远远不能满意用户、客户、开发职员的要求了,于是一种基于内存操作的数据库便应运而生。Redis 是一种基于内存的数据库,怎样轻松理解并纯熟操作 Redis 是一个有责任心、进取心步伐员应该了解和把握的技术。Redis在互联网技术存储方面使用如此广泛,几乎全部的后端技术面试官都要在Redis的使用和原理方面对小同伴们举行各种刁难。在将面试问的Redis高级标题举行具体的梳理,并结合了解析在这免费分享给大家!
https://i-blog.csdnimg.cn/blog_migrate/c8ef651e011f1528ff4f8db2d941e3d0.png
Redis高级面试专题
===============
一、Redis基础概念相关问题
https://i-blog.csdnimg.cn/blog_migrate/35586f1f7b947e2f6c1de518b68369f5.png
二、Redis 数据结构及指令相关问题
https://i-blog.csdnimg.cn/blog_migrate/1d9c8334a196af0da85f6b8542a81b6e.png
三、Redis 高并发处理策略相关问题
https://i-blog.csdnimg.cn/blog_migrate/fd497111e9de6c59ce45b28671d966cc.png
小编13年上海交大结业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里不停到现在。
深知大多数初中级Java工程师,想要提拔技能,往往是自己探索发展,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术故步自封!
因此收集整理了一份《2024年最新Java开发全套学习资料》送给大家,初衷也很简单,就是盼望可以或许资助到想自学提拔又不知道该从何学起的朋侪,同时减轻大家的负担。
https://i-blog.csdnimg.cn/blog_migrate/46680d218099cbc3f36c96ee5d13e47e.jpeg
https://i-blog.csdnimg.cn/blog_migrate/414b3b8d4284d106bfaa231fb129079c.png
https://i-blog.csdnimg.cn/blog_migrate/c78eae96930d27a28f8ed8bd4171803a.png
由于文件比力大,这里只是将部门目录截图出来,每个节点里面都包罗大厂面经、学习条记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有资助,可以添加下面V无偿领取!(备注Java)
https://i-blog.csdnimg.cn/blog_migrate/de052a164fabdae850fb6a0a19dba998.jpeg
1)]
由于文件比力大,这里只是将部门目录截图出来,每个节点里面都包罗大厂面经、学习条记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有资助,可以添加下面V无偿领取!(备注Java)
[外链图片转存中…(img-uPopPzPj-1710854445761)]

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 一连问了好几个大佬,竟然都不知道Redis为什么默认16个数据库