基于.Net Core的Redis:实现查询附近的地理信息
2021-01-17 02:12
标签:summary art 客户端 实例 hid isp find gem mem 1、使用的Redis客户端为:ServiceStack.Redis 3、实例Demo 基于.Net Core的Redis:实现查询附近的地理信息 标签:summary art 客户端 实例 hid isp find gem mem 原文地址:https://www.cnblogs.com/Er-mao/p/13371619.html
2、Redis 中的 GEO
Redis是我们最为熟悉的K-V数据库,它常被拿来作为高性能的缓存数据库来使用,大部分项目都会用到它。从3.2版本开始它开始提供了GEO能力,用来实现诸如附近位置(e.g.某小区附近的篮球场 )、计算距离等这类依赖于地理位置信息的功能。
本次实例Demo中用到的GEO命令有:
Redis命令
描述
GEOADD key longitude latitude member [longitude latitude member …]
将指定的地理空间位置(纬度、经度、名称)添加到指定的 key 中
GEODIST key member1 member2 [unit]
返回两个给定位置之间的距离
GEORADIUS key longitude latitude radius
以给定的经纬度为中心, 找出某一半径内的元素
1 using ServiceStack.Redis;
2 using System;
3 using System.Collections.Generic;
4 using System.Text;
5
6 namespace RedisDemo
7 {
8 class NearByDemo
9 {
10 public static void Start()
11 {
12 var redisMangement = new RedisManagerPool("127.0.0.1:6379");
13 var client = redisMangement.GetClient();
14
15 //---写入地理信息---
16 RedisGeo[] redisGeos = new RedisGeo[]
17 {
18 new RedisGeo()
19 {
20 Longitude=117.12,
21 Latitude=39.08,
22 Member="tianjin"
23 },
24 new RedisGeo()
25 {
26 Longitude=114.29,
27 Latitude=38.02,
28 Member="beijing"
29 }
30 };
31 //GEOADD key longitude latitude member [longitude latitude member ...]
32 //summary: Add one or more geospatial items in the geospatial index represented using a sorted set
33 client.AddGeoMembers("geo", redisGeos);
34
35 //---获取两个地理位置之间的距离---
36 //GEODIST key member1 member2 [unit]
37 //summary: Returns the distance between two members of a geospatial index
38 double distance = client.CalculateDistanceBetweenGeoMembers("geo", "tianjin", "beijing", "km");
39 Console.WriteLine(distance);
40
41 //---获取某城市方圆多少公里内的其他城市(狭义)---
42 //GEORADIUS key longitude latitude radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC|DESC] [STORE key] [STOREDIST key]
43 //summary: Query a sorted set representing a geospatial index to fetch members matching a given maximum distance from a point
44 List
上一篇:白话web安全
文章标题:基于.Net Core的Redis:实现查询附近的地理信息
文章链接:http://soscw.com/index.php/essay/42983.html