在实际项目中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%以上程序员不知道!相关推荐

  1. 工作中这些实用的小技巧,90%的程序员不知道

    工作中这些实用的小技巧,90%的程序员不知道 Linux 有些Linux命令我们是经常用的,但是这些命令有的特别长(如进入层级特别深的项目部署目录),这时就可以为这些命令定义一个别名 系统级别定义的别 ...

  2. Spring AOP注解为什么失效?90%Java程序员不知道

    转载自 Spring AOP注解为什么失效?90%Java程序员不知道 使用Spring Aop注解的时候,如@Transactional, @Cacheable等注解一般需要在类方法第一个入口的地方 ...

  3. 为什么 Redis 默认 16 个库?90% 以上程序员不知道!

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

  4. 真实揭秘90后程序员婚恋现状,有点扎心!

    导读:目前,90后已经成为婚恋市场的主力军,且在互联网占据人们大部分的生活和工作的当下,90后"找对象"的方式也互联网化:据有缘网<90后大众婚恋行为报告2019>报告 ...

  5. 毕业之后,这些年薪 50w+ 的 90 后程序员都经历了什么?纯水贴

    毕业之后,这些年薪 50w+ 的 90 后程序员都经历了什么? 即使是处于薪资链顶端的程序员,年薪(不含期权.股票等)超过 50 万,对他们而言也并不是一件容易事.就招聘平台 100offer 而言, ...

  6. 年薪50万+的90后程序员都经历了什么?

    [文章来源微信公众号:每天学编程] 薪资是检验一家公司对你认可的标准,能达到年薪 50 万+,一定程度上说明了公司对你创造的价值的认可. 即使是处于薪资链顶端的程序员,年薪(不含期权.股票等)超过 5 ...

  7. 《90后程序员职场报告》:平均月薪近20K,每6个程序员就有1个是女性

    点击蓝色"程序猿DD"关注我 回复"资源"获取独家整理的学习资料! 作者 | 拉勾 来源 | 公众号「拉勾」(lagounews) 第一批90后已经快30了.9 ...

  8. 90 % Java 程序员被误导的一个性能优化策略

    转载自   90 % Java 程序员被误导的一个性能优化策略 我们经常看到一些 Java 性能优化的书或者理念,说不要在循环内定义变量,这样会占用过多的内存影响性能,而要在循环外面定义.接触 Jav ...

  9. 解密:90后程序员青睐哪些互联网公司?

    近期拉勾发布了<2019年90后程序员职场报告>,报告显示,90后程序员平均月薪近20K,女性程序员占比高达17%;成为中国互联网行业主力军. 岗位竞争方面,报告显示, java类语言岗位 ...

  10. 月薪2万的90后程序员!哪些岗位和公司才是他们的首选?

    拉勾发布<2019年90后程序员职场报告>显示: 90后程序员平均月薪近20K,雄踞互联网各职位之首: 字节跳动蝉联"90后程序员最青睐的互联网公司"榜首,腾讯.阿里紧 ...

最新文章

  1. 负数对2取余_不同语言的负数取余问题
  2. 设计模式-简单工厂模式
  3. 链表中环的入口结点 python_【Github 5K星】BAT头条滴滴小米等笔试面经+深度学习/算法/NLP资源汇总!...
  4. nginx php上传大小设置
  5. 雷霆战机源代码c语言,C++实现雷霆战机可视化小游戏
  6. C++数据结构与算法 竞赛树, 二叉搜索树
  7. Android ROM 制作教程
  8. 科研英文论文翻译工具——Copytranslator
  9. 51单片机实现电子密码锁设计
  10. Linux Spark安装教程
  11. 病毒手动查杀(威金 q盗 熊猫烧香)
  12. 小心你的网站让百度蜘蛛抓取不到
  13. dfuse——最顺畅的区块链 API 现已接入 Worbli
  14. Ubuntu 编译ijkplayer 支持几乎所有格式(MP4,mov,mkv,avi,wmv,m4v,mpg,webm,ogv,3g2.flv,f4v,swf)和https
  15. 组合博弈游戏 - SG函数和SG定理
  16. Java 中的反射原理
  17. AD账号密码过期邮件提醒-powershell实现--密码加密(新增)
  18. 【Python学习】transpose函数
  19. import 与 import()
  20. 计算机中丢失ENWeb,vbaen32.olb

热门文章

  1. centos6.6安装中文支持
  2. stm32 USART rs485 rs232
  3. eclipse 中System.out快捷键设定
  4. 利用 ASP.NET 2.0 中的 Web 部件和个性化释放站点的潜能 --作者:Steven A. Smith
  5. poj 3020 Antenna Placement 匈牙利二分匹配 最小覆盖数 !!!!
  6. inDesign教程,如何在文档中添加链接和动画?
  7. Affinity 1.10 版本更新,性能提升
  8. 安全彻底的卸载工具App Cleaner Uninstaller for Mac
  9. Artlantis studio 2021 for Mac(三维渲染工具)
  10. 轻松修改Mac地址的中文版工具:WiFiSpoof for Mac