Redis應用介紹



redis是一個key-value存儲系統。和Memcached類似,它支持存儲的value類型相對更多,包括string(字符串)、list(鏈表)、set(集合)和zset(有序集合)。這些數據類型都支持push/pop、add/remove及取交集並集和差集及更豐富的操作,而且這些操作都是原子性的。在此基礎上,redis支持各種不同方式的排序。與memcached一樣,爲了保證效率,數據都是緩存在內存中。區別的是redis會週期性的把更新的數據寫入磁盤或者把修改操作寫入追加的記錄文件,並且在此基礎上實現了master-slave(主從)同步。

  Redis 是一個高性能的key-value數據庫。 redis的出現,很大程度補償了memcached這類keyvalue存儲的不足,在部 分場合可以對關係數據庫起到很好的補充作用。它提供了Python,Ruby,Erlang,PHP客戶端,使用很方便。

redis目前提供四種數據類型:string,list,set及zset(sorted set)。   

(以上來源百度百科)

最近我們產品也用了Redis.貼出相關的配置和封裝的代碼。

Spring 配置:

[html] view plaincopy
  1. <!-- master連接池參數 -->  
  2.     <bean id="masterPoolConfig" class="redis.clients.jedis.JedisPoolConfig">  
  3.         <property name="maxActive"  value="20"/>  
  4.         <property name="maxIdle" value="10"/>  
  5.         <property name="maxWait" value="1000"/>  
  6.     </bean>  
  7.     <!-- slave連接池參數 -->  
  8.     <bean id="slavePoolConfig" class="redis.clients.jedis.JedisPoolConfig">  
  9.         <property name="maxActive"  value="50"/>  
  10.         <property name="maxIdle" value="20"/>  
  11.         <property name="maxWait" value="1000"/>  
  12.     </bean>  
  13.     <!-- 主機地址 -->  
  14.     <bean id="jedisPool" class="redis.clients.jedis.JedisPool">  
  15.         <constructor-arg index="0" ref="masterPoolConfig"/>  
  16.         <constructor-arg index="1" value="10.60.30.27"/>  
  17.         <constructor-arg index="2" value="6379" type="int"/>  
  18.     </bean>  
  19.     <!-- 從機地址 -->  
  20.     <bean id="shardInfo-0" class="redis.clients.jedis.JedisShardInfo">  
  21.         <constructor-arg index="0" value="10.60.30.27" />  
  22.         <constructor-arg index="1" value="6378" type="int"/>    
  23.     </bean>  
  24.     <bean id="shardInfo-1" class="redis.clients.jedis.JedisShardInfo">  
  25.         <constructor-arg index="0" value="10.60.30.27" />  
  26.         <constructor-arg index="1" value="6378" type="int"/>    
  27.     </bean>  
  28.     <bean id="shardedJedisPool" class="redis.clients.jedis.ShardedJedisPool">  
  29.         <constructor-arg index="0" ref="slavePoolConfig"/>  
  30.         <constructor-arg index="1">  
  31.             <list>  
  32.                 <ref bean="shardInfo-0"/>  
  33.                 <ref bean="shardInfo-1"/>  
  34.             </list>  
  35.         </constructor-arg>  
  36.     </bean>  
相關Redis的Java封裝:

