Как связать все географические записи с ключом? Я могу поместить sh данные в Redis и получить их на основе [lon, lat, buffer], используя
jedis.georadius(key, lon,lat, radius, GeoUnit.KM,GeoRadiusParam.geoRadiusParam().withCoord());
Есть ли способ получить все записи, используя только ключ? Ниже приведен код, который я использовал для извлечения записей из redis с помощью геобуфера.
public Map<String, Object> getFromRedis(String key, Double lat, Double lon, Integer radii, Integer resultCount, boolean hasType, String typekey) {
Map<String, Object> result = new HashMap<>();
ArrayList<Map<String,Object>> geoObj= new ArrayList<>();
boolean gotresult = false;
try(Jedis jedis=new Jedis("localhost",6379);)
{
GeoRadiusParam param = GeoRadiusParam.geoRadiusParam();
param.sortAscending();
param.withDist();
param.count(resultCount);
List<GeoRadiusResponse> response;
response = jedis.georadius(key,lat,lon, radii, GeoUnit.M, param);//redis zset key, lon,lat,radii,..
if(response.size() > 0)
{
for (GeoRadiusResponse geoRadiusResponse : response) {
Map<String, Object> resultObj = new HashMap<>();
Object[] data= {geoRadiusResponse.getMemberByString()};
LOGGER.info("Got Result from Redis Server :: "+data);
gotresult = true;
for(Object o : data)
{
JSONObject jObject = new JSONObject(o.toString());
Iterator<?> keys = jObject.keys();
while( keys.hasNext() ){
String keyObj = (String)keys.next();
String value = jObject.getString(keyObj);
resultObj.put(keyObj, value);
}
LOGGER.info("Fetched Value : "+resultObj);
geoObj.add(resultObj);
}
}
result.put("result", geoObj);
}
else {
LOGGER.info("Unable to find matching result in Redis server");
}
} catch (Exception e) {
LOGGER.error("Redis Fetch result failed");
LOGGER.error("Error : "+e);
}
result.put("status", gotresult);
return result;
}
В то время как для pu sh я использую
jedis.geoadd(key, lon, lat, String);
Пытаюсь получить все записи для получения из только ключ (apicache) введите описание изображения здесь