在实际项目中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. 论文中键入行内公式导致行间距变大的解决方案
  2. html解决空格显示问题
  3. ios获取软键盘完成事件
  4. Docker基础-Docker数据管理
  5. windows彻底删除php,windows如何删除php
  6. python 100days github_GitHub - rghwer/Python-100-Days: Python - 100天从新手到大师
  7. strcpy、strncpy与memcpy的区别与使用方法
  8. java检查文件的编码格式
  9. 华为服务器虚拟化和存储虚拟化中标,idc服务器虚拟化排名
  10. 高校大数据产品有哪些
  11. 关于namecheap 域名运营商,域名赎回详细步骤
  12. vue 加载720全景图
  13. Krpano元素的一些解析
  14. [转]汽车ARM攒机指南
  15. 芭比波朗品牌的男性市场
  16. java 必须try catch的异常_【java基础之异常】死了都要try,不淋漓尽致地catch我不痛快!...
  17. 摊铺机基本参数介绍(鼎盛天工WTD9501A)
  18. html中去除浮漂有什么作用,鱼漂吃铅量大、和吃铅量小都有啥优点?
  19. 基于MATLAB的简单手势识别
  20. 锐捷GRE over ipsec vxn配置 ----尚文网络奎哥

热门文章

  1. PC-DMIS 2019 星型针的校验和使用
  2. EXT4 之superblock 结构体剖析
  3. Linux - Centos7系统破解root用户密码
  4. 查看服务器CPU核数
  5. 如何使用文件上传实现发布朋友圈?
  6. python 爬虫爬取煎蛋网妹子图,我1T的硬盘装满了!
  7. Vim配置文件vimrc入门介绍
  8. android 特殊屏幕适配,Android屏幕适配(2)常见:第一种
  9. 在阿里干了6年自动化测试,30岁即将退休的我,告诉你自动化测试工程师有多吃香...
  10. linux重置win10开机密码,win10 1903怎么取消(设置)开机密码