Geo redis,存储其他数据

Geo redis,存储其他数据,redis,Redis,我使用Redis Geo API存储位置,然后使用GEORADIUS获取它们。 由于我只能为每个位置设置纬度、经度和名称,因此当我使用GEORADIUS获取位置时,如何存储和检索其他数据 我想到的第一件事是使用GEOADDname作为键,然后在一个普通的键/值集中存储额外的数据,键与name相同,使用GEORADIUS获取位置数组,并通过该数组循环,使用name作为键获取其他数据 这是正确的方法还是有更好的方法呢?如果需要更新/访问其他数据,将其存储在不同的密钥(通常是散列)中是有意义的。但是,

我使用Redis Geo API存储位置,然后使用
GEORADIUS
获取它们。 由于我只能为每个位置设置纬度、经度和名称,因此当我使用
GEORADIUS
获取位置时,如何存储和检索其他数据

我想到的第一件事是使用
GEOADD
name
作为键,然后在一个普通的键/值集中存储额外的数据,键与
name
相同,使用GEORADIUS获取位置数组,并通过该数组循环,使用
name
作为键获取其他数据


这是正确的方法还是有更好的方法呢?

如果需要更新/访问其他数据,将其存储在不同的密钥(通常是散列)中是有意义的。但是,如果每个
名称
的其他数据是不可变的,并且只能结合地理查询访问,则您可以将其“嵌入”在
名称
之后,例如:

GEOADD geoset lon lat name:data1:data2:...:datan

当然,在获得查询的答复时,您必须“解码”结果,并将每个结果分解回其组成部分。

默认情况下
GEORADIUS
仅返回
name
,使用
和..
可以获得坐标、距离等。我的查询将如何获取所有内容,包括嵌入式数据?另外,如果我想存储一个对象,我必须将其存储为JSON字符串,对吗?其思想是,不只是名称,而是将其余数据附加到它。然后,仅仅获取名称就意味着获取整个有效负载。JSON是一种有效的编码,但请注意,它有点臃肿——更好(更精简)的替代方法是msgpack,或者像我的示例中那样只是一个简单的分隔符。还请注意,使用一点Lua,您可以将编码和/或解码移动到服务器上。我必须使用
name
作为删除元素的参考,将数据附加到
name
这不是我能做的事情。所以我认为使用另一个集合是唯一的方法,除非服务器脚本有另一种方法,但是我对redis是新手,我不知道Lua。