[java] view plaincopy
  1. import java.util.List;  
  2. import java.util.Map;  
  3. import java.util.Set;  
  4.   
  5.   
  6. import javax.annotation.PostConstruct;  
  7.   
  8.   
  9. import org.springframework.beans.factory.annotation.Autowired;  
  10. import org.springframework.stereotype.Service;  
  11.   
  12.   
  13. import redis.clients.jedis.BinaryClient.LIST_POSITION;  
  14. import redis.clients.jedis.Jedis;  
  15. import redis.clients.jedis.JedisPool;  
  16. import redis.clients.jedis.ShardedJedis;  
  17. import redis.clients.jedis.ShardedJedisPool;  
  18. import redis.clients.jedis.SortingParams;  
  19. import redis.clients.util.SafeEncoder;  
  20. @Service("redisBase")  
  21. public class RedisBase{  
  22.   
  23.   
  24.      @Autowired  
  25.      private JedisPool jedisPool;  
  26.      @Autowired  
  27.      private ShardedJedisPool shardedJedisPool;  
  28.        
  29.      /**操作Key的方法*/  
  30.      public Keys KEYS;  
  31.      /**對存儲結構爲String類型的操作*/  
  32.      public Strings STRINGS;  
  33.      /**對存儲結構爲List類型的操作*/  
  34.      public Lists LISTS;  
  35.      /**對存儲結構爲Set類型的操作*/  
  36.      public Sets SETS;  
  37.      /**對存儲結構爲HashMap類型的操作*/  
  38.      public Hash HASH;  
  39.      /**對存儲結構爲Set(排序的)類型的操作*/  
  40.      public SortSet SORTSET;  
  41.        
  42.        
  43.      @PostConstruct  
  44.      public void init(){  
  45.          KEYS=new Keys();  
  46.          STRINGS=new Strings();  
  47.          LISTS=new Lists();  
  48.          SETS=new Sets();  
  49.          SORTSET=new SortSet();  
  50.          HASH=new Hash();  
  51.      }  
  52.        
  53.      //TODO  
  54.      public class Keys{  
  55.            
  56.            
  57.          /** 
  58.           * 更改key,僅當新key不存在時才執行 
  59.           * @param String oldkey 
  60.           * @param String newkey 
  61.           * @return 狀態碼 
  62.           * */  
  63.          public String flushAll(){  
  64.              Jedis jedis=jedisPool.getResource();  
  65.              String stata=jedis.flushAll();  
  66.              jedisPool.returnResource(jedis);  
  67.              return stata;  
  68.          }  
  69.            
  70.          /** 
  71.           * 更改key 
  72.           * @param String oldkey 
  73.           * @param String newkey 
  74.           * @return 狀態碼 
  75.           * */  
  76.          public String rename(String oldkey,String newkey){  
  77.              return rename(SafeEncoder.encode(oldkey),SafeEncoder.encode(newkey));  
  78.          }  
  79.            
  80.          /** 
  81.           * 更改key,僅當新key不存在時才執行 
  82.           * @param String oldkey 
  83.           * @param String newkey 
  84.           * @return 狀態碼 
  85.           * */  
  86.          public long renamenx(String oldkey,String newkey){  
  87.              Jedis jedis=jedisPool.getResource();  
  88.              long status =jedis.renamenx(oldkey, newkey);  
  89.              jedisPool.returnResource(jedis);  
  90.              return status;  
  91.          }  
  92.            
  93.          /** 
  94.           * 更改key 
  95.           * @param String oldkey 
  96.           * @param String newkey 
  97.           * @return 狀態碼 
  98.           * */  
  99.          public String rename(byte[] oldkey,byte[] newkey){  
  100.              Jedis jedis=jedisPool.getResource();  
  101.              String status =jedis.rename(oldkey, newkey);  
  102.              jedisPool.returnResource(jedis);  
  103.              return status;  
  104.          }  
  105.            
  106.          /** 
  107.           * 設置key的過期時間,以秒爲單位 
  108.           * @param String key 
  109.           * @param 時間,已秒爲單位 
  110.           * @return 影響的記錄數 
  111.           * */  
  112.          public long expired(String key,int seconds){  
  113.              Jedis jedis=jedisPool.getResource();  
  114.              long count =jedis.expire(key, seconds);  
  115.              jedisPool.returnResource(jedis);  
  116.              return count;  
  117.          }  
  118.            
  119.          /** 
  120.           * 設置key的過期時間,它是距曆元(即格林威治標準時間 1970 年 1 月 1 日的 00:00:00,格里高利曆)的偏移量。 
  121.           * @param String key 
  122.           * @param 時間,已秒爲單位 
  123.           * @return 影響的記錄數 
  124.           * */  
  125.          public long expireAt(String key,long timestamp){  
  126.              Jedis jedis=jedisPool.getResource();  
  127.              long count =jedis.expireAt(key, timestamp);  
  128.              jedisPool.returnResource(jedis);  
  129.              return count;  
  130.          }  
  131.            
  132.          /** 
  133.           * 查詢key的過期時間 
  134.           * @param String key 
  135.           * @return 以秒爲單位的時間表示 
  136.           * */  
  137.          public long ttl(String key){  
  138.              ShardedJedis sjedis=shardedJedisPool.getResource();  
  139.              long len=sjedis.ttl(key);  
  140.              shardedJedisPool.returnResource(sjedis);  
  141.              return len;  
  142.          }  
  143.            
  144.          /** 
  145.           * 取消對key過期時間的設置 
  146.           *@param key 
  147.           *@return 影響的記錄數 
  148.           * */  
  149.          public long persist(String key){  
  150.              Jedis jedis=jedisPool.getResource();  
  151.              long count =jedis.persist(key);  
  152.              jedisPool.returnResource(jedis);  
  153.              return count;  
  154.          }  
  155.          /** 
  156.           * 刪除keys對應的記錄,可以是多個key 
  157.           * @param String... keys 
  158.           * @return 刪除的記錄數 
  159.           * */  
  160.          public long del(String... keys){  
  161.              Jedis jedis=jedisPool.getResource();  
  162.              long count =jedis.del(keys);  
  163.              jedisPool.returnResource(jedis);  
  164.              return count;  
  165.          }  
  166.            
  167.          /** 
  168.           * 刪除keys對應的記錄,可以是多個key 
  169.           * @param String... keys 
  170.           * @return 刪除的記錄數 
  171.           * */  
  172.          public long del(byte[]... keys){  
  173.              Jedis jedis=jedisPool.getResource();  
  174.              long count =jedis.del(keys);  
  175.              jedisPool.returnResource(jedis);  
  176.              return count;  
  177.          }  
  178.            
  179.          /** 
  180.           * 判斷key是否存在 
  181.           * @param String key 
  182.           * @return boolean 
  183.           * */  
  184.          public boolean exists(String key){  
  185.              ShardedJedis sjedis=shardedJedisPool.getResource();  
  186.              boolean exis=sjedis.exists(key);  
  187.              shardedJedisPool.returnResource(sjedis);  
  188.              return exis;  
  189.          }  
  190.            
  191.          /** 
  192.           * 對List,Set,SortSet進行排序,如果集合數據較大應避免使用這個方法 
  193.           * @param String key 
  194.           * @return List<String> 集合的全部記錄 
  195.           * **/  
  196.          public List<String> sort(String key){  
  197.              ShardedJedis sjedis=shardedJedisPool.getResource();  
  198.              List<String> list=sjedis.sort(key);  
  199.              shardedJedisPool.returnResource(sjedis);  
  200.              return list;  
  201.          }  
  202.            
  203.          /** 
  204.           * 對List,Set,SortSet進行排序或limit 
  205.           * @param String key 
  206.           * @param SortingParams parame 定義排序類型或limit的起止位置. 
  207.           * @return List<String> 全部或部分記錄 
  208.           * **/  
  209.          public List<String> sort(String key,SortingParams parame){  
  210.              ShardedJedis sjedis=shardedJedisPool.getResource();  
  211.              List<String> list=sjedis.sort(key, parame);  
  212.              shardedJedisPool.returnResource(sjedis);  
  213.              return list;  
  214.          }  
  215.            
  216.          /** 
  217.           * 返回指定key存儲的類型 
  218.           * @param String key 
  219.           * @return String  string|list|set|zset|hash 
  220.           * **/  
  221.          public String type(String key){  
  222.              ShardedJedis sjedis=shardedJedisPool.getResource();  
  223.              String type=sjedis.type(key);  
  224.              shardedJedisPool.returnResource(sjedis);  
  225.              return type;  
  226.          }  
  227.          /** 
  228.           * 查找所有匹配給定的模式的鍵 
  229.           * @param String key的表達式,*表示多個,?表示一個 
  230.           * */  
  231.          public Set<String> kyes(String pattern){  
  232.              Jedis jedis=jedisPool.getResource();  
  233.              Set<String> set =jedis.keys(pattern);  
  234.              jedisPool.returnResource(jedis);  
  235.              return set;  
  236.          }  
  237.      }  
  238.        
  239.      //TODO  
  240.      public class Sets{  
  241.            
  242.          /** 
  243.           * 向Set添加一條記錄,如果member已存在返回0,否則返回1 
  244.           * @param String key 
  245.           * @param String member 
  246.           * @return 操作碼,0或1 
  247.           * */  
  248.          public long sadd(String key,String member){  
  249.              Jedis jedis=jedisPool.getResource();  
  250.              long s =jedis.sadd(key, member);  
  251.              jedisPool.returnResource(jedis);  
  252.              return s;  
  253.          }  
  254.            
  255.          /** 
  256.           * 獲取給定key中元素個數 
  257.           * @param String key 
  258.           * @return 元素個數 
  259.           * */  
  260.          public long scard(String key){  
  261.              ShardedJedis sjedis=shardedJedisPool.getResource();  
  262.              long len=sjedis.scard(key);  
  263.              shardedJedisPool.returnResource(sjedis);  
  264.              return len;  
  265.          }  
  266.            
  267.          /** 
  268.           * 返回從第一組和所有的給定集合之間的差異的成員 
  269.           * @param String... keys 
  270.           * @return 差異的成員集合 
  271.           * */  
  272.          public Set<String> sdiff(String...keys){  
  273.              Jedis jedis=jedisPool.getResource();  
  274.              Set<String> set =jedis.sdiff(keys);  
  275.              jedisPool.returnResource(jedis);  
  276.              return set;  
  277.          }  
  278.            
  279.          /** 
  280.           * 這個命令等於sdiff,但返回的不是結果集,而是將結果集存儲在新的集合中,如果目標已存在,則覆蓋。 
  281.           * @param String newkey 新結果集的key 
  282.           * @param String... keys 比較的集合 
  283.           * @return 新集合中的記錄數 
  284.           * **/  
  285.          public long sdiffstore(String newkey,String...keys){  
  286.              Jedis jedis=jedisPool.getResource();  
  287.              long s =jedis.sdiffstore(newkey, keys);  
  288.              jedisPool.returnResource(jedis);  
  289.              return s;  
  290.          }  
  291.            
  292.          /** 
  293.           * 返回給定集合交集的成員,如果其中一個集合爲不存在或爲空,則返回空Set 
  294.           * @param String... keys 
  295.           * @return 交集成員的集合 
  296.           * **/  
  297.          public Set<String> sinter(String...keys){  
  298.              Jedis jedis=jedisPool.getResource();  
  299.              Set<String> set =jedis.sinter(keys);  
  300.              jedisPool.returnResource(jedis);  
  301.              return set;  
  302.          }  
  303.            
  304.          /** 
  305.           * 這個命令等於sinter,但返回的不是結果集,而是將結果集存儲在新的集合中,如果目標已存在,則覆蓋。 
  306.           * @param String newkey 新結果集的key 
  307.           * @param String... keys 比較的集合 
  308.           * @return 新集合中的記錄數 
  309.           * **/  
  310.          public long sinterstore(String newkey,String...keys){  
  311.              Jedis jedis=jedisPool.getResource();  
  312.              long s =jedis.sinterstore(newkey, keys);  
  313.              jedisPool.returnResource(jedis);  
  314.              return s;  
  315.          }  
  316.            
  317.          /** 
  318.           * 確定一個給定的值是否存在 
  319.           * @param String key 
  320.           * @param String member 要判斷的值 
  321.           * @return 存在返回1,不存在返回0 
  322.           * **/  
  323.          public boolean sismember(String key,String member){  
  324.              ShardedJedis sjedis=shardedJedisPool.getResource();  
  325.              boolean s= sjedis.sismember(key, member);  
  326.              shardedJedisPool.returnResource(sjedis);  
  327.              return s;  
  328.          }  
  329.            
  330.          /** 
  331.           * 返回集合中的所有成員 
  332.           * @param String key 
  333.           * @return 成員集合 
  334.           * */  
  335.          public Set<String> smembers(String key){  
  336.              ShardedJedis sjedis=shardedJedisPool.getResource();  
  337.              Set<String> set= sjedis.smembers(key);  
  338.              shardedJedisPool.returnResource(sjedis);  
  339.              return set;  
  340.          }  
  341.            
  342.          /** 
  343.           * 將成員從源集合移出放入目標集合 
  344.           * <br/>如果源集合不存在或不包哈指定成員,不進行任何操作,返回0<br/> 
  345.           * 否則該成員從源集合上刪除,並添加到目標集合,如果目標集合中成員已存在,則只在源集合進行刪除 
  346.           * @param String srckey 源集合 
  347.           * @param String dstkey 目標集合 
  348.           * @param String member 源集合中的成員 
  349.           * @return 狀態碼,1成功,0失敗 
  350.           * */         
  351.          public long smove(String srckey,String dstkey,String member){  
  352.              Jedis jedis=jedisPool.getResource();  
  353.              long s =jedis.smove(srckey, dstkey, member);  
  354.              jedisPool.returnResource(jedis);  
  355.              return s;  
  356.          }  
  357.            
  358.          /** 
  359.           * 從集合中刪除成員 
  360.           * @param String key 
  361.           * @return 被刪除的成員 
  362.           * */  
  363.          public String spop(String key){  
  364.              Jedis jedis=jedisPool.getResource();  
  365.              String s =jedis.spop(key);  
  366.              jedisPool.returnResource(jedis);  
  367.              return s;  
  368.          }  
  369.            
  370.          /** 
  371.           * 從集合中刪除指定成員 
  372.           * @param String key 
  373.           * @param String member 要刪除的成員 
  374.           * @return 狀態碼,成功返回1,成員不存在返回0 
  375.           * */  
  376.          public long srem(String key,String member){  
  377.              Jedis jedis=jedisPool.getResource();  
  378.              long s =jedis.srem(key,member);  
  379.              jedisPool.returnResource(jedis);  
  380.              return s;  
  381.          }  
  382.            
  383.          /** 
  384.           * 合併多個集合並返回合併後的結果,合併後的結果集合並不保存<br/> 
  385.           * @param String... keys 
  386.           * @return 合併後的結果集合 
  387.           * @see sunionstore 
  388.           * */  
  389.          public Set<String> sunion(String...keys){  
  390.              Jedis jedis=jedisPool.getResource();  
  391.              Set<String> set =jedis.sunion(keys);  
  392.              jedisPool.returnResource(jedis);  
  393.              return set;  
  394.          }  
  395.            
  396.          /** 
  397.           * 合併多個集合並將合併後的結果集保存在指定的新集合中,如果新集合已經存在則覆蓋 
  398.           * @param String newkey 新集合的key 
  399.           * @param String... keys 要合併的集合 
  400.           * **/  
  401.          public long sunionstore(String newkey,String...keys){  
  402.              Jedis jedis=jedisPool.getResource();  
  403.              long s =jedis.sunionstore(newkey, keys);  
  404.              jedisPool.returnResource(jedis);  
  405.              return s;  
  406.          }  
  407.      }  
  408.        
  409.      //TODO  
  410.      public class SortSet{  
  411.            
  412.          /** 
  413.           * 向集合中增加一條記錄,如果這個值已存在,這個值對應的權重將被置爲新的權重 
  414.           * @param String key 
  415.           * @param double score 權重 
  416.           * @param String member 要加入的值, 
  417.           * @return 狀態碼 1成功,0已存在member的值 
  418.           * */  
  419.          public long zadd(String key,double score,String member){  
  420.              Jedis jedis=jedisPool.getResource();  
  421.              long s =jedis.zadd(key, score, member);  
  422.              jedisPool.returnResource(jedis);  
  423.              return s;  
  424.          }  
  425.            
  426.          /** 
  427.           * 獲取集合中元素的數量 
  428.           * @param String key 
  429.           * @return 如果返回0則集合不存在 
  430.           * */  
  431.          public long zcard(String key){  
  432.              ShardedJedis sjedis=shardedJedisPool.getResource();  
  433.              long len= sjedis.zcard(key);  
  434.              shardedJedisPool.returnResource(sjedis);  
  435.              return len;  
  436.          }  
  437.            
  438.          /** 
  439.           * 獲取指定權重區間內集合的數量 
  440.           * @param String key 
  441.           * @param double min 最小排序位置 
  442.           * @param double max 最大排序位置 
  443.           * */  
  444.          public long zcount(String key,double min,double max){  
  445.              ShardedJedis sjedis=shardedJedisPool.getResource();  
  446.              long len= sjedis.zcount(key, min, max);  
  447.              shardedJedisPool.returnResource(sjedis);  
  448.              return len;  
  449.          }  
  450.            
  451.          /** 
  452.           * 獲得set的長度 
  453.           * @param key 
  454.           * @return 
  455.           */  
  456.          public long zlength(String key){  
  457.              long len = 0;  
  458.              Set<String> set = zrange(key,0,-1);  
  459.              len = set.size();  
  460.              return len;  
  461.          }  
  462.            
  463.          /** 
  464.           * 權重增加給定值,如果給定的member已存在 
  465.           * @param String key 
  466.           * @param double score 要增的權重 
  467.           * @param String member 要插入的值 
  468.           * @return 增後的權重 
  469.           * */  
  470.          public double zincrby(String key,double score,String member){  
  471.              Jedis jedis=jedisPool.getResource();  
  472.              double s =jedis.zincrby(key, score, member);  
  473.              jedisPool.returnResource(jedis);  
  474.              return s;  
  475.          }  
  476.            
  477.          /** 
  478.           * 返回指定位置的集合元素,0爲第一個元素,-1爲最後一個元素 
  479.           * @param String key 
  480.           * @param int start 開始位置(包含) 
  481.           * @param int end  結束位置(包含) 
  482.           * @return Set<String> 
  483.           * */  
  484.          public Set<String> zrange(String key,int start,int end){  
  485.              ShardedJedis sjedis=shardedJedisPool.getResource();  
  486.              Set<String> set= sjedis.zrange(key, start, end);  
  487.              shardedJedisPool.returnResource(sjedis);  
  488.              return set;  
  489.          }  
  490.            
  491.          /** 
  492.           * 返回指定權重區間的元素集合 
  493.           * @param String key 
  494.           * @param double min 上限權重 
  495.           * @param double max 下限權重 
  496.           * @return Set<String> 
  497.           * */  
  498.          public Set<String> zrangeByScore(String key,double min,double max){  
  499.              ShardedJedis sjedis=shardedJedisPool.getResource();  
  500.              Set<String> set= sjedis.zrangeByScore(key, min, max);  
  501.              shardedJedisPool.returnResource(sjedis);  
  502.              return set;  
  503.          }  
  504.            
  505.          /** 
  506.           * 獲取指定值在集合中的位置,集合排序從低到高 
  507.           * @see zrevrank 
  508.           * @param String key 
  509.           * @param String member 
  510.           * @return long 位置 
  511.           * */  
  512.          public long zrank(String key,String member){  
  513.              ShardedJedis sjedis=shardedJedisPool.getResource();  
  514.              long index= sjedis.zrank(key,member);  
  515.              shardedJedisPool.returnResource(sjedis);  
  516.              return index;  
  517.          }  
  518.            
  519.          /** 
  520.           * 獲取指定值在集合中的位置,集合排序從低到高 
  521.           * @see zrank 
  522.           * @param String key 
  523.           * @param String member 
  524.           * @return long 位置 
  525.           * */  
  526.          public long zrevrank(String key,String member){  
  527.              ShardedJedis sjedis=shardedJedisPool.getResource();  
  528.              long index= sjedis.zrevrank(key, member);  
  529.              shardedJedisPool.returnResource(sjedis);  
  530.              return index;  
  531.          }  
  532.            
  533.          /** 
  534.           * 從集合中刪除成員 
  535.           * @param String key 
  536.           * @param String member 
  537.           * @return 返回1成功 
  538.           * */  
  539.          public long zrem(String key,String member){  
  540.              Jedis jedis=jedisPool.getResource();  
  541.              long s =jedis.zrem(key, member);  
  542.              jedisPool.returnResource(jedis);  
  543.              return s;  
  544.          }  
  545.            
  546.          /** 
  547.           * 刪除 
  548.           * @param key 
  549.           * @return 
  550.           */  
  551.          public long zrem(String key){  
  552.              Jedis jedis=jedisPool.getResource();  
  553.              long s =jedis.del(key);  
  554.              jedisPool.returnResource(jedis);  
  555.              return s;  
  556.          }  
  557.            
  558.            
  559.          /** 
  560.           * 刪除給定位置區間的元素 
  561.           * @param String key 
  562.           * @param int start 開始區間,從0開始(包含) 
  563.           * @param int end 結束區間,-1爲最後一個元素(包含) 
  564.           * @return 刪除的數量 
  565.           * */  
  566.          public long zremrangeByRank(String key,int start,int end){  
  567.              Jedis jedis=jedisPool.getResource();  
  568.              long s =jedis.zremrangeByRank(key, start, end);  
  569.              jedisPool.returnResource(jedis);  
  570.              return s;  
  571.          }  
  572.            
  573.          /** 
  574.           * 刪除給定權重區間的元素 
  575.           * @param String key 
  576.           * @param double min 下限權重(包含) 
  577.           * @param double max 上限權重(包含) 
  578.           * @return 刪除的數量 
  579.           * */  
  580.          public long zremrangeByScore(String key,double min,double max){  
  581.              Jedis jedis=jedisPool.getResource();  
  582.              long s =jedis.zremrangeByScore(key, min, max);  
  583.              jedisPool.returnResource(jedis);  
  584.              return s;  
  585.          }  
  586.            
  587.          /** 
  588.           * 獲取給定區間的元素,原始按照權重由高到低排序 
  589.           * @param String key 
  590.           * @param int start 
  591.           * @param int end 
  592.           * @return Set<String> 
  593.           * */  
  594.          public Set<String> zrevrange(String key,int start,int end){  
  595.              ShardedJedis sjedis=shardedJedisPool.getResource();  
  596.              Set<String> set= sjedis.zrevrange(key,start,end);  
  597.              shardedJedisPool.returnResource(sjedis);  
  598.              return set;  
  599.          }  
  600.            
  601.          /** 
  602.           * 獲取給定值在集合中的權重 
  603.           * @param String key 
  604.           * @param memeber 
  605.           * @return double 權重 
  606.           * */  
  607.          public double zscore(String key,String memebr){  
  608.              ShardedJedis sjedis=shardedJedisPool.getResource();  
  609.              Double score= sjedis.zscore(key,memebr);  
  610.              shardedJedisPool.returnResource(sjedis);  
  611.              if(score!=nullreturn score;  
  612.              return 0;  
  613.          }  
  614.      }  
  615.        
  616.      //TODO  
  617.      public class Hash{  
  618.            
  619.          /** 
  620.           * 從hash中刪除指定的存儲 
  621.           * @param String key 
  622.           * @param String fieid 存儲的名字 
  623.           * @return 狀態碼,1成功,0失敗 
  624.           * */  
  625.          public long hdel(String key,String fieid){  
  626.              Jedis jedis=jedisPool.getResource();  
  627.              long s =jedis.hdel(key, fieid);  
  628.              jedisPool.returnResource(jedis);  
  629.              return s;  
  630.          }  
  631.            
  632.          public long hdel(String key){  
  633.              Jedis jedis=jedisPool.getResource();  
  634.              long s =jedis.del(key);  
  635.              jedisPool.returnResource(jedis);  
  636.              return s;  
  637.          }  
  638.            
  639.          /** 
  640.           * 測試hash中指定的存儲是否存在 
  641.           * @param String key 
  642.           * @param String fieid 存儲的名字 
  643.           * @return 1存在,0不存在 
  644.           * */  
  645.          public boolean hexists(String key,String fieid){  
  646.              ShardedJedis sjedis=shardedJedisPool.getResource();  
  647.              boolean s= sjedis.hexists(key, fieid);  
  648.              shardedJedisPool.returnResource(sjedis);  
  649.              return s;  
  650.          }  
  651.            
  652.          /** 
  653.           * 返回hash中指定存儲位置的值 
  654.           * @param String key 
  655.           * @param String fieid 存儲的名字 
  656.           * @return 存儲對應的值 
  657.           * */  
  658.          public String hget(String key,String fieid){  
  659.              ShardedJedis sjedis=shardedJedisPool.getResource();  
  660.              String s= sjedis.hget(key, fieid);  
  661.              shardedJedisPool.returnResource(sjedis);  
  662.              return s;  
  663.          }  
  664.            
  665.          /** 
  666.           * 以Map的形式返回hash中的存儲和值 
  667.           * @param String key 
  668.           * @return Map<Strinig,String> 
  669.           * */  
  670.          public Map<String,String> hgetall(String key){  
  671.              ShardedJedis sjedis=shardedJedisPool.getResource();  
  672.              Map<String,String> map= sjedis.hgetAll(key);  
  673.              shardedJedisPool.returnResource(sjedis);  
  674.              return map;  
  675.          }  
  676.            
  677.          /** 
  678.           * 在指定的存儲位置加上指定的數字,存儲位置的值必須可轉爲數字類型 
  679.           * @param String key 
  680.           * @param String fieid 存儲位置 
  681.           * @param String long value 要增加的值,可以是負數 
  682.           * @return 增加指定數字後,存儲位置的值 
  683.           * */  
  684.          public long hincrby(String key,String fieid,long value){  
  685.              Jedis jedis=jedisPool.getResource();  
  686.              long s =jedis.hincrBy(key, fieid, value);  
  687.              jedisPool.returnResource(jedis);  
  688.              return s;  
  689.          }  
  690.            
  691.          /** 
  692.           * 返回指定hash中的所有存儲名字,類似Map中的keySet方法 
  693.           * @param String key 
  694.           * @return Set<String> 存儲名稱的集合 
  695.           * */  
  696.          public Set<String> hkeys(String key){  
  697.              ShardedJedis sjedis=shardedJedisPool.getResource();  
  698.              Set<String> set= sjedis.hkeys(key);  
  699.              shardedJedisPool.returnResource(sjedis);  
  700.              return set;  
  701.          }  
  702.            
  703.          /** 
  704.           * 獲取hash中存儲的個數,類似Map中size方法 
  705.           * @param String key 
  706.           * @return long 存儲的個數 
  707.           * */  
  708.          public long hlen(String key){  
  709.              ShardedJedis sjedis=shardedJedisPool.getResource();  
  710.              long len= sjedis.hlen(key);  
  711.              shardedJedisPool.returnResource(sjedis);  
  712.              return len;  
  713.          }  
  714.            
  715.          /** 
  716.           * 根據多個key,獲取對應的value,返回List,如果指定的key不存在,List對應位置爲null 
  717.           * @param String key 
  718.           * @param String... fieids  存儲位置 
  719.           * @return List<String> 
  720.           * */  
  721.          public List<String> hmget(String key,String...fieids){  
  722.              ShardedJedis sjedis=shardedJedisPool.getResource();  
  723.              List<String> list= sjedis.hmget(key, fieids);  
  724.              shardedJedisPool.returnResource(sjedis);  
  725.              return list;  
  726.          }  
  727.            
  728.          /** 
  729.           * 添加對應關係,如果對應關係已存在,則覆蓋 
  730.           * @param Strin key 
  731.           * @param Map<String,String> 對應關係 
  732.           * @return 狀態,成功返回OK 
  733.           * */  
  734.          public String hmset(String key,Map<String,String> map){  
  735.              Jedis jedis=jedisPool.getResource();  
  736.              String s =jedis.hmset(key, map);  
  737.              jedisPool.returnResource(jedis);  
  738.              return s;  
  739.          }  
  740.            
  741.          /** 
  742.           * 添加一個對應關係 
  743.           * @param String key 
  744.           * @param String fieid 
  745.           * @param String value 
  746.           * @return 狀態碼 1成功,0失敗,fieid已存在將更新,也返回0 
  747.           * **/  
  748.          public long hset(String key,String fieid,String value){  
  749.              Jedis jedis=jedisPool.getResource();  
  750.              long s =jedis.hset(key, fieid,value);  
  751.              jedisPool.returnResource(jedis);  
  752.              return s;  
  753.          }  
  754.            
  755.          /** 
  756.           * 添加對應關係,只有在fieid不存在時才執行 
  757.           * @param String key 
  758.           * @param String fieid 
  759.           * @param String value 
  760.           * @return 狀態碼 1成功,0失敗fieid已存 
  761.           * **/  
  762.          public long hsetnx(String key,String fieid,String value){  
  763.              Jedis jedis=jedisPool.getResource();  
  764.              long s =jedis.hsetnx(key, fieid,value);  
  765.              jedisPool.returnResource(jedis);  
  766.              return s;  
  767.          }  
  768.            
  769.          /** 
  770.           * 獲取hash中value的集合 
  771.           * @param String key 
  772.           * @return List<String> 
  773.           * */  
  774.          public List<String> hvals(String key){  
  775.              ShardedJedis sjedis=shardedJedisPool.getResource();  
  776.              List<String> list= sjedis.hvals(key);  
  777.              shardedJedisPool.returnResource(sjedis);  
  778.              return list;  
  779.          }  
  780.      }  
  781.        
  782.      //TODO  
  783.      public class Strings{  
  784.          /** 
  785.           * 根據key獲取記錄 
  786.           * @param String key 
  787.           * @return 值 
  788.           * */  
  789.          public String get(String key){  
  790.              ShardedJedis sjedis=shardedJedisPool.getResource();  
  791.              String value= sjedis.get(key);  
  792.              shardedJedisPool.returnResource(sjedis);  
  793.              return value;  
  794.          }  
  795.          /** 
  796.           * 根據key獲取記錄 
  797.           * @param byte[] key 
  798.           * @return 值 
  799.           * */  
  800.          public byte[] get(byte[] key){  
  801.              ShardedJedis sjedis=shardedJedisPool.getResource();  
  802.              byte[] value= sjedis.get(key);  
  803.              shardedJedisPool.returnResource(sjedis);  
  804.              return value;  
  805.          }  
  806.            
  807.          /** 
  808.           * 添加有過期時間的記錄 
  809.           * @param String key 
  810.           * @param int seconds  過期時間,以秒爲單位 
  811.           * @param String value 
  812.           * @return String 操作狀態 
  813.           * */  
  814.          public String setEx(String key,int seconds,String value){  
  815.              Jedis jedis=jedisPool.getResource();  
  816.              String str =jedis.setex(key, seconds, value);  
  817.              jedisPool.returnResource(jedis);  
  818.              return str;  
  819.          }   
  820.            
  821.            
  822.          /** 
  823.           * 添加有過期時間的記錄 
  824.           * @param String key 
  825.           * @param int seconds  過期時間,以秒爲單位 
  826.           * @param String value 
  827.           * @return String 操作狀態 
  828.           * */  
  829.          public String setEx(byte[] key,int seconds,byte[] value){  
  830.              Jedis jedis=jedisPool.getResource();  
  831.              String str =jedis.setex(key, seconds, value);    
  832.              jedisPool.returnResource(jedis);  
  833.              return str;  
  834.          }   
  835.            
  836.          /** 
  837.           * 添加一條記錄,僅當給定的key不存在時才插入 
  838.           * @param String key 
  839.           * @param String value 
  840.           * @return long 狀態碼,1插入成功且key不存在,0未插入,key存在 
  841.           * */  
  842.          public long setnx(String key,String value){  
  843.              Jedis jedis=jedisPool.getResource();  
  844.              long str =jedis.setnx(key, value);  
  845.              jedisPool.returnResource(jedis);  
  846.              return str;  
  847.          }  
  848.            
  849.          /** 
  850.           * 添加記錄,如果記錄已存在將覆蓋原有的value 
  851.           * @param String key 
  852.           * @param String value 
  853.           * @return 狀態碼 
  854.           * */  
  855.          public String set(String key,String value){  
  856.              return set(SafeEncoder.encode(key),SafeEncoder.encode(value));  
  857.          }  
  858.            
  859.          /** 
  860.           * 添加記錄,如果記錄已存在將覆蓋原有的value 
  861.           * @param byte[] key 
  862.           * @param byte[] value 
  863.           * @return 狀態碼 
  864.           * */  
  865.          public String set(byte[] key,byte[] value){  
  866.              Jedis jedis=jedisPool.getResource();  
  867.              String status =jedis.set(key, value);  
  868.              jedisPool.returnResource(jedis);  
  869.              return status;  
  870.          }  
  871.            
  872.          /** 
  873.           * 從指定位置開始插入數據,插入的數據會覆蓋指定位置以後的數據<br/> 
  874.           * 例:String str1="123456789";<br/> 
  875.           * 對str1操作後setRange(key,4,0000),str1="123400009"; 
  876.           * @param String key 
  877.           * @param long offset 
  878.           * @param String value 
  879.           * @return long value的長度 
  880.           * */  
  881.          public long setRange(String key,long offset,String value){  
  882.              Jedis jedis=jedisPool.getResource();  
  883.              long len =jedis.setrange(key, offset, value);  
  884.              jedisPool.returnResource(jedis);  
  885.              return len;  
  886.          }  
  887.          /** 
  888.           * 在指定的key中追加value 
  889.           * @param String key 
  890.           * @param String value 
  891.           * @return long 追加後value的長度 
  892.           * **/  
  893.          public long append(String key,String value){  
  894.              Jedis jedis=jedisPool.getResource();  
  895.              long len =jedis.append(key, value);  
  896.              jedisPool.returnResource(jedis);  
  897.              return len;  
  898.          }  
  899.            
  900.          /** 
  901.           * 將key對應的value減去指定的值,只有value可以轉爲數字時該方法纔可用 
  902.           * @param String key 
  903.           * @param long number 要減去的值 
  904.           * @return long 減指定值後的值 
  905.           * */  
  906.          public long decrBy(String key,long number){  
  907.              Jedis jedis=jedisPool.getResource();  
  908.              long len =jedis.decrBy(key,number);  
  909.              jedisPool.returnResource(jedis);  
  910.              return len;  
  911.          }  
  912.            
  913.          /** 
  914.           * <b>可以作爲獲取唯一id的方法</b><br/> 
  915.           * 將key對應的value加上指定的值,只有value可以轉爲數字時該方法纔可用 
  916.           * @param String key 
  917.           * @param long number 要減去的值 
  918.           * @return long 相加後的值 
  919.           * */  
  920.          public long incrBy(String key,long number){  
  921.              Jedis jedis=jedisPool.getResource();  
  922.              long len =jedis.incrBy(key,number);  
  923.              jedisPool.returnResource(jedis);  
  924.              return len;  
  925.          }  
  926.            
  927.          /** 
  928.           * 對指定key對應的value進行截取 
  929.           * @param String key 
  930.           * @param long startOffset 開始位置(包含) 
  931.           * @param long endOffset 結束位置(包含) 
  932.           * @return String 截取的值 
  933.           * */  
  934.          public String getrange(String key,long startOffset,long endOffset){  
  935.              ShardedJedis sjedis=shardedJedisPool.getResource();  
  936.              String value= sjedis.getrange(key, startOffset, endOffset);  
  937.              shardedJedisPool.returnResource(sjedis);  
  938.              return value;  
  939.          }  
  940.            
  941.          /** 
  942.           * 獲取並設置指定key對應的value<br/> 
  943.           * 如果key存在返回之前的value,否則返回null 
  944.           * @param String key 
  945.           * @param String value 
  946.           * @return String 原始value或null 
  947.           * */  
  948.          public String getSet(String key,String value){  
  949.              Jedis jedis=jedisPool.getResource();  
  950.              String str =jedis.getSet(key, value);  
  951.              jedisPool.returnResource(jedis);  
  952.              return str;  
  953.          }  
  954.            
  955.          /** 
  956.           * 批量獲取記錄,如果指定的key不存在返回List的對應位置將是null 
  957.           * @param String keys 
  958.           * @return List<String> 值得集合 
  959.           * */  
  960.          public List<String> mget(String... keys){  
  961.              Jedis jedis=jedisPool.getResource();  
  962.              List<String> str =jedis.mget(keys);  
  963.              jedisPool.returnResource(jedis);  
  964.              return str;  
  965.          }  
  966.            
  967.          /** 
  968.           * 批量存儲記錄 
  969.           * @param String keysvalues 例:keysvalues="key1","value1","key2","value2"; 
  970.           * @return String 狀態碼 
  971.           * */  
  972.          public String mset(String...keysvalues){  
  973.              Jedis jedis=jedisPool.getResource();  
  974.              String str =jedis.mset(keysvalues);  
  975.              jedisPool.returnResource(jedis);  
  976.              return str;  
  977.          }  
  978.            
  979.          /** 
  980.           * 獲取key對應的值的長度 
  981.           * @param String key 
  982.           * @return value值得長度 
  983.           * */  
  984.          public long strlen(String key){  
  985.              Jedis jedis=jedisPool.getResource();  
  986.              long len =jedis.strlen(key);  
  987.              jedisPool.returnResource(jedis);  
  988.              return len;  
  989.          }  
  990.      }  
  991.        
  992.      //TODO  
  993.      public class Lists{  
  994.          /** 
  995.           * List長度 
  996.           * @param String key 
  997.           * @return 長度 
  998.           * */  
  999.          public long llen(String key){  
  1000.              return llen(SafeEncoder.encode(key));  
  1001.          }  
  1002.            
  1003.          /** 
  1004.           * List長度 
  1005.           * @param byte[] key 
  1006.           * @return 長度 
  1007.           * */  
  1008.          public long llen(byte[] key){  
  1009.              ShardedJedis sjedis=shardedJedisPool.getResource();  
  1010.              long count= sjedis.llen(key);  
  1011.              shardedJedisPool.returnResource(sjedis);  
  1012.              return count;  
  1013.          }  
  1014.            
  1015.          /** 
  1016.           * 覆蓋操作,將覆蓋List中指定位置的值 
  1017.           * @param byte[] key 
  1018.           * @param int index 位置 
  1019.           * @param byte[] value 值 
  1020.           * @return 狀態碼 
  1021.           * */  
  1022.          public String lset(byte[] key,int index,byte[] value){  
  1023.              Jedis jedis=jedisPool.getResource();  
  1024.              String status=jedis.lset(key, index, value);  
  1025.              jedisPool.returnResource(jedis);  
  1026.              return status;  
  1027.          }  
  1028.            
  1029.          /** 
  1030.           * 覆蓋操作,將覆蓋List中指定位置的值 
  1031.           * @param key 
  1032.           * @param int index 位置 
  1033.           * @param String value 值 
  1034.           * @return 狀態碼 
  1035.           * */  
  1036.          public String lset(String key,int index,String value){  
  1037.              return lset(SafeEncoder.encode(key),index,SafeEncoder.encode(value));  
  1038.          }  
  1039.            
  1040.          /** 
  1041.           * 在value的相對位置插入記錄 
  1042.           * @param key 
  1043.           * @param LIST_POSITION  前面插入或後面插入 
  1044.           * @param String pivot 相對位置的內容 
  1045.           * @param String value 插入的內容 
  1046.           * @return 記錄總數 
  1047.           * */  
  1048.          public long linsert(String key,LIST_POSITION where,String pivot,String value){  
  1049.              return linsert(SafeEncoder.encode(key),where,SafeEncoder.encode(pivot),SafeEncoder.encode(value));  
  1050.          }  
  1051.            
  1052.          /** 
  1053.           * 在指定位置插入記錄 
  1054.           * @param String key 
  1055.           * @param LIST_POSITION  前面插入或後面插入 
  1056.           * @param byte[] pivot 相對位置的內容 
  1057.           * @param byte[] value 插入的內容 
  1058.           * @return 記錄總數 
  1059.           * */  
  1060.          public long linsert(byte[] key,LIST_POSITION where,byte[] pivot,byte[] value){  
  1061.              Jedis jedis=jedisPool.getResource();  
  1062.              long count=jedis.linsert(key, where, pivot, value);  
  1063.              jedisPool.returnResource(jedis);  
  1064.              return count;  
  1065.          }  
  1066.            
  1067.          /** 
  1068.           * 獲取List中指定位置的值 
  1069.           * @param String key 
  1070.           * @param int index 位置 
  1071.           * @return 值 
  1072.           * **/  
  1073.          public String lindex(String key,int index){  
  1074.              return SafeEncoder.encode(lindex(SafeEncoder.encode(key),index));  
  1075.          }  
  1076.            
  1077.          /** 
  1078.           * 獲取List中指定位置的值 
  1079.           * @param byte[] key 
  1080.           * @param int index 位置 
  1081.           * @return 值 
  1082.           * **/  
  1083.          public byte[] lindex(byte[] key,int index){  
  1084.              ShardedJedis sjedis=shardedJedisPool.getResource();  
  1085.              byte[] value=sjedis.lindex(key, index);  
  1086.              shardedJedisPool.returnResource(sjedis);  
  1087.              return value;  
  1088.          }  
  1089.            
  1090.          /** 
  1091.           * 將List中的第一條記錄移出List 
  1092.           * @param String key 
  1093.           * @return 移出的記錄 
  1094.           * */  
  1095.          public String lpop(String key){  
  1096.              return SafeEncoder.encode(lpop(SafeEncoder.encode(key)));  
  1097.          }  
  1098.          /** 
  1099.           * 將List中的第一條記錄移出List 
  1100.           * @param byte[] key 
  1101.           * @return 移出的記錄 
  1102.           * */  
  1103.          public byte[] lpop(byte[] key){  
  1104.              Jedis jedis=jedisPool.getResource();  
  1105.              byte[] value=jedis.lpop(key);  
  1106.              jedisPool.returnResource(jedis);  
  1107.              return value;  
  1108.          }  
  1109.          /** 
  1110.           * 將List中最後第一條記錄移出List 
  1111.           * @param byte[] key 
  1112.           * @return 移出的記錄 
  1113.           * */  
  1114.          public String rpop(String key){  
  1115.              Jedis jedis=jedisPool.getResource();  
  1116.              String value=jedis.rpop(key);  
  1117.              jedisPool.returnResource(jedis);  
  1118.              return value;  
  1119.          }  
  1120.          /** 
  1121.           * 向List尾部追加記錄 
  1122.           * @param String key 
  1123.           * @param String value 
  1124.           * @return 記錄總數 
  1125.           * */  
  1126.          public long lpush(String key,String value){  
  1127.              return lpush(SafeEncoder.encode(key),SafeEncoder.encode(value));  
  1128.          }  
  1129.            
  1130.          /** 
  1131.           * 向List頭部追加記錄 
  1132.           * @param String key 
  1133.           * @param String value 
  1134.           * @return 記錄總數 
  1135.           * */  
  1136.          public long rpush(String key,String value){  
  1137.              Jedis jedis=jedisPool.getResource();  
  1138.              long count=jedis.rpush(key, value);  
  1139.              jedisPool.returnResource(jedis);  
  1140.              return count;  
  1141.          }  
  1142.          /** 
  1143.           * 向List中追加記錄 
  1144.           * @param byte[] key 
  1145.           * @param byte[] value 
  1146.           * @return 記錄總數 
  1147.           * */  
  1148.          public long lpush(byte[] key,byte[] value){  
  1149.              Jedis jedis=jedisPool.getResource();  
  1150.              long count=jedis.lpush(key, value);  
  1151.              jedisPool.returnResource(jedis);  
  1152.              return count;  
  1153.          }  
  1154.            
  1155.          /** 
  1156.           * 獲取指定範圍的記錄,可以做爲分頁使用 
  1157.           * @param String key 
  1158.           * @param long start 
  1159.           * @param long end 
  1160.           * @return List 
  1161.           * */  
  1162.          public List<String> lrange(String key,long start,long end){  
  1163.              ShardedJedis sjedis=shardedJedisPool.getResource();  
  1164.              List<String> list=sjedis.lrange(key, start,end);  
  1165.              shardedJedisPool.returnResource(sjedis);  
  1166.              return list;  
  1167.          }  
  1168.          /** 
  1169.           * 獲取指定範圍的記錄,可以做爲分頁使用 
  1170.           * @param byte[] key 
  1171.           * @param int start 
  1172.           * @param int end 如果爲負數,則尾部開始計算 
  1173.           * @return List 
  1174.           * */  
  1175.          public List<byte[]> lrange(byte[] key,int start,int end){  
  1176.              ShardedJedis sjedis=shardedJedisPool.getResource();  
  1177.              List<byte[]> list=sjedis.lrange(key, start,end);  
  1178.              shardedJedisPool.returnResource(sjedis);  
  1179.              return list;  
  1180.          }  
  1181.            
  1182.          /** 
  1183.           * 刪除List中c條記錄,被刪除的記錄值爲value 
  1184.           * @param byte[] key 
  1185.           * @param int c 要刪除的數量,如果爲負數則從List的尾部檢查並刪除符合的記錄 
  1186.           * @param byte[] value 要匹配的值 
  1187.           * @return 刪除後的List中的記錄數 
  1188.           * */  
  1189.          public long lrem(byte[] key,int c,byte[] value){  
  1190.              Jedis jedis=jedisPool.getResource();  
  1191.              long count=jedis.lrem(key, c,value);  
  1192.              jedisPool.returnResource(jedis);  
  1193.              return count;  
  1194.          }  
  1195.            
  1196.          /** 
  1197.           * 刪除List中c條記錄,被刪除的記錄值爲value 
  1198.           * @param String key 
  1199.           * @param int c 要刪除的數量,如果爲負數則從List的尾部檢查並刪除符合的記錄 
  1200.           * @param String value 要匹配的值 
  1201.           * @return 刪除後的List中的記錄數 
  1202.           * */  
  1203.          public long lrem(String key,int c,String value){  
  1204.              return lrem(SafeEncoder.encode(key),c,SafeEncoder.encode(value));  
  1205.          }  
  1206.            
  1207.          /** 
  1208.           * 算是刪除吧,只保留start與end之間的記錄 
  1209.           * @param byte[] key 
  1210.           * @param int start 記錄的開始位置(0表示第一條記錄) 
  1211.           * @param int end 記錄的結束位置(如果爲-1則表示最後一個,-2,-3以此類推) 
  1212.           * @return 執行狀態碼 
  1213.           * */  
  1214.          public String ltrim(byte[] key,int start,int end){  
  1215.              Jedis jedis=jedisPool.getResource();  
  1216.              String str=jedis.ltrim(key, start, end);  
  1217.              jedisPool.returnResource(jedis);  
  1218.              return str;  
  1219.          }  
  1220.          /** 
  1221.           * 算是刪除吧,只保留start與end之間的記錄 
  1222.           * @param String key 
  1223.           * @param int start 記錄的開始位置(0表示第一條記錄) 
  1224.           * @param int end 記錄的結束位置(如果爲-1則表示最後一個,-2,-3以此類推) 
  1225.           * @return 執行狀態碼 
  1226.           * */  
  1227.          public String ltrim(String key,int start,int end){  
  1228.              return ltrim(SafeEncoder.encode(key),start,end);  
  1229.          }  
  1230.      }  
  1231. }  
redis是一個key-value存儲系統。和Memcached類似,它支持存儲的value類型相對更多,包括string(字符串)、list(鏈表)、set(集合)和zset(有序集合)。這些數據類型都支持push/pop、add/remove及取交集並集和差集及更豐富的操作,而且這些操作都是原子性的。在此基礎上,redis支持各種不同方式的排序。與memcached一樣,爲了保證效率,數據都是緩存在內存中。區別的是redis會週期性的把更新的數據寫入磁盤或者把修改操作寫入追加的記錄文件,並且在此基礎上實現了master-slave(主從)同步。

  Redis 是一個高性能的key-value數據庫。 redis的出現,很大程度補償了memcached這類keyvalue存儲的不足,在部 分場合可以對關係數據庫起到很好的補充作用。它提供了Python,Ruby,Erlang,PHP客戶端,使用很方便。

redis目前提供四種數據類型:string,list,set及zset(sorted set)。   

(以上來源百度百科)

最近我們產品也用了Redis.貼出相關的配置和封裝的代碼。

Spring 配置:

[html] view plaincopy
  1. <!-- master連接池參數 -->  
  2.     <bean id="masterPoolConfig" class="redis.clients.jedis.JedisPoolConfig">  
  3.         <property name="maxActive"  value="20"/>  
  4.         <property name="maxIdle" value="10"/>  
  5.         <property name="maxWait" value="1000"/>  
  6.     </bean>  
  7.     <!-- slave連接池參數 -->  
  8.     <bean id="slavePoolConfig" class="redis.clients.jedis.JedisPoolConfig">  
  9.         <property name="maxActive"  value="50"/>  
  10.         <property name="maxIdle" value="20"/>  
  11.         <property name="maxWait" value="1000"/>  
  12.     </bean>  
  13.     <!-- 主機地址 -->  
  14.     <bean id="jedisPool" class="redis.clients.jedis.JedisPool">  
  15.         <constructor-arg index="0" ref="masterPoolConfig"/>  
  16.         <constructor-arg index="1" value="10.60.30.27"/>  
  17.         <constructor-arg index="2" value="6379" type="int"/>  
  18.     </bean>  
  19.     <!-- 從機地址 -->  
  20.     <bean id="shardInfo-0" class="redis.clients.jedis.JedisShardInfo">  
  21.         <constructor-arg index="0" value="10.60.30.27" />  
  22.         <constructor-arg index="1" value="6378" type="int"/>    
  23.     </bean>  
  24.     <bean id="shardInfo-1" class="redis.clients.jedis.JedisShardInfo">  
  25.         <constructor-arg index="0" value="10.60.30.27" />  
  26.         <constructor-arg index="1" value="6378" type="int"/>    
  27.     </bean>  
  28.     <bean id="shardedJedisPool" class="redis.clients.jedis.ShardedJedisPool">  
  29.         <constructor-arg index="0" ref="slavePoolConfig"/>  
  30.         <constructor-arg index="1">  
  31.             <list>  
  32.                 <ref bean="shardInfo-0"/>  
  33.                 <ref bean="shardInfo-1"/>  
  34.             </list>  
  35.         </constructor-arg>  
  36.     </bean>  
相關Redis的Java封裝:

[java] view plaincopy
  1. import java.util.List;  
  2. import java.util.Map;  
  3. import java.util.Set;  
  4.   
  5.   
  6. import javax.annotation.PostConstruct;  
  7.   
  8.   
  9. import org.springframework.beans.factory.annotation.Autowired;  
  10. import org.springframework.stereotype.Service;  
  11.   
  12.   
  13. import redis.clients.jedis.BinaryClient.LIST_POSITION;  
  14. import redis.clients.jedis.Jedis;  
  15. import redis.clients.jedis.JedisPool;  
  16. import redis.clients.jedis.ShardedJedis;  
  17. import redis.clients.jedis.ShardedJedisPool;  
  18. import redis.clients.jedis.SortingParams;  
  19. import redis.clients.util.SafeEncoder;  
  20. @Service("redisBase")  
  21. public class RedisBase{  
  22.   
  23.   
  24.      @Autowired  
  25.      private JedisPool jedisPool;  
  26.      @Autowired  
  27.      private ShardedJedisPool shardedJedisPool;  
  28.        
  29.      /**操作Key的方法*/  
  30.      public Keys KEYS;  
  31.      /**對存儲結構爲String類型的操作*/  
  32.      public Strings STRINGS;  
  33.      /**對存儲結構爲List類型的操作*/  
  34.      public Lists LISTS;  
  35.      /**對存儲結構爲Set類型的操作*/  
  36.      public Sets SETS;  
  37.      /**對存儲結構爲HashMap類型的操作*/  
  38.      public Hash HASH;  
  39.      /**對存儲結構爲Set(排序的)類型的操作*/  
  40.      public SortSet SORTSET;  
  41.        
  42.        
  43.      @PostConstruct  
  44.      public void init(){  
  45.          KEYS=new Keys();  
  46.          STRINGS=new Strings();  
  47.          LISTS=new Lists();  
  48.          SETS=new Sets();  
  49.          SORTSET=new SortSet();  
  50.          HASH=new Hash();  
  51.      }  
  52.        
  53.      //TODO  
  54.      public class Keys{  
  55.            
  56.            
  57.          /** 
  58.           * 更改key,僅當新key不存在時才執行 
  59.           * @param String oldkey 
  60.           * @param String newkey 
  61.           * @return 狀態碼 
  62.           * */  
  63.          public String flushAll(){  
  64.              Jedis jedis=jedisPool.getResource();  
  65.              String stata=jedis.flushAll();  
  66.              jedisPool.returnResource(jedis);  
  67.              return stata;  
  68.          }  
  69.            
  70.          /** 
  71.           * 更改key 
  72.           * @param String oldkey 
  73.           * @param String newkey 
  74.           * @return 狀態碼 
  75.           * */  
  76.          public String rename(String oldkey,String newkey){  
  77.              return rename(SafeEncoder.encode(oldkey),SafeEncoder.encode(newkey));  
  78.          }  
  79.            
  80.          /** 
  81.           * 更改key,僅當新key不存在時才執行 
  82.           * @param String oldkey 
  83.           * @param String newkey 
  84.           * @return 狀態碼 
  85.           * */  
  86.          public long renamenx(String oldkey,String newkey){  
  87.              Jedis jedis=jedisPool.getResource();  
  88.              long status =jedis.renamenx(oldkey, newkey);  
  89.              jedisPool.returnResource(jedis);  
  90.              return status;  
  91.          }  
  92.            
  93.          /** 
  94.           * 更改key 
  95.           * @param String oldkey 
  96.           * @param String newkey 
  97.           * @return 狀態碼 
  98.           * */  
  99.          public String rename(byte[] oldkey,byte[] newkey){  
  100.              Jedis jedis=jedisPool.getResource();  
  101.              String status =jedis.rename(oldkey, newkey);  
  102.              jedisPool.returnResource(jedis);  
  103.              return status;  
  104.          }  
  105.            
  106.          /** 
  107.           * 設置key的過期時間,以秒爲單位 
  108.           * @param String key 
  109.           * @param 時間,已秒爲單位 
  110.           * @return 影響的記錄數 
  111.           * */  
  112.          public long expired(String key,int seconds){  
  113.              Jedis jedis=jedisPool.getResource();  
  114.              long count =jedis.expire(key, seconds);  
  115.              jedisPool.returnResource(jedis);  
  116.              return count;  
  117.          }  
  118.            
  119.          /** 
  120.           * 設置key的過期時間,它是距曆元(即格林威治標準時間 1970 年 1 月 1 日的 00:00:00,格里高利曆)的偏移量。 
  121.           * @param String key 
  122.           * @param 時間,已秒爲單位 
  123.           * @return 影響的記錄數 
  124.           * */  
  125.          public long expireAt(String key,long timestamp){  
  126.              Jedis jedis=jedisPool.getResource();  
  127.              long count =jedis.expireAt(key, timestamp);  
  128.              jedisPool.returnResource(jedis);  
  129.              return count;  
  130.          }  
  131.            
  132.          /** 
  133.           * 查詢key的過期時間 
  134.           * @param String key 
  135.           * @return 以秒爲單位的時間表示 
  136.           * */  
  137.          public long ttl(String key){  
  138.              ShardedJedis sjedis=shardedJedisPool.getResource();  
  139.              long len=sjedis.ttl(key);  
  140.              shardedJedisPool.returnResource(sjedis);  
  141.              return len;  
  142.          }  
  143.            
  144.          /** 
  145.           * 取消對key過期時間的設置 
  146.           *@param key 
  147.           *@return 影響的記錄數 
  148.           * */  
  149.          public long persist(String key){  
  150.              Jedis jedis=jedisPool.getResource();  
  151.              long count =jedis.persist(key);  
  152.              jedisPool.returnResource(jedis);  
  153.              return count;  
  154.          }  
  155.          /** 
  156.           * 刪除keys對應的記錄,可以是多個key 
  157.           * @param String... keys 
  158.           * @return 刪除的記錄數 
  159.           * */  
  160.          public long del(String... keys){  
  161.              Jedis jedis=jedisPool.getResource();  
  162.              long count =jedis.del(keys);  
  163.              jedisPool.returnResource(jedis);  
  164.              return count;  
  165.          }  
  166.            
  167.          /** 
  168.           * 刪除keys對應的記錄,可以是多個key 
  169.           * @param String... keys 
  170.           * @return 刪除的記錄數 
  171.           * */  
  172.          public long del(byte[]... keys){  
  173.              Jedis jedis=jedisPool.getResource();  
  174.              long count =jedis.del(keys);  
  175.              jedisPool.returnResource(jedis);  
  176.              return count;  
  177.          }  
  178.            
  179.          /** 
  180.           * 判斷key是否存在 
  181.           * @param String key 
  182.           * @return boolean 
  183.           * */  
  184.          public boolean exists(String key){  
  185.              ShardedJedis sjedis=shardedJedisPool.getResource();  
  186.              boolean exis=sjedis.exists(key);  
  187.              shardedJedisPool.returnResource(sjedis);  
  188.              return exis;  
  189.          }  
  190.            
  191.          /** 
  192.           * 對List,Set,SortSet進行排序,如果集合數據較大應避免使用這個方法 
  193.           * @param String key 
  194.           * @return List<String> 集合的全部記錄 
  195.           * **/  
  196.          public List<String> sort(String key){  
  197.              ShardedJedis sjedis=shardedJedisPool.getResource();  
  198.              List<String> list=sjedis.sort(key);  
  199.              shardedJedisPool.returnResource(sjedis);  
  200.              return list;  
  201.          }  
  202.            
  203.          /** 
  204.           * 對List,Set,SortSet進行排序或limit 
  205.           * @param String key 
  206.           * @param SortingParams parame 定義排序類型或limit的起止位置. 
  207.           * @return List<String> 全部或部分記錄 
  208.           * **/  
  209.          public List<String> sort(String key,SortingParams parame){  
  210.              ShardedJedis sjedis=shardedJedisPool.getResource();  
  211.              List<String> list=sjedis.sort(key, parame);  
  212.              shardedJedisPool.returnResource(sjedis);  
  213.              return list;  
  214.          }  
  215.            
  216.          /** 
  217.           * 返回指定key存儲的類型 
  218.           * @param String key 
  219.           * @return String  string|list|set|zset|hash 
  220.           * **/  
  221.          public String type(String key){  
  222.              ShardedJedis sjedis=shardedJedisPool.getResource();  
  223.              String type=sjedis.type(key);  
  224.              shardedJedisPool.returnResource(sjedis);  
  225.              return type;  
  226.          }  
  227.          /** 
  228.           * 查找所有匹配給定的模式的鍵 
  229.           * @param String key的表達式,*表示多個,?表示一個 
  230.           * */  
  231.          public Set<String> kyes(String pattern){  
  232.              Jedis jedis=jedisPool.getResource();  
  233.              Set<String> set =jedis.keys(pattern);  
  234.              jedisPool.returnResource(jedis);  
  235.              return set;  
  236.          }  
  237.      }  
  238.        
  239.      //TODO  
  240.      public class Sets{  
  241.            
  242.          /** 
  243.           * 向Set添加一條記錄,如果member已存在返回0,否則返回1 
  244.           * @param String key 
  245.           * @param String member 
  246.           * @return 操作碼,0或1 
  247.           * */  
  248.          public long sadd(String key,String member){  
  249.              Jedis jedis=jedisPool.getResource();  
  250.              long s =jedis.sadd(key, member);  
  251.              jedisPool.returnResource(jedis);  
  252.              return s;  
  253.          }  
  254.            
  255.          /** 
  256.           * 獲取給定key中元素個數 
  257.           * @param String key 
  258.           * @return 元素個數 
  259.           * */  
  260.          public long scard(String key){  
  261.              ShardedJedis sjedis=shardedJedisPool.getResource();  
  262.              long len=sjedis.scard(key);  
  263.              shardedJedisPool.returnResource(sjedis);  
  264.              return len;  
  265.          }  
  266.            
  267.          /** 
  268.           * 返回從第一組和所有的給定集合之間的差異的成員 
  269.           * @param String... keys 
  270.           * @return 差異的成員集合 
  271.           * */  
  272.          public Set<String> sdiff(String...keys){  
  273.              Jedis jedis=jedisPool.getResource();  
  274.              Set<String> set =jedis.sdiff(keys);  
  275.              jedisPool.returnResource(jedis);  
  276.              return set;  
  277.          }  
  278.            
  279.          /** 
  280.           * 這個命令等於sdiff,但返回的不是結果集,而是將結果集存儲在新的集合中,如果目標已存在,則覆蓋。 
  281.           * @param String newkey 新結果集的key 
  282.           * @param String... keys 比較的集合 
  283.           * @return 新集合中的記錄數 
  284.           * **/  
  285.          public long sdiffstore(String newkey,String...keys){  
  286.              Jedis jedis=jedisPool.getResource();  
  287.              long s =jedis.sdiffstore(newkey, keys);  
  288.              jedisPool.returnResource(jedis);  
  289.              return s;  
  290.          }  
  291.            
  292.          /** 
  293.           * 返回給定集合交集的成員,如果其中一個集合爲不存在或爲空,則返回空Set 
  294.           * @param String... keys 
  295.           * @return 交集成員的集合 
  296.           * **/  
  297.          public Set<String> sinter(String...keys){  
  298.              Jedis jedis=jedisPool.getResource();  
  299.              Set<String> set =jedis.sinter(keys);  
  300.              jedisPool.returnResource(jedis);  
  301.              return set;  
  302.          }  
  303.            
  304.          /** 
  305.           * 這個命令等於sinter,但返回的不是結果集,而是將結果集存儲在新的集合中,如果目標已存在,則覆蓋。 
  306.           * @param String newkey 新結果集的key 
  307.           * @param String... keys 比較的集合 
  308.           * @return 新集合中的記錄數 
  309.           * **/  
  310.          public long sinterstore(String newkey,String...keys){  
  311.              Jedis jedis=jedisPool.getResource();  
  312.              long s =jedis.sinterstore(newkey, keys);  
  313.              jedisPool.returnResource(jedis);  
  314.              return s;  
  315.          }  
  316.            
  317.          /** 
  318.           * 確定一個給定的值是否存在 
  319.           * @param String key 
  320.           * @param String member 要判斷的值 
  321.           * @return 存在返回1,不存在返回0 
  322.           * **/  
  323.          public boolean sismember(String key,String member){  
  324.              ShardedJedis sjedis=shardedJedisPool.getResource();  
  325.              boolean s= sjedis.sismember(key, member);  
  326.              shardedJedisPool.returnResource(sjedis);  
  327.              return s;  
  328.          }  
  329.            
  330.          /** 
  331.           * 返回集合中的所有成員 
  332.           * @param String key 
  333.           * @return 成員集合 
  334.           * */  
  335.          public Set<String> smembers(String key){  
  336.              ShardedJedis sjedis=shardedJedisPool.getResource();  
  337.              Set<String> set= sjedis.smembers(key);  
  338.              shardedJedisPool.returnResource(sjedis);  
  339.              return set;  
  340.          }  
  341.            
  342.          /** 
  343.           * 將成員從源集合移出放入目標集合 
  344.           * <br/>如果源集合不存在或不包哈指定成員,不進行任何操作,返回0<br/> 
  345.           * 否則該成員從源集合上刪除,並添加到目標集合,如果目標集合中成員已存在,則只在源集合進行刪除 
  346.           * @param String srckey 源集合 
  347.           * @param String dstkey 目標集合 
  348.           * @param String member 源集合中的成員 
  349.           * @return 狀態碼,1成功,0失敗 
  350.           * */         
  351.          public long smove(String srckey,String dstkey,String member){  
  352.              Jedis jedis=jedisPool.getResource();  
  353.              long s =jedis.smove(srckey, dstkey, member);  
  354.              jedisPool.returnResource(jedis);  
  355.              return s;  
  356.          }  
  357.            
  358.          /** 
  359.           * 從集合中刪除成員 
  360.           * @param String key 
  361.           * @return 被刪除的成員 
  362.           * */  
  363.          public String spop(String key){  
  364.              Jedis jedis=jedisPool.getResource();  
  365.              String s =jedis.spop(key);  
  366.              jedisPool.returnResource(jedis);  
  367.              return s;  
  368.          }  
  369.            
  370.          /** 
  371.           * 從集合中刪除指定成員 
  372.           * @param String key 
  373.           * @param String member 要刪除的成員 
  374.           * @return 狀態碼,成功返回1,成員不存在返回0 
  375.           * */  
  376.          public long srem(String key,String member){  
  377.              Jedis jedis=jedisPool.getResource();  
  378.              long s =jedis.srem(key,member);  
  379.              jedisPool.returnResource(jedis);  
  380.              return s;  
  381.          }  
  382.            
  383.          /** 
  384.           * 合併多個集合並返回合併後的結果,合併後的結果集合並不保存<br/> 
  385.           * @param String... keys 
  386.           * @return 合併後的結果集合 
  387.           * @see sunionstore 
  388.           * */  
  389.          public Set<String> sunion(String...keys){  
  390.              Jedis jedis=jedisPool.getResource();  
  391.              Set<String> set =jedis.sunion(keys);  
  392.              jedisPool.returnResource(jedis);  
  393.              return set;  
  394.          }  
  395.            
  396.          /** 
  397.           * 合併多個集合並將合併後的結果集保存在指定的新集合中,如果新集合已經存在則覆蓋 
  398.           * @param String newkey 新集合的key 
  399.           * @param String... keys 要合併的集合 
  400.           * **/  
  401.          public long sunionstore(String newkey,String...keys){  
  402.              Jedis jedis=jedisPool.getResource();  
  403.              long s =jedis.sunionstore(newkey, keys);  
  404.              jedisPool.returnResource(jedis);  
  405.              return s;  
  406.          }  
  407.      }  
  408.        
  409.      //TODO  
  410.      public class SortSet{  
  411.            
  412.          /** 
  413.           * 向集合中增加一條記錄,如果這個值已存在,這個值對應的權重將被置爲新的權重 
  414.           * @param String key 
  415.           * @param double score 權重 
  416.           * @param String member 要加入的值, 
  417.           * @return 狀態碼 1成功,0已存在member的值 
  418.           * */  
  419.          public long zadd(String key,double score,String member){  
  420.              Jedis jedis=jedisPool.getResource();  
  421.              long s =jedis.zadd(key, score, member);  
  422.              jedisPool.returnResource(jedis);  
  423.              return s;  
  424.          }  
  425.            
  426.          /** 
  427.           * 獲取集合中元素的數量 
  428.           * @param String key 
  429.           * @return 如果返回0則集合不存在 
  430.           * */  
  431.          public long zcard(String key){  
  432.              ShardedJedis sjedis=shardedJedisPool.getResource();  
  433.              long len= sjedis.zcard(key);  
  434.              shardedJedisPool.returnResource(sjedis);  
  435.              return len;  
  436.          }  
  437.            
  438.          /** 
  439.           * 獲取指定權重區間內集合的數量 
  440.           * @param String key 
  441.           * @param double min 最小排序位置 
  442.           * @param double max 最大排序位置 
  443.           * */  
  444.          public long zcount(String key,double min,double max){  
  445.              ShardedJedis sjedis=shardedJedisPool.getResource();  
  446.              long len= sjedis.zcount(key, min, max);  
  447.              shardedJedisPool.returnResource(sjedis);  
  448.              return len;  
  449.          }  
  450.            
  451.          /** 
  452.           * 獲得set的長度 
  453.           * @param key 
  454.           * @return 
  455.           */  
  456.          public long zlength(String key){  
  457.              long len = 0;  
  458.              Set<String> set = zrange(key,0,-1);  
  459.              len = set.size();  
  460.              return len;  
  461.          }  
  462.            
  463.          /** 
  464.           * 權重增加給定值,如果給定的member已存在 
  465.           * @param String key 
  466.           * @param double score 要增的權重 
  467.           * @param String member 要插入的值 
  468.           * @return 增後的權重 
  469.           * */  
  470.          public double zincrby(String key,double score,String member){  
  471.              Jedis jedis=jedisPool.getResource();  
  472.              double s =jedis.zincrby(key, score, member);  
  473.              jedisPool.returnResource(jedis);  
  474.              return s;  
  475.          }  
  476.            
  477.          /** 
  478.           * 返回指定位置的集合元素,0爲第一個元素,-1爲最後一個元素 
  479.           * @param String key 
  480.           * @param int start 開始位置(包含) 
  481.           * @param int end  結束位置(包含) 
  482.           * @return Set<String> 
  483.           * */  
  484.          public Set<String> zrange(String key,int start,int end){  
  485.              ShardedJedis sjedis=shardedJedisPool.getResource();  
  486.              Set<String> set= sjedis.zrange(key, start, end);  
  487.              shardedJedisPool.returnResource(sjedis);  
  488.              return set;  
  489.          }  
  490.            
  491.          /** 
  492.           * 返回指定權重區間的元素集合 
  493.           * @param String key 
  494.           * @param double min 上限權重 
  495.           * @param double max 下限權重 
  496.           * @return Set<String> 
  497.           * */  
  498.          public Set<String> zrangeByScore(String key,double min,double max){  
  499.              ShardedJedis sjedis=shardedJedisPool.getResource();  
  500.              Set<String> set= sjedis.zrangeByScore(key, min, max);  
  501.              shardedJedisPool.returnResource(sjedis);  
  502.              return set;  
  503.          }  
  504.            
  505.          /** 
  506.           * 獲取指定值在集合中的位置,集合排序從低到高 
  507.           * @see zrevrank 
  508.           * @param String key 
  509.           * @param String member 
  510.           * @return long 位置 
  511.           * */  
  512.          public long zrank(String key,String member){  
  513.              ShardedJedis sjedis=shardedJedisPool.getResource();  
  514.              long index= sjedis.zrank(key,member);  
  515.              shardedJedisPool.returnResource(sjedis);  
  516.              return index;  
  517.          }  
  518.            
  519.          /** 
  520.           * 獲取指定值在集合中的位置,集合排序從低到高 
  521.           * @see zrank 
  522.           * @param String key 
  523.           * @param String member 
  524.           * @return long 位置 
  525.           * */  
  526.          public long zrevrank(String key,String member){  
  527.              ShardedJedis sjedis=shardedJedisPool.getResource();  
  528.              long index= sjedis.zrevrank(key, member);  
  529.              shardedJedisPool.returnResource(sjedis);  
  530.              return index;  
  531.          }  
  532.            
  533.          /** 
  534.           * 從集合中刪除成員 
  535.           * @param String key 
  536.           * @param String member 
  537.           * @return 返回1成功 
  538.           * */  
  539.          public long zrem(String key,String member){  
  540.              Jedis jedis=jedisPool.getResource();  
  541.              long s =jedis.zrem(key, member);  
  542.              jedisPool.returnResource(jedis);  
  543.              return s;  
  544.          }  
  545.            
  546.          /** 
  547.           * 刪除 
  548.           * @param key 
  549.           * @return 
  550.           */  
  551.          public long zrem(String key){  
  552.              Jedis jedis=jedisPool.getResource();  
  553.              long s =jedis.del(key);  
  554.              jedisPool.returnResource(jedis);  
  555.              return s;  
  556.          }  
  557.            
  558.            
  559.          /** 
  560.           * 刪除給定位置區間的元素 
  561.           * @param String key 
  562.           * @param int start 開始區間,從0開始(包含) 
  563.           * @param int end 結束區間,-1爲最後一個元素(包含) 
  564.           * @return 刪除的數量 
  565.           * */  
  566.          public long zremrangeByRank(String key,int start,int end){  
  567.              Jedis jedis=jedisPool.getResource();  
  568.              long s =jedis.zremrangeByRank(key, start, end);  
  569.              jedisPool.returnResource(jedis);  
  570.              return s;  
  571.          }  
  572.            
  573.          /** 
  574.           * 刪除給定權重區間的元素 
  575.           * @param String key 
  576.           * @param double min 下限權重(包含) 
  577.           * @param double max 上限權重(包含) 
  578.           * @return 刪除的數量 
  579.           * */  
  580.          public long zremrangeByScore(String key,double min,double max){  
  581.              Jedis jedis=jedisPool.getResource();  
  582.              long s =jedis.zremrangeByScore(key, min, max);  
  583.              jedisPool.returnResource(jedis);  
  584.              return s;  
  585.          }  
  586.            
  587.          /** 
  588.           * 獲取給定區間的元素,原始按照權重由高到低排序 
  589.           * @param String key 
  590.           * @param int start 
  591.           * @param int end 
  592.           * @return Set<String> 
  593.           * */  
  594.          public Set<String> zrevrange(String key,int start,int end){  
  595.              ShardedJedis sjedis=shardedJedisPool.getResource();  
  596.              Set<String> set= sjedis.zrevrange(key,start,end);  
  597.              shardedJedisPool.returnResource(sjedis);  
  598.              return set;  
  599.          }  
  600.            
  601.          /** 
  602.           * 獲取給定值在集合中的權重 
  603.           * @param String key 
  604.           * @param memeber 
  605.           * @return double 權重 
  606.           * */  
  607.          public double zscore(String key,String memebr){  
  608.              ShardedJedis sjedis=shardedJedisPool.getResource();  
  609.              Double score= sjedis.zscore(key,memebr);  
  610.              shardedJedisPool.returnResource(sjedis);  
  611.              if(score!=nullreturn score;  
  612.              return 0;  
  613.          }  
  614.      }  
  615.        
  616.      //TODO  
  617.      public class Hash{  
  618.            
  619.          /** 
  620.           * 從hash中刪除指定的存儲 
  621.           * @param String key 
  622.           * @param String fieid 存儲的名字 
  623.           * @return 狀態碼,1成功,0失敗 
  624.           * */  
  625.          public long hdel(String key,String fieid){  
  626.              Jedis jedis=jedisPool.getResource();  
  627.              long s =jedis.hdel(key, fieid);  
  628.              jedisPool.returnResource(jedis);  
  629.              return s;  
  630.          }  
  631.            
  632.          public long hdel(String key){  
  633.              Jedis jedis=jedisPool.getResource();  
  634.              long s =jedis.del(key);  
  635.              jedisPool.returnResource(jedis);  
  636.              return s;  
  637.          }  
  638.            
  639.          /** 
  640.           * 測試hash中指定的存儲是否存在 
  641.           * @param String key 
  642.           * @param String fieid 存儲的名字 
  643.           * @return 1存在,0不存在 
  644.           * */  
  645.          public boolean hexists(String key,String fieid){  
  646.              ShardedJedis sjedis=shardedJedisPool.getResource();  
  647.              boolean s= sjedis.hexists(key, fieid);  
  648.              shardedJedisPool.returnResource(sjedis);  
  649.              return s;  
  650.          }  
  651.            
  652.          /** 
  653.           * 返回hash中指定存儲位置的值 
  654.           * @param String key 
  655.           * @param String fieid 存儲的名字 
  656.           * @return 存儲對應的值 
  657.           * */  
  658.          public String hget(String key,String fieid){  
  659.              ShardedJedis sjedis=shardedJedisPool.getResource();  
  660.              String s= sjedis.hget(key, fieid);  
  661.              shardedJedisPool.returnResource(sjedis);  
  662.              return s;  
  663.          }  
  664.            
  665.          /** 
  666.           * 以Map的形式返回hash中的存儲和值 
  667.           * @param String key 
  668.           * @return Map<Strinig,String> 
  669.           * */  
  670.          public Map<String,String> hgetall(String key){  
  671.              ShardedJedis sjedis=shardedJedisPool.getResource();  
  672.              Map<String,String> map= sjedis.hgetAll(key);  
  673.              shardedJedisPool.returnResource(sjedis);  
  674.              return map;  
  675.          }  
  676.            
  677.          /** 
  678.           * 在指定的存儲位置加上指定的數字,存儲位置的值必須可轉爲數字類型 
  679.           * @param String key 
  680.           * @param String fieid 存儲位置 
  681.           * @param String long value 要增加的值,可以是負數 
  682.           * @return 增加指定數字後,存儲位置的值 
  683.           * */  
  684.          public long hincrby(String key,String fieid,long value){  
  685.              Jedis jedis=jedisPool.getResource();  
  686.              long s =jedis.hincrBy(key, fieid, value);  
  687.              jedisPool.returnResource(jedis);  
  688.              return s;  
  689.          }  
  690.            
  691.          /** 
  692.           * 返回指定hash中的所有存儲名字,類似Map中的keySet方法 
  693.           * @param String key 
  694.           * @return Set<String> 存儲名稱的集合 
  695.           * */  
  696.          public Set<String> hkeys(String key){  
  697.              ShardedJedis sjedis=shardedJedisPool.getResource();  
  698.              Set<String> set= sjedis.hkeys(key);  
  699.              shardedJedisPool.returnResource(sjedis);  
  700.              return set;  
  701.          }  
  702.            
  703.          /** 
  704.           * 獲取hash中存儲的個數,類似Map中size方法 
  705.           * @param String key 
  706.           * @return long 存儲的個數 
  707.           * */  
  708.          public long hlen(String key){  
  709.              ShardedJedis sjedis=shardedJedisPool.getResource();  
  710.              long len= sjedis.hlen(key);  
  711.              shardedJedisPool.returnResource(sjedis);  
  712.              return len;  
  713.          }  
  714.            
  715.          /** 
  716.           * 根據多個key,獲取對應的value,返回List,如果指定的key不存在,List對應位置爲null 
  717.           * @param String key 
  718.           * @param String... fieids  存儲位置 
  719.           * @return List<String> 
  720.           * */  
  721.          public List<String> hmget(String key,String...fieids){  
  722.              ShardedJedis sjedis=shardedJedisPool.getResource();  
  723.              List<String> list= sjedis.hmget(key, fieids);  
  724.              shardedJedisPool.returnResource(sjedis);  
  725.              return list;  
  726.          }  
  727.            
  728.          /** 
  729.           * 添加對應關係,如果對應關係已存在,則覆蓋 
  730.           * @param Strin key 
  731.           * @param Map<String,String> 對應關係 
  732.           * @return 狀態,成功返回OK 
  733.           * */  
  734.          public String hmset(String key,Map<String,String> map){  
  735.              Jedis jedis=jedisPool.getResource();  
  736.              String s =jedis.hmset(key, map);  
  737.              jedisPool.returnResource(jedis);  
  738.              return s;  
  739.          }  
  740.            
  741.          /** 
  742.           * 添加一個對應關係 
  743.           * @param String key 
  744.           * @param String fieid 
  745.           * @param String value 
  746.           * @return 狀態碼 1成功,0失敗,fieid已存在將更新,也返回0 
  747.           * **/  
  748.          public long hset(String key,String fieid,String value){  
  749.              Jedis jedis=jedisPool.getResource();  
  750.              long s =jedis.hset(key, fieid,value);  
  751.              jedisPool.returnResource(jedis);  
  752.              return s;  
  753.          }  
  754.            
  755.          /** 
  756.           * 添加對應關係,只有在fieid不存在時才執行 
  757.           * @param String key 
  758.           * @param String fieid 
  759.           * @param String value 
  760.           * @return 狀態碼 1成功,0失敗fieid已存 
  761.           * **/  
  762.          public long hsetnx(String key,String fieid,String value){  
  763.              Jedis jedis=jedisPool.getResource();  
  764.              long s =jedis.hsetnx(key, fieid,value);  
  765.              jedisPool.returnResource(jedis);  
  766.              return s;  
  767.          }  
  768.            
  769.          /** 
  770.           * 獲取hash中value的集合 
  771.           * @param String key 
  772.           * @return List<String> 
  773.           * */  
  774.          public List<String> hvals(String key){  
  775.              ShardedJedis sjedis=shardedJedisPool.getResource();  
  776.              List<String> list= sjedis.hvals(key);  
  777.              shardedJedisPool.returnResource(sjedis);  
  778.              return list;  
  779.          }  
  780.      }  
  781.        
  782.      //TODO  
  783.      public class Strings{  
  784.          /** 
  785.           * 根據key獲取記錄 
  786.           * @param String key 
  787.           * @return 值 
  788.           * */  
  789.          public String get(String key){  
  790.              ShardedJedis sjedis=shardedJedisPool.getResource();  
  791.              String value= sjedis.get(key);  
  792.              shardedJedisPool.returnResource(sjedis);  
  793.              return value;  
  794.          }  
  795.          /** 
  796.           * 根據key獲取記錄 
  797.           * @param byte[] key 
  798.           * @return 值 
  799.           * */  
  800.          public byte[] get(byte[] key){  
  801.              ShardedJedis sjedis=shardedJedisPool.getResource();  
  802.              byte[] value= sjedis.get(key);  
  803.              shardedJedisPool.returnResource(sjedis);  
  804.              return value;  
  805.          }  
  806.            
  807.          /** 
  808.           * 添加有過期時間的記錄 
  809.           * @param String key 
  810.           * @param int seconds  過期時間,以秒爲單位 
  811.           * @param String value 
  812.           * @return String 操作狀態 
  813.           * */  
  814.          public String setEx(String key,int seconds,String value){  
  815.              Jedis jedis=jedisPool.getResource();  
  816.              String str =jedis.setex(key, seconds, value);  
  817.              jedisPool.returnResource(jedis);  
  818.              return str;  
  819.          }   
  820.            
  821.            
  822.          /** 
  823.           * 添加有過期時間的記錄 
  824.           * @param String key 
  825.           * @param int seconds  過期時間,以秒爲單位 
  826.           * @param String value 
  827.           * @return String 操作狀態 
  828.           * */  
  829.          public String setEx(byte[] key,int seconds,byte[] value){  
  830.              Jedis jedis=jedisPool.getResource();  
  831.              String str =jedis.setex(key, seconds, value);    
  832.              jedisPool.returnResource(jedis);  
  833.              return str;  
  834.          }   
  835.            
  836.          /** 
  837.           * 添加一條記錄,僅當給定的key不存在時才插入 
  838.           * @param String key 
  839.           * @param String value 
  840.           * @return long 狀態碼,1插入成功且key不存在,0未插入,key存在 
  841.           * */  
  842.          public long setnx(String key,String value){  
  843.              Jedis jedis=jedisPool.getResource();  
  844.              long str =jedis.setnx(key, value);  
  845.              jedisPool.returnResource(jedis);  
  846.              return str;  
  847.          }  
  848.            
  849.          /** 
  850.           * 添加記錄,如果記錄已存在將覆蓋原有的value 
  851.           * @param String key 
  852.           * @param String value 
  853.           * @return 狀態碼 
  854.           * */  
  855.          public String set(String key,String value){  
  856.              return set(SafeEncoder.encode(key),SafeEncoder.encode(value));  
  857.          }  
  858.            
  859.          /** 
  860.           * 添加記錄,如果記錄已存在將覆蓋原有的value 
  861.           * @param byte[] key 
  862.           * @param byte[] value 
  863.           * @return 狀態碼 
  864.           * */  
  865.          public String set(byte[] key,byte[] value){  
  866.              Jedis jedis=jedisPool.getResource();  
  867.              String status =jedis.set(key, value);  
  868.              jedisPool.returnResource(jedis);  
  869.              return status;  
  870.          }  
  871.            
  872.          /** 
  873.           * 從指定位置開始插入數據,插入的數據會覆蓋指定位置以後的數據<br/> 
  874.           * 例:String str1="123456789";<br/> 
  875.           * 對str1操作後setRange(key,4,0000),str1="123400009"; 
  876.           * @param String key 
  877.           * @param long offset 
  878.           * @param String value 
  879.           * @return long value的長度 
  880.           * */  
  881.          public long setRange(String key,long offset,String value){  
  882.              Jedis jedis=jedisPool.getResource();  
  883.              long len =jedis.setrange(key, offset, value);  
  884.              jedisPool.returnResource(jedis);  
  885.              return len;  
  886.          }  
  887.          /** 
  888.           * 在指定的key中追加value 
  889.           * @param String key 
  890.           * @param String value 
  891.           * @return long 追加後value的長度 
  892.           * **/  
  893.          public long append(String key,String value){  
  894.              Jedis jedis=jedisPool.getResource();  
  895.              long len =jedis.append(key, value);  
  896.              jedisPool.returnResource(jedis);  
  897.              return len;  
  898.          }  
  899.            
  900.          /** 
  901.           * 將key對應的value減去指定的值,只有value可以轉爲數字時該方法纔可用 
  902.           * @param String key 
  903.           * @param long number 要減去的值 
  904.           * @return long 減指定值後的值 
  905.           * */  
  906.          public long decrBy(String key,long number){  
  907.              Jedis jedis=jedisPool.getResource();  
  908.              long len =jedis.decrBy(key,number);  
  909.              jedisPool.returnResource(jedis);  
  910.              return len;  
  911.          }  
  912.            
  913.          /** 
  914.           * <b>可以作爲獲取唯一id的方法</b><br/> 
  915.           * 將key對應的value加上指定的值,只有value可以轉爲數字時該方法纔可用 
  916.           * @param String key 
  917.           * @param long number 要減去的值 
  918.           * @return long 相加後的值 
  919.           * */  
  920.          public long incrBy(String key,long number){  
  921.              Jedis jedis=jedisPool.getResource();  
  922.              long len =jedis.incrBy(key,number);  
  923.              jedisPool.returnResource(jedis);  
  924.              return len;  
  925.          }  
  926.            
  927.          /** 
  928.           * 對指定key對應的value進行截取 
  929.           * @param String key 
  930.           * @param long startOffset 開始位置(包含) 
  931.           * @param long endOffset 結束位置(包含) 
  932.           * @return String 截取的值 
  933.           * */  
  934.          public String getrange(String key,long startOffset,long endOffset){  
  935.              ShardedJedis sjedis=shardedJedisPool.getResource();  
  936.              String value= sjedis.getrange(key, startOffset, endOffset);  
  937.              shardedJedisPool.returnResource(sjedis);  
  938.              return value;  
  939.          }  
  940.            
  941.          /** 
  942.           * 獲取並設置指定key對應的value<br/> 
  943.           * 如果key存在返回之前的value,否則返回null 
  944.           * @param String key 
  945.           * @param String value 
  946.           * @return String 原始value或null 
  947.           * */  
  948.          public String getSet(String key,String value){  
  949.              Jedis jedis=jedisPool.getResource();  
  950.              String str =jedis.getSet(key, value);  
  951.              jedisPool.returnResource(jedis);  
  952.              return str;  
  953.          }  
  954.            
  955.          /** 
  956.           * 批量獲取記錄,如果指定的key不存在返回List的對應位置將是null 
  957.           * @param String keys 
  958.           * @return List<String> 值得集合 
  959.           * */  
  960.          public List<String> mget(String... keys){  
  961.              Jedis jedis=jedisPool.getResource();  
  962.              List<String> str =jedis.mget(keys);  
  963.              jedisPool.returnResource(jedis);  
  964.              return str;  
  965.          }  
  966.            
  967.          /** 
  968.           * 批量存儲記錄 
  969.           * @param String keysvalues 例:keysvalues="key1","value1","key2","value2"; 
  970.           * @return String 狀態碼 
  971.           * */  
  972.          public String mset(String...keysvalues){  
  973.              Jedis jedis=jedisPool.getResource();  
  974.              String str =jedis.mset(keysvalues);  
  975.              jedisPool.returnResource(jedis);  
  976.              return str;  
  977.          }  
  978.            
  979.          /** 
  980.           * 獲取key對應的值的長度 
  981.           * @param String key 
  982.           * @return value值得長度 
  983.           * */  
  984.          public long strlen(String key){  
  985.              Jedis jedis=jedisPool.getResource();  
  986.              long len =jedis.strlen(key);  
  987.              jedisPool.returnResource(jedis);  
  988.              return len;  
  989.          }  
  990.      }  
  991.        
  992.      //TODO  
  993.      public class Lists{  
  994.          /** 
  995.           * List長度 
  996.           * @param String key 
  997.           * @return 長度 
  998.           * */  
  999.          public long llen(String key){  
  1000.              return llen(SafeEncoder.encode(key));  
  1001.          }  
  1002.            
  1003.          /** 
  1004.           * List長度 
  1005.           * @param byte[] key 
  1006.           * @return 長度 
  1007.           * */  
  1008.          public long llen(byte[] key){  
  1009.              ShardedJedis sjedis=shardedJedisPool.getResource();  
  1010.              long count= sjedis.llen(key);  
  1011.              shardedJedisPool.returnResource(sjedis);  
  1012.              return count;  
  1013.          }  
  1014.            
  1015.          /** 
  1016.           * 覆蓋操作,將覆蓋List中指定位置的值 
  1017.           * @param byte[] key 
  1018.           * @param int index 位置 
  1019.           * @param byte[] value 值 
  1020.           * @return 狀態碼 
  1021.           * */  
  1022.          public String lset(byte[] key,int index,byte[] value){  
  1023.              Jedis jedis=jedisPool.getResource();  
  1024.              String status=jedis.lset(key, index, value);  
  1025.              jedisPool.returnResource(jedis);  
  1026.              return status;  
  1027.          }  
  1028.            
  1029.          /** 
  1030.           * 覆蓋操作,將覆蓋List中指定位置的值 
  1031.           * @param key 
  1032.           * @param int index 位置 
  1033.           * @param String value 值 
  1034.           * @return 狀態碼 
  1035.           * */  
  1036.          public String lset(String key,int index,String value){  
  1037.              return lset(SafeEncoder.encode(key),index,SafeEncoder.encode(value));  
  1038.          }  
  1039.            
  1040.          /** 
  1041.           * 在value的相對位置插入記錄 
  1042.           * @param key 
  1043.           * @param LIST_POSITION  前面插入或後面插入 
  1044.           * @param String pivot 相對位置的內容 
  1045.           * @param String value 插入的內容 
  1046.           * @return 記錄總數 
  1047.           * */  
  1048.          public long linsert(String key,LIST_POSITION where,String pivot,String value){  
  1049.              return linsert(SafeEncoder.encode(key),where,SafeEncoder.encode(pivot),SafeEncoder.encode(value));  
  1050.          }  
  1051.            
  1052.          /** 
  1053.           * 在指定位置插入記錄 
  1054.           * @param String key 
  1055.           * @param LIST_POSITION  前面插入或後面插入 
  1056.           * @param byte[] pivot 相對位置的內容 
  1057.           * @param byte[] value 插入的內容 
  1058.           * @return 記錄總數 
  1059.           * */  
  1060.          public long linsert(byte[] key,LIST_POSITION where,byte[] pivot,byte[] value){  
  1061.              Jedis jedis=jedisPool.getResource();  
  1062.              long count=jedis.linsert(key, where, pivot, value);  
  1063.              jedisPool.returnResource(jedis);  
  1064.              return count;  
  1065.          }  
  1066.            
  1067.          /** 
  1068.           * 獲取List中指定位置的值 
  1069.           * @param String key 
  1070.           * @param int index 位置 
  1071.           * @return 值 
  1072.           * **/  
  1073.          public String lindex(String key,int index){  
  1074.              return SafeEncoder.encode(lindex(SafeEncoder.encode(key),index));  
  1075.          }  
  1076.            
  1077.          /** 
  1078.           * 獲取List中指定位置的值 
  1079.           * @param byte[] key 
  1080.           * @param int index 位置 
  1081.           * @return 值 
  1082.           * **/  
  1083.          public byte[] lindex(byte[] key,int index){  
  1084.              ShardedJedis sjedis=shardedJedisPool.getResource();  
  1085.              byte[] value=sjedis.lindex(key, index);  
  1086.              shardedJedisPool.returnResource(sjedis);  
  1087.              return value;  
  1088.          }  
  1089.            
  1090.          /** 
  1091.           * 將List中的第一條記錄移出List 
  1092.           * @param String key 
  1093.           * @return 移出的記錄 
  1094.           * */  
  1095.          public String lpop(String key){  
  1096.              return SafeEncoder.encode(lpop(SafeEncoder.encode(key)));  
  1097.          }  
  1098.          /** 
  1099.           * 將List中的第一條記錄移出List 
  1100.           * @param byte[] key 
  1101.           * @return 移出的記錄 
  1102.           * */  
  1103.          public byte[] lpop(byte[] key){  
  1104.              Jedis jedis=jedisPool.getResource();  
  1105.              byte[] value=jedis.lpop(key);  
  1106.              jedisPool.returnResource(jedis);  
  1107.              return value;  
  1108.          }  
  1109.          /** 
  1110.           * 將List中最後第一條記錄移出List 
  1111.           * @param byte[] key 
  1112.           * @return 移出的記錄 
  1113.           * */  
  1114.          public String rpop(String key){  
  1115.              Jedis jedis=jedisPool.getResource();  
  1116.              String value=jedis.rpop(key);  
  1117.              jedisPool.returnResource(jedis);  
  1118.              return value;  
  1119.          }  
  1120.          /** 
  1121.           * 向List尾部追加記錄 
  1122.           * @param String key 
  1123.           * @param String value 
  1124.           * @return 記錄總數 
  1125.           * */  
  1126.          public long lpush(String key,String value){  
  1127.              return lpush(SafeEncoder.encode(key),SafeEncoder.encode(value));  
  1128.          }  
  1129.            
  1130.          /** 
  1131.           * 向List頭部追加記錄 
  1132.           * @param String key 
  1133.           * @param String value 
  1134.           * @return 記錄總數 
  1135.           * */  
  1136.          public long rpush(String key,String value){  
  1137.              Jedis jedis=jedisPool.getResource();  
  1138.              long count=jedis.rpush(key, value);  
  1139.              jedisPool.returnResource(jedis);  
  1140.              return count;  
  1141.          }  
  1142.          /** 
  1143.           * 向List中追加記錄 
  1144.           * @param byte[] key 
  1145.           * @param byte[] value 
  1146.           * @return 記錄總數 
  1147.           * */  
  1148.          public long lpush(byte[] key,byte[] value){  
  1149.              Jedis jedis=jedisPool.getResource();  
  1150.              long count=jedis.lpush(key, value);  
  1151.              jedisPool.returnResource(jedis);  
  1152.              return count;  
  1153.          }  
  1154.            
  1155.          /** 
  1156.           * 獲取指定範圍的記錄,可以做爲分頁使用 
  1157.           * @param String key 
  1158.           * @param long start 
  1159.           * @param long end 
  1160.           * @return List 
  1161.           * */  
  1162.          public List<String> lrange(String key,long start,long end){  
  1163.              ShardedJedis sjedis=shardedJedisPool.getResource();  
  1164.              List<String> list=sjedis.lrange(key, start,end);  
  1165.              shardedJedisPool.returnResource(sjedis);  
  1166.              return list;  
  1167.          }  
  1168.          /** 
  1169.           * 獲取指定範圍的記錄,可以做爲分頁使用 
  1170.           * @param byte[] key 
  1171.           * @param int start 
  1172.           * @param int end 如果爲負數,則尾部開始計算 
  1173.           * @return List 
  1174.           * */  
  1175.          public List<byte[]> lrange(byte[] key,int start,int end){  
  1176.              ShardedJedis sjedis=shardedJedisPool.getResource();  
  1177.              List<byte[]> list=sjedis.lrange(key, start,end);  
  1178.              shardedJedisPool.returnResource(sjedis);  
  1179.              return list;  
  1180.          }  
  1181.            
  1182.          /** 
  1183.           * 刪除List中c條記錄,被刪除的記錄值爲value 
  1184.           * @param byte[] key 
  1185.           * @param int c 要刪除的數量,如果爲負數則從List的尾部檢查並刪除符合的記錄 
  1186.           * @param byte[] value 要匹配的值 
  1187.           * @return 刪除後的List中的記錄數 
  1188.           * */  
  1189.          public long lrem(byte[] key,int c,byte[] value){  
  1190.              Jedis jedis=jedisPool.getResource();  
  1191.              long count=jedis.lrem(key, c,value);  
  1192.              jedisPool.returnResource(jedis);  
  1193.              return count;  
  1194.          }  
  1195.            
  1196.          /** 
  1197.           * 刪除List中c條記錄,被刪除的記錄值爲value 
  1198.           * @param String key 
  1199.           * @param int c 要刪除的數量,如果爲負數則從List的尾部檢查並刪除符合的記錄 
  1200.           * @param String value 要匹配的值 
  1201.           * @return 刪除後的List中的記錄數 
  1202.           * */  
  1203.          public long lrem(String key,int c,String value){  
  1204.              return lrem(SafeEncoder.encode(key),c,SafeEncoder.encode(value));  
  1205.          }  
  1206.            
  1207.          /** 
  1208.           * 算是刪除吧,只保留start與end之間的記錄 
  1209.           * @param byte[] key 
  1210.           * @param int start 記錄的開始位置(0表示第一條記錄) 
  1211.           * @param int end 記錄的結束位置(如果爲-1則表示最後一個,-2,-3以此類推) 
  1212.           * @return 執行狀態碼 
  1213.           * */  
  1214.          public String ltrim(byte[] key,int start,int end){  
  1215.              Jedis jedis=jedisPool.getResource();  
  1216.              String str=jedis.ltrim(key, start, end);  
  1217.              jedisPool.returnResource(jedis);  
  1218.              return str;  
  1219.          }  
  1220.          /** 
  1221.           * 算是刪除吧,只保留start與end之間的記錄 
  1222.           * @param String key 
  1223.           * @param int start 記錄的開始位置(0表示第一條記錄) 
  1224.           * @param int end 記錄的結束位置(如果爲-1則表示最後一個,-2,-3以此類推) 
  1225.           * @return 執行狀態碼 
  1226.           * */  
  1227.          public String ltrim(String key,int start,int end){  
  1228.              return ltrim(SafeEncoder.encode(key),start,end);  
  1229.          }  
  1230.      }  
  1231. }  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章