我是靠谱客的博主 平常丝袜,最近开发中收集的这篇文章主要介绍redis 清空db下_Redis为什么要分16个库,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

原文链接 :https://www.jianshu.com/p/acfbcc74b701在实际的项目中,Redis常被用作缓存、分布式锁、消息队列等的解决方案。但是在搭建好Redis服务后,Redis默认创建了 16个数据库(db0~db15),而在Redis集群下只有一个 db0数据库。如下图所示。 6947c8af61fe838397872faa9b251e2f.pngredis单机   f33bc2622dff8d66a3679c97c910de93.png 一、16个数据库的由来Redis是一个类似于 字典结构的存储服务器,一个Redis实例提供了 多个用来存储数据的字典,在客户端可以指定将数据存储于哪个字典中。这与在一个关系数据库实例中创建多个数据库类似,所以,可以将Redis中的每个字典都理解为一个独立的数据库。 1b3dcc58284aa03f8fac56a22bd3d0b9.png在这里插入图片描述我们讲过Redis默认支持16个数据库,这可以通过修改Redis的配置文件/redis/redis.conf中的 databases字段的值,设置完毕并重启Redis即可完成配置。 132347d4a36158d8ca626ce3be1b8972.png 此外,客户端与Redis建立连接之后,默认会选择0号数据库即db0,但可以使用 select命令 更换存储的数据库。 147fc0af1204f47629bb2e5dc9a0e40f.png 更换db也可以通过修改配置文件的方式选择默认数据库。 c8404bd913fbecdcb4ec5a082b2f5acf.png 二、正解Redis数据库概念可以看到,Redis的数据库都以 db+编号的方式命名,这是因为Redis不支持自定义数据库名。开发者则需要自己记录存储的数据与数据库之间的对应关系。此外, Redis不支持为每个数据库设置不同的访问密码,即客户端要么可以访问全部的数据库,要么所有的数据库都不能被访问。Redis中存在这么一个命令 flushall,该命令可以清空当前Redis实例下所有数据库的数据。这与类似于mysql的关系型数据库不同, 关系型数据库的每个数据库常用于存储不同应用程序的数据,且不提供清除当前实例下所有数据库数据的方法。因此,对于Redis来说,用 命名空间的方式理解Redis提供的 db0~db15数据库会更合适,且一个Redis实例不适合存储多个应用程序的数据。比如,我们可以这么做: 使用db0数据库存储应用程序在生产环境的数据,用db1数据库存储测试环境的数据。但是, 不适合用db0数据库存储应用程序A的数据,用db1存储应用程序B的数据。****不同的应用程序应使用不同的Redis实例。此外,我们不必担心使用过多的Redis实例造成数据库服务压力过大,因为Redis是非常轻量级的, 一个空的Redis实例占用的内存只有1MB左右。

三、集群环境下的Redis实例

在单体Redis的情况下可以使用 select命令来实现数据库的切换,但在集群环境下,Redis不支持使用 select命令来切换数据库,这是因为在集群环境下只有一个 db0数据库。集群与单体Redis的区别如下: 1 、key批量操作支持有限: 例如mget、mset必须在一个slot;
2、Key事务和Lua支持有限:操作的key必须在一个节点;
3、key是数据分区的最小粒度:不支持bigkey分区;
4、不支持多个数据库:集群模式下只有一个db0;
5、复制只支持一层:不支持树形复制结构。
四、总结
  • Redis实例默认创建了16个数据库,且不支持自定义命名,以dbX的方式命名(db0~db15);
  • 默认数据库的数量可以在配置文件中修改;
  • 应以命名空间的方式理解Redis数据库db,多个应用程序不应使用同一个Redis的不同库,而应一个应用程序对应一个Redis实例,不同的数据库可用于存储不同环境的数据。
  • Redis集群下只有db0,不支持多db。

fc8f47b821444a28a7789b1a5041e72d.png

最后

以上就是平常丝袜为你收集整理的redis 清空db下_Redis为什么要分16个库的全部内容,希望文章能够帮你解决redis 清空db下_Redis为什么要分16个库所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(54)

评论列表共有 0 条评论

立即
投稿
返回
顶部