package com.cxy.redisclient.integration.key; import java.util.Iterator; import java.util.Set; import java.util.TreeSet; import com.cxy.redisclient.domain.DataNode; import com.cxy.redisclient.domain.NodeType; import com.cxy.redisclient.domain.RedisVersion; import com.cxy.redisclient.dto.Order; import com.cxy.redisclient.dto.OrderBy; import com.cxy.redisclient.integration.ConfigFile; import com.cxy.redisclient.integration.JedisCommand; public class ListContainerKeys extends JedisCommand { private int db; private String key; private Set<DataNode> keys = new TreeSet<DataNode>(); private Order order; private OrderBy orderBy; private boolean flat; public Set<DataNode> getKeys() { return keys; } public ListContainerKeys(int id, int db, String key, boolean flat, Order order, OrderBy orderBy) { super(id); this.db = db; this.key = key; this.order = order; this.flat = flat; this.orderBy = orderBy; } public ListContainerKeys(int id, int db, String key, boolean flat, Order order) { super(id); this.db = db; this.key = key; this.order = order; this.flat = flat; this.orderBy = OrderBy.NAME; } public ListContainerKeys(int id, int db, String key, boolean flat) { super(id); this.db = db; this.key = key; this.flat = flat; this.order = Order.Ascend; this.orderBy = OrderBy.NAME; } @Override public void command() { jedis.select(db); Set<String> nodekeys = null; int length; if (key != null) { nodekeys = jedis.keys(key + "*"); length = key.length(); } else { nodekeys = jedis.keys("*"); length = 0; } Iterator<String> it = nodekeys.iterator(); while (it.hasNext()) { String nextKey = it.next(); String[] ckey = nextKey.substring(length).split(ConfigFile.getSeparator()); if (ckey.length == 1) { NodeType nodeType = getValueType(nextKey); long size = getSize(nextKey); boolean persist = isPersist(nextKey); DataNode node; if(!flat) node = new DataNode(id, db, ckey[0], nodeType, size, persist, order, orderBy); else node = new DataNode(id, db, nextKey, nodeType, size, persist, order, orderBy); keys.add(node); } } } @Override public RedisVersion getSupportVersion() { return RedisVersion.REDIS_1_0; } }