redis key命名规范_看完后,我才明白Redis为什么默认16个数据库?

www.toutiao.com/a6752317753866060299

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

843d3aa241c0aa594f5daec589c76846.png

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

ca3c919d86addcd84ecb188d43c04e9c.png

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

f39cddb35acbb7f881d78beb316c355a.png

客户端与Redis建立连接后会默认选择0号数据库,不过可以随时使用SELECT命令更换数据库。
在实际项目中则可以通过以Redis配置文件的形式指定数据库,如下图所示

3c83b702f13a9fd1d8464c4e227abbda.png

二、正确理解Redis的“数据库”概念

40bcab94cd5b76ce7b88bad73d7e30d9.png

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

dbfbec86da3e315f4f2ab9c4bae1bad3.png

要注意以上所说的都是基于单体Redis的情况。 而在集群的情况下不支持使用select命令来切换db,因为Redis集群模式下只有一个db0。 再扩展一些集群与单机Reids的区别,感兴趣的朋友可以去查阅相关的资料深入理解,这里就不做讨论了。
  • key批量操作支持有限:例如mget、mset必须在一个slot
  • Key事务和Lua支持有限:操作的key必须在一个节点
  • key是数据分区的最小粒度:不支持bigkey分区
  • 不支持多个数据库:集群模式下只有一个db0
  • 复制只支持一层:不支持树形复制结构

0f4a8deee4cd6e056fe6829a425ed250.png

四、总结 Redis实例默认建立了16个db,由于不支持自主进行数据库命名所以以dbX的方式命名。 默认数据库数量可以修改配置文件的database值来设定。 对于db正确的理解应为“命名空间”,多个应用程序不应使用同一个Redis不同库,而应一个应用程序对应一个Redis实例,不同的数据库可用于存储不同环境的数据。 最后要注意,Redis集群下只有db0,不支持多db。

推荐阅读


代码对比工具,我就用这6个

分享我常用的5个免费的在线 SQL 数据库环境,简直太方便了!

Spring Boot 三招组合拳,手把手教你打出优雅的后端接口

MySQL 5.7 vs 8.0,你选那个?网友:我继续原地踏步~

d7846eff7c64a12d485e99a0b1703c73.png

最后,推荐给大家一个有趣有料的公众号:写代码的渣渣鹏,7年老程序员教你写bug,回复”面试“有惊喜哦

2b9718e3630d4e726d14fdf4c4fa1543.png

扫码关注

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值