为什么Redis使用整数数据库号?

Dav*_*ver 39 redis

为什么Redis使用整数数据库而不是字符串?似乎保持一个将字符串映射到"实际"整数的小内部数据结构是微不足道的.

ant*_*rez 45

Redis不使用字符串作为数据库名称而是索引的原因是Redis数据库的目标和能力不是提供字典的外层:Redis字典无法扩展到很多字典,只能缩放到很少的字典(它我们也不想为每个设计提供嵌套的数据结构,所以这只是"几个命名空间",因此使用数字小索引似乎是最好的选择.

  • 有没有理由认为这比将DB名称作为命名空间字符串前缀更好? (5认同)

Tom*_*son 6

命名数据库并不完全符合redis的设计目标。首先,在为实现最佳性能而设计的系统中,当大多数用户仍然将所有内容都放入DB 0中时,向每个调用添加字符串查找并不是一个好主意。

设计目标的另一个目标是使核心保持简单-如果可以通过在客户端上合并现有命令来实现所请求的新命令而不会造成很大的性能损失,则不会将其添加到核心系统中。如果确实需要命名数据库,则更新客户端代码以读取字符串并将数字发送给redis并不容易。

  • “为每个调用添加一个字符串查找”——如果我错了,请纠正我,但它只需要为每个 `SELECT` 调用做一个查找(即,将符号名称映射到整数),不是吗? (2认同)