package com.fr.plugin.db.redis.core.visit.impl; import com.fr.base.TableData; import com.fr.plugin.db.redis.core.visit.AbstractVisitor; import com.fr.stable.ParameterProvider; import com.fr.stable.script.CalculatorProvider; import redis.clients.jedis.Jedis; import redis.clients.jedis.Tuple; import java.util.ArrayList; import java.util.List; import java.util.Set; /** * Created by richie on 2017/5/2. */ public class ZRangeVisitor extends AbstractVisitor { @Override public List> getContent(CalculatorProvider calculator, ParameterProvider[] ps, Jedis client, String query, int rowCount) throws Exception { String[] arr = query.trim().split(TOKEN_SPACE); if (arr.length < 4) { throw new IllegalArgumentException("Illegal query:" + query); } long start = Long.parseLong(trimCommand(arr[2])); long end = Long.parseLong(trimCommand(arr[3])); if (rowCount != TableData.RESULT_ALL) { end = start + rowCount; } Set data = client.zrangeWithScores(trimCommand(arr[1]), start, end); List column = new ArrayList(); List value = new ArrayList(); for (Tuple element : data) { column.add(element.getElement()); value.add(element.getScore()); } List> result = new ArrayList>(); result.add(column); result.add(value); return result; } @Override public String keyWord() { return "zrange"; } }