Redis 3.2GEO 地理位置新特性试用

首先下载Redis 3.2

wget http://download.redis.io/releases/redis-3.2.3.tar.gz
tar xzf redis-3.2.3.tar.gz
cd redis-3.2.3
make

启动Rdis:

src/redis-server redis.conf  (后面是配置文件)

启动操作工具:

Reis-cli
 src/redis-cli -h 127.0.0.1 -p 6399 --raw(能保证中文输出而不是"\xd6\xd0")



添加位置:

GEOADD beijing 113.2099647 23.593675 五道口
GEOADD beijing 113.2099643 23.593674 上地



获取位置:

127.0.0.1:6399> GEOPOS beijing 上地
113.20996195077896118
23.59367501967128788


支持多给位置的查询:


获取指定范围内地点:

GEORADIUS  beijing 113.2099647 23.593675 900 m


获取两点之间的距离

GEODIST beijing 上地 五道口 


(注:所有返回的单位默认都是M,此处坐标是随便写的)



Python 代码调用:

添加以及查询

def add(request):
	if not request.user.is_authenticated:
		return HttpResponse("error")
	title = request.GET['title']
	lat = request.GET['lat']
	lng = request.GET['lng']
	r = redis.Redis(host='127.0.0.1', port=6399, db=0)
	values = (lng,lat,title)
	save = r.geoadd("beijing",*values)
	return HttpResponseRedirect("/lbs/index")

def get_geo(request):
	r = redis.Redis(host='127.0.0.1', port=6399, db=0)
	lat = request.GET['lat']
	lng = request.GET['lng']
	back = r.georadius('beijing',lng, lat,  900,sort="ASC",count=10)
	reg_list = r.geopos("<span style="font-family: Arial, Helvetica, sans-serif;">beijing</span>",*back)
	send_list = []
	for s in range(len(back)):
		send_list.append({"title":back[s],"lat":reg_list[s][1],"lng":reg_list[s][0]})
	send_msg = json.dumps(send_list)
	return HttpResponse(send_msg)



  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值