redis 多数据库 database配置项解析
读到redis配置文件的时候,碰到databases 16我不明白了,然后开启百度和google的搜索介绍之门,下面把我读取文章吸取到的解释介绍如下。
官方的解释:可用数据库数,默认值为16,默认数据库为0。
刚开始咋一看没有明白,可用数据库的个数,redis一个实例不就是一个数据库吗。怎么还可以配置多个数据库。这是因为Redis下,数据库是由一个整数索引标识,而不是由一个数据库名称,可以直白的理解为配置不同的的库,占用的是不同的内存空间,不同的库之间相互不影响,独立工作,只不过都是借宿在这个Redis实例上面生存的空间。
Redis的配置文件中默认的数据库总数为16个,默认它是一个下标基于0到15的数组:
databases 16
应用场景
为什么Redis会有这么一个设计场景呢,我想这是一个类似多租户的概念。就像虚拟化和容器一样,你可以虚拟出多台机器和多个容器来,充分利用物理机器的硬件配置来work,达到服务器性能最大的利用率,各个虚拟机和容器之间单独运行,互补影响和干扰,我想Redis的多数据库也是同样的道理。
场景:
你或许希望一个Redis应用(一个Redis server,或者一个Redis server/slaves群组)能为多个客户端应用服务,如果这些客户端应用都各自为营,向Redis写数据的话,很可能会导致key冲突(我们知道Redis是一个key-value结构的存储结构)。为了将不同的应用分开,你可以用不同的前缀去区分(eg: app_i:xx:yy, app_ii:xx:yy)。这时候你就不用这么麻烦,就可以直接利用Redis分割这些key的机制:Database的概念。
每个数据库都有属于自己的空间,不必担心之间的key冲突。
不同的数据库下,相同的key取到各自的值。
flushdb命令清除数据,只会清除当前的数据库下的数据,不会影响到其他数据库。flushall命令会清除这个实例的数据,在执行这个命令之前要考虑清楚,我这里只是实验环境,无所谓了。
数据库的数量是可以配置的,默认情况下是16个。修改redis.conf下的databases指令:
databases 64
redis没有提供任何方法来关联标识不同的数据库。因此,需要你来跟踪什么数据存储到哪个数据库下或者什么业务的数据存在哪个库里面,这个我觉得可以用Zookeeper来解决。
总结
Redis databases,从“客户端应用都各自为营”和业务分离的角度来看,Database的概念是很适用的,它让我们有清晰的数据划分,可以放心的把注意力放在key的设计上。
redis 多数据库 database配置项解析相关推荐
- DB-概念-数据库:数据库/Database
ylbtech-DB-概念-数据库:数据库/Database 数据库是以一定方式储存在一起.能与多个用户共享.具有尽可能小的冗余度.与应用程序彼此独立的数据集合,可视为电子化的文件柜--存储电子文件的 ...
- Redis和数据库 数据同步问题
Redis和数据库同步问题 缓存充当数据库 比如说Session这种访问非常频繁的数据,就适合采用这种方案:当然了,既然没有涉及到数据库,那么也就不会存在一致性问题: 缓存充当数据库热点缓存 读操作 ...
- mysql jdbc 绑定变量_jdbc测试mysql数据库sql预解析(绑定变量)
jdbc测试mysql数据库sql预解析(绑定变量) 用习惯了oracle,学习mysql,想测试一下mysql绑定变量的效果.以前看网上介绍大部份都说mysql没有sql共享池的概念,所以也不存在s ...
- 100道MySQL数据库面试题解析
1. MySQL索引使用有哪些注意事项呢? 可以从三个维度回答这个问题:索引哪些情况会失效,索引不适合哪些场景,索引规则 索引哪些情况会失效 查询条件包含or,可能导致索引失效如何字段类型是字符串,w ...
- redis的数据库通知(notify-keyspace-events)
redis的数据库通知(notify-keyspace-events) 共分为两类:一类是键空间通知 另一类是键事件通知 概述 数据库通知是redis在2.8之后新增的功能,让客户端可以已发布/订阅模 ...
- Redis源码-String:Redis String命令、Redis String存储原理、Redis String三种编码类型、Redis字符串SDS源码解析、Redis String应用场景
Redis源码-String:Redis String命令.Redis String存储原理.Redis String三种编码类型.Redis字符串SDS源码解析.Redis String应用场景 R ...
- openGauss数据库源码解析系列文章——openGauss开发快速入门(二)
在上一篇openGauss数据库源码解析系列文章--openGauss开发快速入门(上)中,我们介绍了openGauss的安装部署方法,本篇将具体介绍openGauss基本使用. 二. openGau ...
- redis.conf之save配置项解读
配置示例: save 900 1 save 300 10 save 60 3600 配置解读: 1) "save 900 1"表示如果900秒内至少1个key发生变化(新增.修改和 ...
- 【免费使用】【redis】【数据库】快速使用redislabs免费套餐 注册和配置redis 缓存 数据库 nosql
[免费]快速使用redislabs免费套餐 注册和配置redis 缓存数据库 简介 视频教程 操作步骤 参考资料 结束の语 今日问答 YOUTUBE频道 欢迎订阅我的bilibili频道 [免费]快速 ...
最新文章
- MySQL 数据类型学习笔记
- C/C++ 指针函数 与 函数指针
- MyBatis学习笔记(一)
- K-Complete Word CodeForces - 1332C(贪心)
- baidu的服务器数据里面装的都是垃圾!
- 数据结构与算法--面试必问AVL树原理及实现
- 图解算法学习笔记(二): 选择排序
- C++中lib和dll解析
- (c语言)求满足表达式1+2+3+.......+n<=1000的最大的n
- yum install ruby出错:error downloading packages
- 一款PO VO DTO 转换神器,求求你别在到处找工具类了!
- Flash 第二章 基本绘图工具-课堂笔记
- 计算机组成原理三个相关,计算机组成原理试题3
- Pillow图像几何变换
- Model性能相关操作:select_related
- java-net-php-python-64jspm自主学习试题库系统录像演示2019查重计算机毕业设计程序
- 出口美国的电动自行车UL2849测试和GCC检测标准
- 小猫爪:AWR294x学习笔记02-AWR294x之DPMIPC
- COGS 613 火车站饭店
- Java课程设计说明书 捕鱼达人
热门文章
- 面向 CPython GIL 的多线程编程要点
- C 语言编程 — 高级数据类型 — void 类型
- 串口的硬件流控和软件流控
- 记一次JVM Metaspace溢出排查
- Android性能优化篇 [ 谷歌官方 ]
- Caused by: java.lang.ClassNotFoundException: javax.persistence.Entity
- .NET(C#):使用Win32Exception类型处理Win32错误代码
- hdu3342 拓扑序
- CSS核心内容整理 - (中)
- Exchange2010配置实验(六)部署forefront到edge服务器