当前位置:  开发笔记 > 后端 > 正文

Redis键中冒号的用途是什么?

如何解决《Redis键中冒号的用途是什么?》经验,为你挑选了2个好方法。

我正在学习如何将Redis用于我的项目.我没有理解的一件事是在键的名称中使用的冒号究竟是什么.

我看过这样的关键名称:

users:bob
color:blue
item:bag

冒号是否将键分成几类并更快地找到键?如果是这样,在命名键时可以使用多个冒号将它们分解为子类别吗?最后他们是否与在Redis服务器中定义不同的数据库有关?

我已阅读文档,并就此事进行了大量谷歌搜索,但奇怪的是我找不到任何讨论此事的内容.



1> Tobias P...:

冒号在早期的redis版本中作为存储命名空间数据的概念.在早期版本中,redis仅支持字符串,如果您想存储电子邮件,并且"bob"的年龄必须将其全部存储为字符串,那么使用冒号:

SET user:bob:email bob@example.com
SET user:bob:age 31

它们在redis中没有特殊的处理或性能特征,唯一的目的是命名数据以再次找到它.现在,您可以使用哈希来存储大多数已克隆的键:

 HSET user:bob email bob@example.com
 HSET user:bob age 31

您不必将哈希命名为"user:bob",我们可以将其命名为"bob",但是使用用户前缀命名它,我们立即知道此哈希应该/可能具有哪些信息.


我想知道为什么```被选中时```在各种语言中似乎更常见.
也许与大多数语言中用于对象访问的点运算符完全不同

2> Fabian Jakob..:

冒号是构建键的一种方式.它们不以任何方式由redis解释.您也可以使用您喜欢的任何其他分隔符或根本不使用分隔符.我个人更喜欢/,这使我的键看起来像文件系统路径.它们对性能没有影响但你不应该过长,因为redis必须将所有密钥保存在内存中.

一个好的密钥结构对于利用sort命令的强大功能非常重要,这是redis对SQL连接的回答.

GET user:bob:color   -> 'blue'
GET user:alice:color -> 'red'

SMEMBERS user:peter:friends -> alice, bob

SORT user:peter:friends BY NOSORT GET user:*:color   -> 'blue', 'red'

您可以看到键结构使SORT能够通过引用结构化键来查找用户的颜色.


在尝试使用Redis的过程中,意识到诸如redis commander(https://github.com/joeferner/redis-commander)之类的UI工具在键以冒号而不是斜杠构造时显示出更好的可视化效果。因此,我对冒号的历史意义投了赞成票。
推荐阅读
360691894_8a5c48
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有