【发布时间】:2016-09-08 19:42:14
【问题描述】:
我有如下数据:
{
location: 'zimbabwe',
phone_num: 123-123-1234,
ext: 2222
}
或
{
location: 'puerto rico',
phone_num: 222-222-2222,
ext: 8888
}
我的最终用户需要能够查询 REST API 并发送如下内容:
http://myapp/internalext/123-123-1234
应该返回一个内部扩展值 2222。
但我还需要能够支持这样的查询:
http://myapp/phonenumber/2222@abc.com
这应该返回给我一个 123-123-1234 的值
为了能够支持这样的查询,我想知道在 redis 中创建数据的最佳方法是什么。我必须创建一个 node-redis web api。
到目前为止,我已经尝试过创建这样的数据:
127.0.0.1:6379> set phone:1
"{\"id\":1, \"locid\":1, \"loc_name\":\"zimbabwe\", \"extension\":\"2222\", \"e164\":\"1231231234\"}"
然后我创建了一个引用同一个电话对象的二级索引:
127.0.0.1:6379> hset phone:lookup:e164 1231231234 1
现在,当我查询时,我必须进行两次查找才能找到我想要的 ifnormation。因此,如果用户将完整的电话号码传递给我,我必须进行以下查询:
1. First lookup using the e164 as key:
127.0.0.1:6379> hget phone:lookup:e164 1231231234
"1"
2. now you know that it's the first key in the "phone" set(?? i dunno if this is the terminology)
127.0.0.1:6379> get phone:1
"{\"id\":1, \"locid\":1, \"loc_name\":\"zimbabwe\", \"extension\":\"2222\", \"e164\":\"1231231234\"}"
127.0.0.1:6379>
问题
这是为这些类型的 GET 请求组织/创建我的 redis 数据的最佳方式吗? 我只是在阅读有关哈希的信息。但我还不够熟悉,不知道该走哪条路。 另外,鉴于上述数据,我将如何要求查看所有电话号码及其数据?
【问题讨论】:
-
需要更多地了解您的要求。是否总是从电话号码获取分机,反之亦然,或者您可能需要从分机或电话号码获取位置?
-
@KarthikeyanGopall 主要翻译将在电话号码和分机之间......但是一旦我确定了正确的“记录”,我可能需要返回的不仅仅是一个字段。但是因为记录太小/没有太多字段,我可能会返回所有内容,除非您发现一些问题?
标签: rest redis node-redis