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

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

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

客户端与redis建立链接后会默认选择0号数据库,不过可以随时使用select命令更换数据库。
# 切换数据库操作:切换到1
127.0.0.1:6379> SELECT 1
OK
127.0.0.1:6379[1]>
127.0.0.1:6379[1]>
# 切换到0
127.0.0.1:6379[1]> SELECT 0
OK
127.0.0.1:6379>
# 从1号库中获取username
127.0.0.1:6379[1]> get username 。
在实际项目中则可以通过以redis配置文件的形式指定数据库,如下图所示

二、正确理解redis的“数据库”概念
由于redis不支持自定义数据库的名字,所有每个数据库都以编号命名。开发者则需要自己记录存储的数据与数据库的对应关系。另外redis也不支持为每个数据库设置不同的访问密码,所有一个客户端要么可以访问全部数据库,要么全部数据库都没有权限访问。要正确理解redis的“数据库”概念,不得不提到一个命令:
清空redis实例中所有数据库中的数据
127.0.0.1:6379> FLUSH ALL
清空redis某个数据库中数据 不会清空其他库的数据
127.0.0.1:6379> FLUSH db0
该命令可以清空实例下的所有数据库数据,这与我们所熟知的关系型数据库所不同。关系型数据库多个库常用于存储不同应用程序的数据,且没有方式可以同时清空实例下的所有库数据。所有对于redis来说这些db更像是一种命名空间,且不适宜存储不同应用程序的数据。比如可以使用0号数据库存储开发环境中的数据,使用1号数据库存储测试环境中的数据,但不适宜使用0号数据库存储A应用的数据而使用1号数据库存储B应用的数据,不同的环境应该使用不同的redis实例存储数据。redis非常轻量,一个空的redis实例占用的内在只有1M左右,所有不用担心多个redis实例会额外占用很多内存。
三、集群情况下是否支持一个实例多个db?
以上所说的都是基于单体redis的情况。而在集群的情况下不支持使用select命令来切换db,因为redis集群模式下只有一个db0

redis为什么默认有16个数据库相关推荐

  1. Redis 为什么默认 16 个数据库?

    来源:SapphireCoder https://www.toutiao.com/a6752317753866060299 导读:在实际项目中Redis常被应用于做缓存,分布式锁.消息队列等.但是在搭 ...

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

    点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:硬刚一周,3W字总结,一年的经验告诉你如何准备校招! 个人原创100W+访问量博客:点击前往,查看更多 来源:t ...

  3. 93.7%的程序员!竟然都不知道Redis为什么默认16个数据库?

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

  4. Redis为什么默认16个数据库,干什么用?

    注意:Redis支持多个数据库,并且每个数据库的数据是隔离的不能共享,并且基于单机才有,如果是集群就没有数据库的概念. Redis是一个字典结构的存储服务器,而实际上一个Redis实例提供了多个用来存 ...

  5. spring数据字典_Redis为什么默认16个数据库?

    点击上方"Java之间",选择"置顶或者星标" 你关注的就是我关心的! 来源:www.toutiao.com/a6752317753866060299 上一篇: ...

  6. 6 redis 编译失败_Redis(NoSQL数据库)基础篇

    一.Redis简介 1.1 Redis是什么 Redis是一个开源的,使用ANSI C 编写,高性能的Key-Value的NoSQL数据库. 2.2 Redis特点 (1)基于内存 (2)可持久化数据 ...

  7. Redis学习总结(16)——Redis 集群的5种使用方式,及各自优缺点对比分析

    一.常见使用方式 Redis 的几种常见使用方式包括: Redis 单副本 Redis 多副本(主从) Redis Sentinel(哨兵) Redis Cluster Redis 自研 二.各种使用 ...

  8. redis和mysql默认端口_各种数据库默认端口总结

    关系型数据库 一 :Oracle 驱动:oracle.jdbc.driver.OracleDriver URL:jdbc:oracle:thin:@<:port>:dbname 注:mac ...

  9. Redis 设计与实现 1:数据库 redisDb

    服务器中的数据库 Redis 服务器将绝大部分的信息都保存在 server.h/redisServer.redis 的数据是保存在 redisServer 中的 redisDb 结构中. struct ...

最新文章

  1. strcpy与面试官
  2. php对外发包解决方案(导致w3wp.exe很占cpu)
  3. 位操作的应用:无参数交换数据,异或加密,循环移位加密【位操作】(56)
  4. Toad 补充与培训 常用菜单
  5. oracle11g导入错误,oracle 11g导入到10g引起的错误
  6. P4899-[IOI2018]werewolf 狼人【Kruskal重构树,主席树】
  7. 微信公众开放平台开发08---纯java 实现微信开发:编写自定义菜单
  8. azure上传excel_使用MS Excel访问Azure中的关系SQL数据库
  9. python3 3种方式分别用for循环、while循环计算1到100的和
  10. 水利水电专业英语(2.5k行超全)
  11. mac navicat 安装
  12. 异常值(outlier)的判别与剔除
  13. 超详细的元器件分类大全—电阻、电容、电感
  14. mysql备份数据库/备份表
  15. 文献跟踪、文献订阅工具
  16. 对抗攻击常见方法汇总
  17. 键盘(键盘基础,按键消息)
  18. 供应化学试剂Boc-NH-PEG-NH2,Boc-NH-PEG-amine,叔丁氧羰基PEG氨基
  19. 前端该如何评估开发时间
  20. 五⼤场景玩转 Git,只要这一篇就够了!

热门文章

  1. python数据分析简单实例-利用Python进行数据分析――基础示例
  2. 简单绕过EAC反作弊检测分析【1】
  3. layer.open弹层查看缩略图的原图,自适应大小
  4. webassembly:
  5. python实现QQ背景墙自动点赞
  6. 跟随鼠标走html代码,div跟随鼠标移动
  7. 一些好看的代码注释图案
  8. SecureCRT 快捷键
  9. 关于oracle是否收费你真的知道吗
  10. 老司机教你:程序猿实力撩妹套路!