redis中通过geohash查询key中的member值无法查询出来的一种情况

       最近两天在使用redis的geo地理空间命令的时候发现通过字符串长度过长,使用正常的字符串查询方式是无法查询出来的值,如下的命令

geohash merchantLoc 2a10754138bf441da443126a2ae7c18b

       这个命令是为了获取key为merchantLoc下的member值为2a10754138bf441da443126a2ae7c18b的字符串的信息,但是运行这个命令的时候无论如何你查询出来的值都是(nil),但是真实情况是有值的,我们可以通过下面这个命令来看存储的值信息

georadius merchantLoc 106 29 100 km with withcoord withdist

       运行这个命令是查询一个经纬度的区域半径范围内的所有空间坐标,结果如下

1) 1) "\"2a10754138bf441da443126a2ae7c18b\""
   2) "85.0116"
   3) 1) "106.49912327527999878"
      2) "29.62830620445038932"
2) 1) "\"c2e3be963ae947ef8d9e6888f9b5da79\""
   2) "85.0116"
   3) 1) "106.49912327527999878"
      2) "29.62830620445038932"
3) 1) "\"da38ccaeeb6a4d6a8681736b480c3203\""
   2) "85.0116"
   3) 1) "106.49912327527999878"
      2) "29.62830620445038932"
4) 1) "\"p1\""
   2) "85.0116"
   3) 1) "106.49912327527999878"
      2) "29.62830620445038932"

        可以看出来2a10754138bf441da443126a2ae7c18b是有值的,这个时候细心的话已经发现2a10754138bf441da443126a2ae7c18b的表示方式有所不同,看下member值比较短的展示方式

127.0.0.1:7379[4]> georadius us 10 11 100 km withcoord withdist
1) 1) "us1"
   2) "0.0002"
   3) 1) "10.00000208616256714"
      2) "10.9999991200151257"

        注意看到没有us1是没有"\"的,而2a10754138bf441da443126a2ae7c18b是有"\"来限定的,这个时候在查询通过"\"来限定的2a10754138bf441da443126a2ae7c18b值就可以出来了

127.0.0.1:7379[4]> geohash merchantLoc '2a10754138bf441da443126a2ae7c18b' "\"c2e3be963ae947ef8d9e6888f9b5da79\""
1) (nil)
2) "wm78x3wm3k0"

       所以如果在正常情况下你没有查询出来值的话就需要考虑下是不是member的值太长了,需要添加限定符了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值