/// <summary> /// 返回两个给定位置之间的距离 /// </summary> /// <param name="timeSpan"></param> /// <param name="key"></param> /// <param name="member1"></param> /// <param name="member2"></param> /// <param name="geoUnit"></param> /// <returns></returns> public async Task <double> GeoDistAsync(TimeSpan timeSpan, string key, string member1, string member2, GeoUnit geoUnit = GeoUnit.m) { double result; var data = await _cnn.DoWithMutiParamsAsync(RequestType.GEODIST, timeSpan, key, member1, member2, geoUnit.ToString()); double.TryParse(data.Data, out result); return(result); }
public void GeoDistAsync(string key, string member1, string member2, GeoUnit geoUnit = GeoUnit.m) { var cmd = _redisCode.Coder(RequestType.GEODIST, key, member1, member2, geoUnit.ToString()); _batchData.Add(new BatchItem(RequestType.GEODIST, cmd)); }
/// <summary> /// 找出位于指定范围内的元素, 但是 GEORADIUSBYMEMBER 的中心点是由给定的位置元素决定的, 而不是像 GEORADIUS 那样, 使用输入的经度和纬度来决定中心点 /// </summary> /// <param name="timeSpan"></param> /// <param name="key"></param> /// <param name="member"></param> /// <param name="dist"></param> /// <param name="geoUnit"></param> /// <param name="asc"></param> /// <param name="count"></param> /// <returns></returns> public async Task <List <GeoDistInfo> > GeoRandiusByMemberAsync(TimeSpan timeSpan, string key, string member, double dist, GeoUnit geoUnit = GeoUnit.m, bool asc = true, int count = 20) { var data = await _cnn.DoWithMutiParamsAsync(RequestType.GEORADIUSBYMEMBER, timeSpan, key, member, dist.ToString(), geoUnit.ToString(), "WITHDIST", "WITHCOORD", (asc ? "ASC" : "DESC"), "COUNT", count.ToString()); return(data.ToGeoDistInfos()); }
/// <summary> /// 以给定的经纬度为中心, 返回键包含的位置元素当中, 与中心的距离不超过给定最大距离的所有位置元素 /// </summary> /// <param name="key"></param> /// <param name="lng"></param> /// <param name="lat"></param> /// <param name="dist"></param> /// <param name="geoUnit"></param> /// <param name="asc"></param> /// <param name="count"></param> /// <returns></returns> public List <GeoDistInfo> GeoRandius(string key, double lng, double lat, double dist, GeoUnit geoUnit = GeoUnit.m, bool asc = true, int count = 20) { return(RedisConnection.DoWithMutiParams(RequestType.GEORADIUS, key, lng.ToString(), lat.ToString(), dist.ToString(), geoUnit.ToString(), "WITHDIST", "WITHCOORD", (asc ? "ASC" : "DESC"), "COUNT", count.ToString()).ToGeoDistInfos()); }
/// <summary> /// 返回两个给定位置之间的距离 /// </summary> /// <param name="key"></param> /// <param name="member1"></param> /// <param name="member2"></param> /// <param name="geoUnit"></param> /// <returns></returns> public double GeoDist(string key, string member1, string member2, GeoUnit geoUnit = GeoUnit.m) { double result = 0D; double.TryParse(RedisConnection.DoWithMutiParams(RequestType.GEODIST, key, member1, member2, geoUnit.ToString()).Data, out result); return(result); }
/// <summary> /// 以给定的经纬度为中心, 返回键包含的位置元素当中, 与中心的距离不超过给定最大距离的所有位置元素 /// </summary> /// <param name="timeSpan"></param> /// <param name="key"></param> /// <param name="lng"></param> /// <param name="lat"></param> /// <param name="dist"></param> /// <param name="geoUnit"></param> /// <param name="asc"></param> /// <param name="count"></param> /// <returns></returns> public async Task <List <GeoDistInfo> > GeoRandiusAsync(TimeSpan timeSpan, string key, double lng, double lat, double dist, GeoUnit geoUnit = GeoUnit.m, bool asc = true, int count = 20) { var data = await RedisConnection.DoWithMutiParamsAsync(RequestType.GEORADIUS, timeSpan, key, lng.ToString(), lat.ToString(), dist.ToString(), geoUnit.ToString(), "WITHDIST", "WITHCOORD", (asc ? "ASC" : "DESC"), "COUNT", count.ToString()); return(data.ToGeoDistInfos()); }
/// <summary> /// 找出位于指定范围内的元素, 但是 GEORADIUSBYMEMBER 的中心点是由给定的位置元素决定的, 而不是像 GEORADIUS 那样, 使用输入的经度和纬度来决定中心点 /// </summary> /// <param name="key"></param> /// <param name="member"></param> /// <param name="dist"></param> /// <param name="geoUnit"></param> /// <param name="asc"></param> /// <param name="count"></param> /// <returns></returns> public List <GeoDistInfo> GeoRandiusByMember(string key, string member, double dist, GeoUnit geoUnit = GeoUnit.m, bool asc = true, int count = 20) { return(_cnn.DoWithMutiParams(RequestType.GEORADIUSBYMEMBER, key, member, dist.ToString(), geoUnit.ToString(), "WITHDIST", "WITHCOORD", (asc ? "ASC" : "DESC"), "COUNT", count.ToString()).ToGeoDistInfos()); }