使用spring+jedis-2.5.2.jar开发redis应用

来源:互联网 发布:淘宝的在线客服在哪里 编辑:程序博客网 时间:2024/06/05 20:52

最近我们产品也在用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. }  
0 0
原创粉丝点击