为什么 Redis 默认 16 个库?90%以上程序员不知道!
在实际项目中Redis常被应用于做缓存,分布式锁、消息队列等。
但是在搭建配置好Redis服务器后很多朋友应该会发现和有这样的疑问,为什么Redis默认建立了16个数据库,如下图所示。
椐调查发现:90% 以上的程序员竟然都不知道为什么 Redis 默认 16 个数据库!
1、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配置文件的形式指定数据库,如下图所示
2、正确理解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实例会额外占用很多内存。推荐大家关注微信公众号:互联网架构师,在后台回复:8,可以获取我整理的 N 篇最新 Redis 教程,都是干货。
3、集群情况下是否支持一个实例多个db?
要注意以上所说的都是基于单体Redis的情况。而在集群的情况下不支持使用select命令来切换db,因为Redis集群模式下只有一个db0。再扩展一些集群与单机Reids的区别,感兴趣的朋友可以去查阅相关的资料深入理解,这里就不做讨论了。
key批量操作支持有限:例如mget、mset必须在一个slot
Key事务和Lua支持有限:操作的key必须在一个节点
key是数据分区的最小粒度:不支持bigkey分区
不支持多个数据库:集群模式下只有一个db0
复制只支持一层:不支持树形复制结构
4、总结
Redis实例默认建立了16个db,由于不支持自主进行数据库命名所以以dbX的方式命名。默认数据库数量可以修改配置文件的database值来设定。
对于db正确的理解应为“命名空间”,多个应用程序不应使用同一个Redis不同库,而应一个应用程序对应一个Redis实例,不同的数据库可用于存储不同环境的数据。
最后要注意,Redis集群下只有db0,不支持多db。
来自:www.toutiao.com/i6752317753866060299/
推荐阅读 ↓↓↓
1.不认命,从10年流水线工人,到谷歌上班的程序媛,一位湖南妹子的励志故事
2.如何才能成为优秀的架构师?
3.从零开始搭建创业公司后台技术栈
4.“37岁,985毕业,年薪50万,被裁掉只用了10分钟”
5.37岁程序员被裁,120天没找到工作,无奈去小公司,结果懵了...
6.副业&接私活必备的 10 个开源项目!
7.你知道哪10大算法统治着全球吗?
8.15张图看懂瞎忙和高效的区别!
一个人学习、工作很迷茫?
点击「阅读原文」加入我们的小圈子!
为什么 Redis 默认 16 个库?90%以上程序员不知道!相关推荐
- 工作中这些实用的小技巧,90%的程序员不知道
工作中这些实用的小技巧,90%的程序员不知道 Linux 有些Linux命令我们是经常用的,但是这些命令有的特别长(如进入层级特别深的项目部署目录),这时就可以为这些命令定义一个别名 系统级别定义的别 ...
- Spring AOP注解为什么失效?90%Java程序员不知道
转载自 Spring AOP注解为什么失效?90%Java程序员不知道 使用Spring Aop注解的时候,如@Transactional, @Cacheable等注解一般需要在类方法第一个入口的地方 ...
- 为什么 Redis 默认 16 个库?90% 以上程序员不知道!
在实际项目中Redis常被应用于做缓存,分布式锁.消息队列等.但是在搭建配置好Redis服务器后很多朋友应该会发现和有这样的疑问,为什么Redis默认建立了16个数据库,如下图所示. Redis为什么 ...
- 真实揭秘90后程序员婚恋现状,有点扎心!
导读:目前,90后已经成为婚恋市场的主力军,且在互联网占据人们大部分的生活和工作的当下,90后"找对象"的方式也互联网化:据有缘网<90后大众婚恋行为报告2019>报告 ...
- 毕业之后,这些年薪 50w+ 的 90 后程序员都经历了什么?纯水贴
毕业之后,这些年薪 50w+ 的 90 后程序员都经历了什么? 即使是处于薪资链顶端的程序员,年薪(不含期权.股票等)超过 50 万,对他们而言也并不是一件容易事.就招聘平台 100offer 而言, ...
- 年薪50万+的90后程序员都经历了什么?
[文章来源微信公众号:每天学编程] 薪资是检验一家公司对你认可的标准,能达到年薪 50 万+,一定程度上说明了公司对你创造的价值的认可. 即使是处于薪资链顶端的程序员,年薪(不含期权.股票等)超过 5 ...
- 《90后程序员职场报告》:平均月薪近20K,每6个程序员就有1个是女性
点击蓝色"程序猿DD"关注我 回复"资源"获取独家整理的学习资料! 作者 | 拉勾 来源 | 公众号「拉勾」(lagounews) 第一批90后已经快30了.9 ...
- 90 % Java 程序员被误导的一个性能优化策略
转载自 90 % Java 程序员被误导的一个性能优化策略 我们经常看到一些 Java 性能优化的书或者理念,说不要在循环内定义变量,这样会占用过多的内存影响性能,而要在循环外面定义.接触 Jav ...
- 解密:90后程序员青睐哪些互联网公司?
近期拉勾发布了<2019年90后程序员职场报告>,报告显示,90后程序员平均月薪近20K,女性程序员占比高达17%;成为中国互联网行业主力军. 岗位竞争方面,报告显示, java类语言岗位 ...
- 月薪2万的90后程序员!哪些岗位和公司才是他们的首选?
拉勾发布<2019年90后程序员职场报告>显示: 90后程序员平均月薪近20K,雄踞互联网各职位之首: 字节跳动蝉联"90后程序员最青睐的互联网公司"榜首,腾讯.阿里紧 ...
最新文章
- 负数对2取余_不同语言的负数取余问题
- 设计模式-简单工厂模式
- 链表中环的入口结点 python_【Github 5K星】BAT头条滴滴小米等笔试面经+深度学习/算法/NLP资源汇总!...
- nginx php上传大小设置
- 雷霆战机源代码c语言,C++实现雷霆战机可视化小游戏
- C++数据结构与算法 竞赛树, 二叉搜索树
- Android ROM 制作教程
- 科研英文论文翻译工具——Copytranslator
- 51单片机实现电子密码锁设计
- Linux Spark安装教程
- 病毒手动查杀(威金 q盗 熊猫烧香)
- 小心你的网站让百度蜘蛛抓取不到
- dfuse——最顺畅的区块链 API 现已接入 Worbli
- Ubuntu 编译ijkplayer 支持几乎所有格式(MP4,mov,mkv,avi,wmv,m4v,mpg,webm,ogv,3g2.flv,f4v,swf)和https
- 组合博弈游戏 - SG函数和SG定理
- Java 中的反射原理
- AD账号密码过期邮件提醒-powershell实现--密码加密(新增)
- 【Python学习】transpose函数
- import 与 import()
- 计算机中丢失ENWeb,vbaen32.olb
热门文章
- centos6.6安装中文支持
- stm32 USART rs485 rs232
- eclipse 中System.out快捷键设定
- 利用 ASP.NET 2.0 中的 Web 部件和个性化释放站点的潜能 --作者:Steven A. Smith
- poj 3020 Antenna Placement 匈牙利二分匹配 最小覆盖数 !!!!
- inDesign教程,如何在文档中添加链接和动画?
- Affinity 1.10 版本更新,性能提升
- 安全彻底的卸载工具App Cleaner Uninstaller for Mac
- Artlantis studio 2021 for Mac(三维渲染工具)
- 轻松修改Mac地址的中文版工具:WiFiSpoof for Mac