使用 Redis 从存储的集合中获取所有唯一分数?
Fetch all unique scores from a stored set with Redis?
要添加地理数据,请使用以下代码
jedis.geoadd("storegeodata", 51.5074, 0.1278, "London");
//while member string is mostly json
jedis.geoadd("storegeodata", 51.5074, 0.1278, "{place: London}");
jedis.geoadd("storegeodata", 51.5074, 0.1278, "{place: London, lat: 51.5074, lon: 0.1278}");
虽然 geohash 因成员字符串不同而重复,如何检索唯一的基于 geohash 的值避免冗余
public Map<String, Object> checkRedisGeo(double lat, double lon, Jedis j) {
Map<String, Object> result = new HashMap<>();
try
{
GeoRadiusParam param = GeoRadiusParam.geoRadiusParam();
param.sortAscending();
param.withDist();
param.count(1);
System.out.println("lat :"+lat+" , lon :"+lon);
List<GeoRadiusResponse> response = j.georadius("commander",
lon,lat, 150, GeoUnit.M, param);
//System.out.println(response.size()+" size");
if(response.size() > 0)
{
for (GeoRadiusResponse geoRadiusResponse : response) {
System.out.println("lat :"+lat+" , lon :"+lon+", stringmember :"+geoRadiusResponse.getMemberByString());
//System.out.println(geoRadiusResponse.getDistance());
Object[] data= {geoRadiusResponse.getMemberByString()};
System.out.println(data);
result.put("result", data);
}
}else {
// sendEvents(streamEvent, null, streamEventChunk);
System.out.println("E");
}
} catch (Exception e) {
LOGGER.error("checkRedisGeo err : "+e);
}
return result;
}
哪个检索结果但是如何根据geohash/分值过滤掉,如何得到所有不同的分数?
以下是样本冗余数据
能够通过比较分数获得重复和独特的分数,因为分数是唯一的
并且多个成员存储相同的分数以下是相同的代码
Double previous_score = 0.0;
int DuplincatesCount = 0;
int UniqueCount = 0;
Set<String> values = jedis.zrange("rediskey", 0, -1);// get all the members
for (String member : values) {
Double current_score = jedis.zscore("rediskey", member);//each member looped
if (Double.compare(current_score, previous_score) == 0) { //comparing current score with previous
// score
DuplincatesCount++;
} else {
UniqueCount++;
}
previous_score = current_score;// score mapping
}
System.out.println("Duplincates entry " + DuplincatesCount);
System.out.println("Unique entry " + UniqueCount);
要添加地理数据,请使用以下代码
jedis.geoadd("storegeodata", 51.5074, 0.1278, "London");
//while member string is mostly json
jedis.geoadd("storegeodata", 51.5074, 0.1278, "{place: London}");
jedis.geoadd("storegeodata", 51.5074, 0.1278, "{place: London, lat: 51.5074, lon: 0.1278}");
虽然 geohash 因成员字符串不同而重复,如何检索唯一的基于 geohash 的值避免冗余
public Map<String, Object> checkRedisGeo(double lat, double lon, Jedis j) {
Map<String, Object> result = new HashMap<>();
try
{
GeoRadiusParam param = GeoRadiusParam.geoRadiusParam();
param.sortAscending();
param.withDist();
param.count(1);
System.out.println("lat :"+lat+" , lon :"+lon);
List<GeoRadiusResponse> response = j.georadius("commander",
lon,lat, 150, GeoUnit.M, param);
//System.out.println(response.size()+" size");
if(response.size() > 0)
{
for (GeoRadiusResponse geoRadiusResponse : response) {
System.out.println("lat :"+lat+" , lon :"+lon+", stringmember :"+geoRadiusResponse.getMemberByString());
//System.out.println(geoRadiusResponse.getDistance());
Object[] data= {geoRadiusResponse.getMemberByString()};
System.out.println(data);
result.put("result", data);
}
}else {
// sendEvents(streamEvent, null, streamEventChunk);
System.out.println("E");
}
} catch (Exception e) {
LOGGER.error("checkRedisGeo err : "+e);
}
return result;
}
哪个检索结果但是如何根据geohash/分值过滤掉,如何得到所有不同的分数?
以下是样本冗余数据
能够通过比较分数获得重复和独特的分数,因为分数是唯一的 并且多个成员存储相同的分数以下是相同的代码
Double previous_score = 0.0;
int DuplincatesCount = 0;
int UniqueCount = 0;
Set<String> values = jedis.zrange("rediskey", 0, -1);// get all the members
for (String member : values) {
Double current_score = jedis.zscore("rediskey", member);//each member looped
if (Double.compare(current_score, previous_score) == 0) { //comparing current score with previous
// score
DuplincatesCount++;
} else {
UniqueCount++;
}
previous_score = current_score;// score mapping
}
System.out.println("Duplincates entry " + DuplincatesCount);
System.out.println("Unique entry " + UniqueCount);