• RedisUtil工具类


    转载:http://blog.csdn.net/liuxiao723846/article/details/50401406

    1、使用了jedis客户端,对redis进行了封装,包括:

    1)使用了redispool获取连接;以及连接的回收;

    2)常用五种数据结构的常用操作封装;

    复制代码
       1 package redis.utils;
       2 
       3 import java.util.List;
       4 import java.util.Map;
       5 import java.util.Set;
       6 
       7 //import org.apache.log4j.Logger;
       8 
       9 
      10 import redis.clients.jedis.Jedis;
      11 import redis.clients.jedis.JedisPool;
      12 import redis.clients.jedis.JedisPoolConfig; 
      13 import redis.clients.jedis.SortingParams;
      14 import redis.clients.jedis.BinaryClient.LIST_POSITION;
      15 import redis.clients.util.SafeEncoder;
      16 
      17 /**
      18  * @author Mr.hu
      19  * @version crateTime:2013-10-30 下午5:41:30
      20  * Class Explain:JedisUtil  
      21  */
      22 public class JedisUtil { 
      23     
      24      //private Logger log = Logger.getLogger(this.getClass());  
      25      /**缓存生存时间 */
      26      private final int expire = 60000;
      27      /** 操作Key的方法 */
      28      public Keys KEYS;
      29      /** 对存储结构为String类型的操作 */
      30      public Strings STRINGS;
      31      /** 对存储结构为List类型的操作 */
      32      public Lists LISTS;
      33       /** 对存储结构为Set类型的操作 */
      34      public Sets SETS;
      35      /** 对存储结构为HashMap类型的操作 */
      36      public Hash HASH;
      37      /** 对存储结构为Set(排序的)类型的操作 */
      38      public SortSet SORTSET;
      39      private static JedisPool jedisPool = null;  
      40          
      41      private JedisUtil() {   
      42         
      43      } 
      44      static {  
      45             JedisPoolConfig config = new JedisPoolConfig();  
      46             //控制一个pool可分配多少个jedis实例,通过pool.getResource()来获取;  
      47             //如果赋值为-1,则表示不限制;如果pool已经分配了maxActive个jedis实例,则此时pool的状态为exhausted(耗尽)。  
      48             config.setMaxTotal(500);  
      49             //控制一个pool最多有多少个状态为idle(空闲的)的jedis实例。  
      50             config.setMaxIdle(5);  
      51             //表示当borrow(引入)一个jedis实例时,最大的等待时间,如果超过等待时间,则直接抛出JedisConnectionException;  
      52             config.setMaxWaitMillis(1000 * 100);  
      53             //在borrow一个jedis实例时,是否提前进行validate操作;如果为true,则得到的jedis实例均是可用的;  
      54             config.setTestOnBorrow(true);  
      55             
      56             //redis如果设置了密码:
      57             /*jedisPool = new JedisPool(config, JRedisPoolConfig.REDIS_IP, 
      58                     JRedisPoolConfig.REDIS_PORT,
      59                     10000,JRedisPoolConfig.REDIS_PASSWORD);    */
      60             
      61             //redis未设置了密码:
      62            jedisPool = new JedisPool(config, "172.30.37.73",6379); 
      63        }
      64      
      65      public JedisPool getPool() {  
      66          return jedisPool; 
      67      }
      68      
      69      /**
      70       * 从jedis连接池中获取获取jedis对象  
      71       * @return
      72       */
      73      public Jedis getJedis() {  
      74          return jedisPool.getResource(); 
      75      }
      76      
      77      
      78      private static final JedisUtil jedisUtil = new JedisUtil();
      79      
      80  
      81     /**
      82      * 获取JedisUtil实例
      83      * @return
      84      */
      85     public static JedisUtil getInstance() {
      86         return jedisUtil; 
      87     }
      88 
      89     /**
      90      * 回收jedis(放到finally中)
      91      * @param jedis
      92      */
      93     public void returnJedis(Jedis jedis) {
      94         if (null != jedis && null != jedisPool) {
      95             jedisPool.returnResource(jedis);
      96         }
      97     } 
      98     
      99     /**
     100      * 销毁连接(放到catch中)
     101      * @param pool
     102      * @param jedis
     103      */
     104     public static void returnBrokenResource(Jedis jedis) {
     105         if (null != jedis && null != jedisPool) {
     106             jedisPool.returnResource(jedis);
     107         }
     108     }
     109 
     110     
     111     /**
     112      * 设置过期时间
     113      * @author ruan 2013-4-11
     114      * @param key
     115      * @param seconds
     116      */
     117     public void expire(String key, int seconds) {
     118         if (seconds <= 0) { 
     119             return;
     120         }
     121         Jedis jedis = getJedis();
     122         jedis.expire(key, seconds);
     123         returnJedis(jedis);
     124     }
     125 
     126     /**
     127      * 设置默认过期时间
     128      * @author ruan 2013-4-11
     129      * @param key
     130      */
     131     public void expire(String key) {
     132         expire(key, expire);
     133     }
     134     
     135     
     136     //*******************************************Keys*******************************************//
     137     public class Keys {
     138 
     139         /**
     140          * 清空所有key
     141          */
     142         public String flushAll() {
     143             Jedis jedis = getJedis();
     144             String stata = jedis.flushAll();
     145             returnJedis(jedis);
     146             return stata;
     147         }
     148 
     149         /**
     150          * 更改key
     151          * @param String oldkey
     152          * @param String  newkey
     153          * @return 状态码
     154          * */
     155         public String rename(String oldkey, String newkey) { 
     156             return rename(SafeEncoder.encode(oldkey),
     157                     SafeEncoder.encode(newkey));
     158         }
     159 
     160         /**
     161          * 更改key,仅当新key不存在时才执行
     162          * @param String oldkey
     163          * @param String newkey 
     164          * @return 状态码
     165          * */
     166         public long renamenx(String oldkey, String newkey) {
     167             Jedis jedis = getJedis();
     168             long status = jedis.renamenx(oldkey, newkey);
     169             returnJedis(jedis);
     170             return status;
     171         }
     172 
     173         /**
     174          * 更改key
     175          * @param String oldkey
     176          * @param String newkey
     177          * @return 状态码
     178          * */
     179         public String rename(byte[] oldkey, byte[] newkey) {
     180             Jedis jedis = getJedis();
     181             String status = jedis.rename(oldkey, newkey);
     182             returnJedis(jedis);
     183             return status;
     184         }
     185 
     186         /**
     187          * 设置key的过期时间,以秒为单位
     188          * @param String key
     189          * @param 时间,已秒为单位
     190          * @return 影响的记录数
     191          * */
     192         public long expired(String key, int seconds) {
     193             Jedis jedis = getJedis();
     194             long count = jedis.expire(key, seconds);
     195             returnJedis(jedis);
     196             return count;
     197         }
     198 
     199         /**
     200          * 设置key的过期时间,它是距历元(即格林威治标准时间 1970 年 1 月 1 日的 00:00:00,格里高利历)的偏移量。
     201          * @param String key
     202          * @param 时间,已秒为单位
     203          * @return 影响的记录数
     204          * */
     205         public long expireAt(String key, long timestamp) {
     206             Jedis jedis = getJedis();
     207             long count = jedis.expireAt(key, timestamp);
     208             returnJedis(jedis);
     209             return count;
     210         }
     211 
     212         /**
     213          * 查询key的过期时间
     214          * @param String key
     215          * @return 以秒为单位的时间表示
     216          * */
     217         public long ttl(String key) {
     218             //ShardedJedis sjedis = getShardedJedis();
     219             Jedis sjedis=getJedis(); 
     220             long len = sjedis.ttl(key);
     221             returnJedis(sjedis);
     222             return len;
     223         }
     224 
     225         /**
     226          * 取消对key过期时间的设置
     227          * @param key
     228          * @return 影响的记录数
     229          * */
     230         public long persist(String key) {
     231             Jedis jedis = getJedis();
     232             long count = jedis.persist(key);
     233             returnJedis(jedis);
     234             return count;
     235         }
     236 
     237         /**
     238          * 删除keys对应的记录,可以是多个key
     239          * @param String  ... keys
     240          * @return 删除的记录数
     241          * */
     242         public long del(String... keys) {
     243             Jedis jedis = getJedis();
     244             long count = jedis.del(keys);
     245             returnJedis(jedis);
     246             return count;
     247         }
     248 
     249         /**
     250          * 删除keys对应的记录,可以是多个key
     251          * @param String .. keys
     252          * @return 删除的记录数
     253          * */
     254         public long del(byte[]... keys) {
     255             Jedis jedis = getJedis();
     256             long count = jedis.del(keys);
     257             returnJedis(jedis);
     258             return count;
     259         }
     260 
     261         /**
     262          * 判断key是否存在
     263          * @param String key
     264          * @return boolean
     265          * */
     266         public boolean exists(String key) {
     267             //ShardedJedis sjedis = getShardedJedis();
     268             Jedis sjedis=getJedis();  
     269             boolean exis = sjedis.exists(key);
     270             returnJedis(sjedis);
     271             return exis;
     272         }
     273 
     274         /**
     275          * 对List,Set,SortSet进行排序,如果集合数据较大应避免使用这个方法
     276          * @param String key
     277          * @return List<String> 集合的全部记录
     278          * **/
     279         public List<String> sort(String key) {
     280             //ShardedJedis sjedis = getShardedJedis();
     281             Jedis sjedis=getJedis();  
     282             List<String> list = sjedis.sort(key);
     283             returnJedis(sjedis);
     284             return list;
     285         }
     286 
     287         /**
     288          * 对List,Set,SortSet进行排序或limit
     289          * @param String key
     290          * @param SortingParams parame 定义排序类型或limit的起止位置.
     291          * @return List<String> 全部或部分记录
     292          * **/
     293         public List<String> sort(String key, SortingParams parame) {
     294             //ShardedJedis sjedis = getShardedJedis(); 
     295             Jedis sjedis=getJedis(); 
     296             List<String> list = sjedis.sort(key, parame);
     297             returnJedis(sjedis);
     298             return list;
     299         }
     300 
     301         /**
     302          * 返回指定key存储的类型
     303          * @param String key
     304          * @return String string|list|set|zset|hash
     305          * **/
     306         public String type(String key) {
     307             //ShardedJedis sjedis = getShardedJedis(); 
     308             Jedis sjedis=getJedis();  
     309             String type = sjedis.type(key); 
     310             returnJedis(sjedis);
     311             return type;
     312         }
     313 
     314         /**
     315          * 查找所有匹配给定的模式的键
     316          * @param String  key的表达式,*表示多个,?表示一个
     317          * */
     318         public Set<String> keys(String pattern) {
     319             Jedis jedis = getJedis();
     320             Set<String> set = jedis.keys(pattern);
     321             returnJedis(jedis);
     322             return set;
     323         }
     324     }
     325 
     326     //*******************************************Sets*******************************************//
     327     public class Sets {
     328 
     329         /**
     330          * 向Set添加一条记录,如果member已存在返回0,否则返回1
     331          * @param String  key
     332          * @param String member
     333          * @return 操作码,0或1
     334          * */
     335         public long sadd(String key, String member) {
     336             Jedis jedis = getJedis();
     337             long s = jedis.sadd(key, member);
     338             returnJedis(jedis);
     339             return s;
     340         }
     341 
     342         public long sadd(byte[] key, byte[] member) {
     343             Jedis jedis = getJedis();
     344             long s = jedis.sadd(key, member);
     345             returnJedis(jedis);
     346             return s;
     347         }
     348 
     349         /**
     350          * 获取给定key中元素个数
     351          * @param String key
     352          * @return 元素个数
     353          * */
     354         public long scard(String key) {
     355             //ShardedJedis sjedis = getShardedJedis();
     356             Jedis sjedis = getJedis(); 
     357             long len = sjedis.scard(key);
     358             returnJedis(sjedis);
     359             return len;
     360         }
     361 
     362         /**
     363          * 返回从第一组和所有的给定集合之间的差异的成员
     364          * @param String ... keys
     365          * @return 差异的成员集合
     366          * */
     367         public Set<String> sdiff(String... keys) {
     368             Jedis jedis = getJedis();
     369             Set<String> set = jedis.sdiff(keys);
     370             returnJedis(jedis);
     371             return set;
     372         }
     373 
     374         /**
     375          * 这个命令等于sdiff,但返回的不是结果集,而是将结果集存储在新的集合中,如果目标已存在,则覆盖。
     376          * @param String newkey 新结果集的key
     377          * @param String ... keys 比较的集合
     378          * @return 新集合中的记录数
     379          * **/
     380         public long sdiffstore(String newkey, String... keys) {
     381             Jedis jedis = getJedis();
     382             long s = jedis.sdiffstore(newkey, keys);
     383             returnJedis(jedis);
     384             return s;
     385         }
     386 
     387         /**
     388          * 返回给定集合交集的成员,如果其中一个集合为不存在或为空,则返回空Set
     389          * @param String ... keys
     390          * @return 交集成员的集合
     391          * **/
     392         public Set<String> sinter(String... keys) {
     393             Jedis jedis = getJedis();
     394             Set<String> set = jedis.sinter(keys);
     395             returnJedis(jedis);
     396             return set;
     397         }
     398 
     399         /**
     400          * 这个命令等于sinter,但返回的不是结果集,而是将结果集存储在新的集合中,如果目标已存在,则覆盖。
     401          * @param String  newkey 新结果集的key
     402          * @param String ... keys 比较的集合
     403          * @return 新集合中的记录数
     404          * **/
     405         public long sinterstore(String newkey, String... keys) {
     406             Jedis jedis = getJedis();
     407             long s = jedis.sinterstore(newkey, keys);
     408             returnJedis(jedis);
     409             return s;
     410         }
     411 
     412         /**
     413          * 确定一个给定的值是否存在
     414          * @param String  key
     415          * @param String member 要判断的值
     416          * @return 存在返回1,不存在返回0
     417          * **/
     418         public boolean sismember(String key, String member) {
     419             //ShardedJedis sjedis = getShardedJedis();
     420             Jedis sjedis = getJedis(); 
     421             boolean s = sjedis.sismember(key, member);
     422             returnJedis(sjedis);
     423             return s;
     424         }
     425 
     426         /**
     427          * 返回集合中的所有成员
     428          * @param String  key
     429          * @return 成员集合
     430          * */
     431         public Set<String> smembers(String key) {
     432             //ShardedJedis sjedis = getShardedJedis();
     433             Jedis sjedis = getJedis(); 
     434             Set<String> set = sjedis.smembers(key);
     435             returnJedis(sjedis);
     436             return set;
     437         }
     438 
     439         public Set<byte[]> smembers(byte[] key) {
     440             //ShardedJedis sjedis = getShardedJedis();
     441             Jedis sjedis = getJedis();  
     442             Set<byte[]> set = sjedis.smembers(key);
     443             returnJedis(sjedis);
     444             return set;
     445         }
     446 
     447         /**
     448          * 将成员从源集合移出放入目标集合 <br/>
     449          * 如果源集合不存在或不包哈指定成员,不进行任何操作,返回0<br/>
     450          * 否则该成员从源集合上删除,并添加到目标集合,如果目标集合中成员已存在,则只在源集合进行删除
     451          * @param String  srckey 源集合
     452          * @param String dstkey 目标集合
     453          * @param String member 源集合中的成员
     454          * @return 状态码,1成功,0失败
     455          * */
     456         public long smove(String srckey, String dstkey, String member) {
     457             Jedis jedis = getJedis();
     458             long s = jedis.smove(srckey, dstkey, member);
     459             returnJedis(jedis);
     460             return s;
     461         }
     462 
     463         /**
     464          * 从集合中删除成员
     465          * @param String  key
     466          * @return 被删除的成员
     467          * */
     468         public String spop(String key) {
     469             Jedis jedis = getJedis();
     470             String s = jedis.spop(key);
     471             returnJedis(jedis);
     472             return s;
     473         }
     474 
     475         /**
     476          * 从集合中删除指定成员
     477          * @param String key
     478          * @param String  member 要删除的成员
     479          * @return 状态码,成功返回1,成员不存在返回0
     480          * */
     481         public long srem(String key, String member) {
     482             Jedis jedis = getJedis();
     483             long s = jedis.srem(key, member);
     484             returnJedis(jedis);
     485             return s;
     486         }
     487 
     488         /**
     489          * 合并多个集合并返回合并后的结果,合并后的结果集合并不保存<br/>
     490          * @param String  ... keys
     491          * @return 合并后的结果集合
     492          * @see sunionstore
     493          * */
     494         public Set<String> sunion(String... keys) {
     495             Jedis jedis = getJedis();
     496             Set<String> set = jedis.sunion(keys);
     497             returnJedis(jedis);
     498             return set;
     499         }
     500 
     501         /**
     502          * 合并多个集合并将合并后的结果集保存在指定的新集合中,如果新集合已经存在则覆盖
     503          * @param String  newkey 新集合的key
     504          * @param String ... keys 要合并的集合
     505          * **/
     506         public long sunionstore(String newkey, String... keys) {
     507             Jedis jedis = getJedis();
     508             long s = jedis.sunionstore(newkey, keys);
     509             returnJedis(jedis);
     510             return s;
     511         }
     512     }
     513 
     514     //*******************************************SortSet*******************************************//
     515     public class SortSet {
     516 
     517         /**
     518          * 向集合中增加一条记录,如果这个值已存在,这个值对应的权重将被置为新的权重
     519          * @param String  key
     520          * @param double score 权重
     521          * @param String  member 要加入的值,
     522          * @return 状态码 1成功,0已存在member的值
     523          * */
     524         public long zadd(String key, double score, String member) {
     525             Jedis jedis = getJedis();
     526             long s = jedis.zadd(key, score, member);
     527             returnJedis(jedis);
     528             return s;
     529         }
     530 
     531         /*public long zadd(String key, Map<Double, String> scoreMembers) {
     532             Jedis jedis = getJedis();
     533             long s = jedis.zadd(key, scoreMembers);
     534             returnJedis(jedis);
     535             return s;
     536         }*/
     537 
     538         /**
     539          * 获取集合中元素的数量
     540          * @param String  key
     541          * @return 如果返回0则集合不存在
     542          * */
     543         public long zcard(String key) {
     544             //ShardedJedis sjedis = getShardedJedis();
     545             Jedis sjedis = getJedis();
     546             long len = sjedis.zcard(key);
     547             returnJedis(sjedis);
     548             return len;
     549         }
     550 
     551         /**
     552          * 获取指定权重区间内集合的数量
     553          * @param String key
     554          * @param double min 最小排序位置
     555          * @param double max 最大排序位置
     556          * */
     557         public long zcount(String key, double min, double max) {
     558             //ShardedJedis sjedis = getShardedJedis();
     559             Jedis sjedis = getJedis();
     560             long len = sjedis.zcount(key, min, max);
     561             returnJedis(sjedis);
     562             return len;
     563         }
     564 
     565         /**
     566          * 获得set的长度
     567          * 
     568          * @param key
     569          * @return
     570          */
     571         public long zlength(String key) {
     572             long len = 0;
     573             Set<String> set = zrange(key, 0, -1);
     574             len = set.size();
     575             return len;
     576         }
     577 
     578         /**
     579          * 权重增加给定值,如果给定的member已存在
     580          * @param String  key
     581          * @param double score 要增的权重
     582          * @param String  member 要插入的值
     583          * @return 增后的权重
     584          * */
     585         public double zincrby(String key, double score, String member) {
     586             Jedis jedis = getJedis();
     587             double s = jedis.zincrby(key, score, member);
     588             returnJedis(jedis);
     589             return s;
     590         }
     591 
     592         /**
     593          * 返回指定位置的集合元素,0为第一个元素,-1为最后一个元素
     594          * @param String key
     595          * @param int start 开始位置(包含)
     596          * @param int end 结束位置(包含)
     597          * @return Set<String>
     598          * */
     599         public Set<String> zrange(String key, int start, int end) {
     600             //ShardedJedis sjedis = getShardedJedis();
     601             Jedis sjedis = getJedis(); 
     602             Set<String> set = sjedis.zrange(key, start, end);
     603             returnJedis(sjedis);
     604             return set;
     605         }
     606 
     607         /**
     608          * 返回指定权重区间的元素集合
     609          * @param String key
     610          * @param double min 上限权重
     611          * @param double max 下限权重
     612          * @return Set<String>
     613          * */
     614         public Set<String> zrangeByScore(String key, double min, double max) {
     615             //ShardedJedis sjedis = getShardedJedis();
     616             Jedis sjedis = getJedis(); 
     617             Set<String> set = sjedis.zrangeByScore(key, min, max);
     618             returnJedis(sjedis);
     619             return set;
     620         }
     621 
     622         /**
     623          * 获取指定值在集合中的位置,集合排序从低到高
     624          * @see zrevrank
     625          * @param String key
     626          * @param String member
     627          * @return long 位置
     628          * */
     629         public long zrank(String key, String member) {
     630             //ShardedJedis sjedis = getShardedJedis();
     631             Jedis sjedis = getJedis(); 
     632             long index = sjedis.zrank(key, member);
     633             returnJedis(sjedis);
     634             return index;
     635         }
     636 
     637         /**
     638          * 获取指定值在集合中的位置,集合排序从高到低
     639          * @see zrank
     640          * @param String key
     641          * @param String member
     642          * @return long 位置
     643          * */
     644         public long zrevrank(String key, String member) {
     645             //ShardedJedis sjedis = getShardedJedis();
     646             Jedis sjedis = getJedis(); 
     647             long index = sjedis.zrevrank(key, member);
     648             returnJedis(sjedis);
     649             return index;
     650         }
     651 
     652         /**
     653          * 从集合中删除成员
     654          * @param String key
     655          * @param String member 
     656          * @return 返回1成功
     657          * */
     658         public long zrem(String key, String member) {
     659             Jedis jedis = getJedis();
     660             long s = jedis.zrem(key, member);
     661             returnJedis(jedis);
     662             return s;
     663         }
     664 
     665         /**
     666          * 删除
     667          * @param key
     668          * @return
     669          */
     670         public long zrem(String key) {
     671             Jedis jedis = getJedis();
     672             long s = jedis.del(key);
     673             returnJedis(jedis);
     674             return s;
     675         }
     676 
     677         /**
     678          * 删除给定位置区间的元素
     679          * @param String  key
     680          * @param int start 开始区间,从0开始(包含)
     681          * @param int end 结束区间,-1为最后一个元素(包含)
     682          * @return 删除的数量
     683          * */
     684         public long zremrangeByRank(String key, int start, int end) {
     685             Jedis jedis = getJedis();
     686             long s = jedis.zremrangeByRank(key, start, end);
     687             returnJedis(jedis);
     688             return s;
     689         }
     690 
     691         /**
     692          * 删除给定权重区间的元素
     693          * @param String key
     694          * @param double min 下限权重(包含)
     695          * @param double max 上限权重(包含)
     696          * @return 删除的数量
     697          * */
     698         public long zremrangeByScore(String key, double min, double max) {
     699             Jedis jedis = getJedis();
     700             long s = jedis.zremrangeByScore(key, min, max);
     701             returnJedis(jedis);
     702             return s;
     703         }
     704 
     705         /**
     706          * 获取给定区间的元素,原始按照权重由高到低排序
     707          * @param String  key
     708          * @param int start
     709          * @param int end
     710          * @return Set<String>
     711          * */
     712         public Set<String> zrevrange(String key, int start, int end) {
     713             //ShardedJedis sjedis = getShardedJedis();
     714             Jedis sjedis = getJedis(); 
     715             Set<String> set = sjedis.zrevrange(key, start, end);
     716             returnJedis(sjedis);
     717             return set;
     718         }
     719 
     720         /**
     721          * 获取给定值在集合中的权重
     722          * @param String  key
     723          * @param memeber
     724          * @return double 权重
     725          * */
     726         public double zscore(String key, String memebr) {
     727             //ShardedJedis sjedis = getShardedJedis();
     728             Jedis sjedis = getJedis(); 
     729             Double score = sjedis.zscore(key, memebr);
     730             returnJedis(sjedis);
     731             if (score != null)
     732                 return score;
     733             return 0;
     734         }
     735     }
     736     
     737     //*******************************************Hash*******************************************//
     738     public class Hash {
     739 
     740         /**
     741          * 从hash中删除指定的存储
     742          * @param String key
     743          * @param String  fieid 存储的名字
     744          * @return 状态码,1成功,0失败
     745          * */
     746         public long hdel(String key, String fieid) {
     747             Jedis jedis = getJedis();
     748             long s = jedis.hdel(key, fieid);
     749             returnJedis(jedis);
     750             return s;
     751         }
     752 
     753         public long hdel(String key) {
     754             Jedis jedis = getJedis();
     755             long s = jedis.del(key);
     756             returnJedis(jedis);
     757             return s;
     758         }
     759 
     760         /**
     761          * 测试hash中指定的存储是否存在
     762          * @param String key
     763          * @param String  fieid 存储的名字
     764          * @return 1存在,0不存在
     765          * */
     766         public boolean hexists(String key, String fieid) {
     767             //ShardedJedis sjedis = getShardedJedis();
     768             Jedis sjedis = getJedis(); 
     769             boolean s = sjedis.hexists(key, fieid);
     770             returnJedis(sjedis);
     771             return s;
     772         }
     773 
     774         /**
     775          * 返回hash中指定存储位置的值
     776          * 
     777          * @param String key
     778          * @param String fieid 存储的名字
     779          * @return 存储对应的值
     780          * */
     781         public String hget(String key, String fieid) {
     782             //ShardedJedis sjedis = getShardedJedis();
     783             Jedis sjedis = getJedis(); 
     784             String s = sjedis.hget(key, fieid);
     785             returnJedis(sjedis);
     786             return s;
     787         }
     788 
     789         public byte[] hget(byte[] key, byte[] fieid) {
     790             //ShardedJedis sjedis = getShardedJedis();
     791             Jedis sjedis = getJedis(); 
     792             byte[] s = sjedis.hget(key, fieid);
     793             returnJedis(sjedis);
     794             return s;
     795         }
     796 
     797         /**
     798          * 以Map的形式返回hash中的存储和值
     799          * @param String    key
     800          * @return Map<Strinig,String>
     801          * */
     802         public Map<String, String> hgetAll(String key) {
     803             //ShardedJedis sjedis = getShardedJedis();
     804             Jedis sjedis = getJedis(); 
     805             Map<String, String> map = sjedis.hgetAll(key);
     806             returnJedis(sjedis);
     807             return map;
     808         }
     809 
     810         /**
     811          * 添加一个对应关系
     812          * @param String  key
     813          * @param String fieid
     814          * @param String value
     815          * @return 状态码 1成功,0失败,fieid已存在将更新,也返回0
     816          * **/
     817         public long hset(String key, String fieid, String value) {
     818             Jedis jedis = getJedis();
     819             long s = jedis.hset(key, fieid, value);
     820             returnJedis(jedis);
     821             return s;
     822         }
     823 
     824         public long hset(String key, String fieid, byte[] value) {
     825             Jedis jedis = getJedis();
     826             long s = jedis.hset(key.getBytes(), fieid.getBytes(), value);
     827             returnJedis(jedis);
     828             return s;
     829         }
     830 
     831         /**
     832          * 添加对应关系,只有在fieid不存在时才执行
     833          * @param String key
     834          * @param String fieid
     835          * @param String value
     836          * @return 状态码 1成功,0失败fieid已存
     837          * **/
     838         public long hsetnx(String key, String fieid, String value) {
     839             Jedis jedis = getJedis();
     840             long s = jedis.hsetnx(key, fieid, value);
     841             returnJedis(jedis);
     842             return s;
     843         }
     844 
     845         /**
     846          * 获取hash中value的集合
     847          * 
     848          * @param String
     849          *            key
     850          * @return List<String>
     851          * */
     852         public List<String> hvals(String key) {
     853             //ShardedJedis sjedis = getShardedJedis();
     854             Jedis sjedis = getJedis(); 
     855             List<String> list = sjedis.hvals(key);
     856             returnJedis(sjedis);
     857             return list;
     858         }
     859 
     860         /**
     861          * 在指定的存储位置加上指定的数字,存储位置的值必须可转为数字类型
     862          * @param String  key
     863          * @param String  fieid 存储位置
     864          * @param String long value 要增加的值,可以是负数
     865          * @return 增加指定数字后,存储位置的值
     866          * */
     867         public long hincrby(String key, String fieid, long value) {
     868             Jedis jedis = getJedis();
     869             long s = jedis.hincrBy(key, fieid, value);
     870             returnJedis(jedis);
     871             return s;
     872         }
     873 
     874         /**
     875          * 返回指定hash中的所有存储名字,类似Map中的keySet方法
     876          * @param String key
     877          * @return Set<String> 存储名称的集合
     878          * */
     879         public Set<String> hkeys(String key) {
     880             //ShardedJedis sjedis = getShardedJedis();
     881             Jedis sjedis = getJedis(); 
     882             Set<String> set = sjedis.hkeys(key);
     883             returnJedis(sjedis);
     884             return set;
     885         }
     886 
     887         /**
     888          * 获取hash中存储的个数,类似Map中size方法
     889          * @param String  key
     890          * @return long 存储的个数
     891          * */
     892         public long hlen(String key) {
     893             //ShardedJedis sjedis = getShardedJedis();
     894             Jedis sjedis = getJedis();  
     895             long len = sjedis.hlen(key);
     896             returnJedis(sjedis);
     897             return len;
     898         }
     899 
     900         /**
     901          * 根据多个key,获取对应的value,返回List,如果指定的key不存在,List对应位置为null
     902          * @param String  key
     903          * @param String ... fieids 存储位置
     904          * @return List<String>
     905          * */
     906         public List<String> hmget(String key, String... fieids) {
     907             //ShardedJedis sjedis = getShardedJedis();
     908             Jedis sjedis = getJedis(); 
     909             List<String> list = sjedis.hmget(key, fieids);
     910             returnJedis(sjedis);
     911             return list;
     912         }
     913 
     914         public List<byte[]> hmget(byte[] key, byte[]... fieids) {
     915             //ShardedJedis sjedis = getShardedJedis();
     916             Jedis sjedis = getJedis();  
     917             List<byte[]> list = sjedis.hmget(key, fieids);
     918             returnJedis(sjedis);
     919             return list;
     920         }
     921 
     922         /**
     923          * 添加对应关系,如果对应关系已存在,则覆盖
     924          * @param Strin   key
     925          * @param Map <String,String> 对应关系
     926          * @return 状态,成功返回OK
     927          * */
     928         public String hmset(String key, Map<String, String> map) {
     929             Jedis jedis = getJedis();
     930             String s = jedis.hmset(key, map);
     931             returnJedis(jedis);
     932             return s;
     933         }
     934 
     935         /**
     936          * 添加对应关系,如果对应关系已存在,则覆盖
     937          * @param Strin key
     938          * @param Map <String,String> 对应关系
     939          * @return 状态,成功返回OK
     940          * */
     941         public String hmset(byte[] key, Map<byte[], byte[]> map) {
     942             Jedis jedis = getJedis();
     943             String s = jedis.hmset(key, map);
     944             returnJedis(jedis);
     945             return s;
     946         }
     947 
     948     }
     949     
     950     
     951     //*******************************************Strings*******************************************//
     952     public class Strings {
     953         /**
     954          * 根据key获取记录
     955          * @param String  key
     956          * @return 957          * */
     958         public String get(String key) {
     959             //ShardedJedis sjedis = getShardedJedis();
     960             Jedis sjedis = getJedis();  
     961             String value = sjedis.get(key);
     962             returnJedis(sjedis);
     963             return value;
     964         }
     965 
     966         /**
     967          * 根据key获取记录
     968          * @param byte[] key
     969          * @return 970          * */
     971         public byte[] get(byte[] key) {
     972             //ShardedJedis sjedis = getShardedJedis();
     973             Jedis sjedis = getJedis();  
     974             byte[] value = sjedis.get(key);
     975             returnJedis(sjedis);
     976             return value;
     977         }
     978 
     979         /**
     980          * 添加有过期时间的记录
     981          * 
     982          * @param String  key
     983          * @param int seconds 过期时间,以秒为单位
     984          * @param String value
     985          * @return String 操作状态
     986          * */
     987         public String setEx(String key, int seconds, String value) {
     988             Jedis jedis = getJedis();
     989             String str = jedis.setex(key, seconds, value);
     990             returnJedis(jedis);
     991             return str;
     992         }
     993 
     994         /**
     995          * 添加有过期时间的记录
     996          * 
     997          * @param String key
     998          * @param int seconds 过期时间,以秒为单位
     999          * @param String  value
    1000          * @return String 操作状态
    1001          * */
    1002         public String setEx(byte[] key, int seconds, byte[] value) {
    1003             Jedis jedis = getJedis();
    1004             String str = jedis.setex(key, seconds, value);
    1005             returnJedis(jedis);
    1006             return str;
    1007         }
    1008 
    1009         /**
    1010          * 添加一条记录,仅当给定的key不存在时才插入
    1011          * @param String key
    1012          * @param String value
    1013          * @return long 状态码,1插入成功且key不存在,0未插入,key存在
    1014          * */
    1015         public long setnx(String key, String value) {
    1016             Jedis jedis = getJedis();
    1017             long str = jedis.setnx(key, value);
    1018             returnJedis(jedis);
    1019             return str;
    1020         }
    1021 
    1022         /**
    1023          * 添加记录,如果记录已存在将覆盖原有的value
    1024          * @param String key
    1025          * @param String value
    1026          * @return 状态码
    1027          * */
    1028         public String set(String key, String value) {
    1029             return set(SafeEncoder.encode(key), SafeEncoder.encode(value));
    1030         }
    1031 
    1032         /**
    1033          * 添加记录,如果记录已存在将覆盖原有的value
    1034          * @param String  key
    1035          * @param String value
    1036          * @return 状态码
    1037          * */
    1038         public String set(String key, byte[] value) {
    1039             return set(SafeEncoder.encode(key), value);
    1040         }
    1041 
    1042         /**
    1043          * 添加记录,如果记录已存在将覆盖原有的value
    1044          * @param byte[] key
    1045          * @param byte[] value
    1046          * @return 状态码
    1047          * */
    1048         public String set(byte[] key, byte[] value) {
    1049             Jedis jedis = getJedis();
    1050             String status = jedis.set(key, value);
    1051             returnJedis(jedis);
    1052             return status;
    1053         }
    1054 
    1055         /**
    1056          * 从指定位置开始插入数据,插入的数据会覆盖指定位置以后的数据<br/>
    1057          * 例:String str1="123456789";<br/>
    1058          * 对str1操作后setRange(key,4,0000),str1="123400009";
    1059          * @param String  key
    1060          * @param long offset
    1061          * @param String  value
    1062          * @return long value的长度
    1063          * */
    1064         public long setRange(String key, long offset, String value) {
    1065             Jedis jedis = getJedis();
    1066             long len = jedis.setrange(key, offset, value);
    1067             returnJedis(jedis);
    1068             return len;
    1069         }
    1070 
    1071         /**
    1072          * 在指定的key中追加value
    1073          * @param String  key
    1074          * @param String value
    1075          * @return long 追加后value的长度
    1076          * **/
    1077         public long append(String key, String value) {
    1078             Jedis jedis = getJedis();
    1079             long len = jedis.append(key, value);
    1080             returnJedis(jedis);
    1081             return len;
    1082         }
    1083 
    1084         /**
    1085          * 将key对应的value减去指定的值,只有value可以转为数字时该方法才可用
    1086          * @param String key
    1087          * @param long number 要减去的值
    1088          * @return long 减指定值后的值
    1089          * */
    1090         public long decrBy(String key, long number) {
    1091             Jedis jedis = getJedis();
    1092             long len = jedis.decrBy(key, number);
    1093             returnJedis(jedis);
    1094             return len;
    1095         }
    1096 
    1097         /**
    1098          * <b>可以作为获取唯一id的方法</b><br/>
    1099          * 将key对应的value加上指定的值,只有value可以转为数字时该方法才可用
    1100          * @param String  key
    1101          * @param long number 要减去的值
    1102          * @return long 相加后的值
    1103          * */
    1104         public long incrBy(String key, long number) {
    1105             Jedis jedis = getJedis();
    1106             long len = jedis.incrBy(key, number);
    1107             returnJedis(jedis);
    1108             return len;
    1109         }
    1110 
    1111         /**
    1112          * 对指定key对应的value进行截取 
    1113          * @param String   key
    1114          * @param long startOffset 开始位置(包含)
    1115          * @param long endOffset 结束位置(包含)
    1116          * @return String 截取的值
    1117          * */
    1118         public String getrange(String key, long startOffset, long endOffset) {
    1119             //ShardedJedis sjedis = getShardedJedis();
    1120             Jedis sjedis = getJedis();  
    1121             String value = sjedis.getrange(key, startOffset, endOffset);
    1122             returnJedis(sjedis); 
    1123             return value;
    1124         }
    1125 
    1126         /**
    1127          * 获取并设置指定key对应的value<br/>
    1128          * 如果key存在返回之前的value,否则返回null
    1129          * @param String  key
    1130          * @param String value
    1131          * @return String 原始value或null
    1132          * */
    1133         public String getSet(String key, String value) {
    1134             Jedis jedis = getJedis();
    1135             String str = jedis.getSet(key, value);
    1136             returnJedis(jedis);
    1137             return str;
    1138         }
    1139 
    1140         /**
    1141          * 批量获取记录,如果指定的key不存在返回List的对应位置将是null
    1142          * @param String keys
    1143          * @return List<String> 值得集合
    1144          * */
    1145         public List<String> mget(String... keys) {
    1146             Jedis jedis = getJedis();
    1147             List<String> str = jedis.mget(keys);
    1148             returnJedis(jedis);
    1149             return str;
    1150         }
    1151 
    1152         /**
    1153          * 批量存储记录
    1154          * @param String keysvalues 例:keysvalues="key1","value1","key2","value2";
    1155          * @return String 状态码 
    1156          * */
    1157         public String mset(String... keysvalues) {
    1158             Jedis jedis = getJedis();
    1159             String str = jedis.mset(keysvalues);
    1160             returnJedis(jedis);
    1161             return str;
    1162         }
    1163 
    1164         /**
    1165          * 获取key对应的值的长度
    1166          * @param String key
    1167          * @return value值得长度
    1168          * */
    1169         public long strlen(String key) {
    1170             Jedis jedis = getJedis();
    1171             long len = jedis.strlen(key);
    1172             returnJedis(jedis);
    1173             return len;
    1174         }
    1175     }
    1176     
    1177     
    1178     //*******************************************Lists*******************************************//
    1179     public class Lists {
    1180         /**
    1181          * List长度
    1182          * @param String key
    1183          * @return 长度
    1184          * */
    1185         public long llen(String key) {
    1186             return llen(SafeEncoder.encode(key));
    1187         }
    1188 
    1189         /**
    1190          * List长度
    1191          * @param byte[] key
    1192          * @return 长度
    1193          * */
    1194         public long llen(byte[] key) {
    1195             //ShardedJedis sjedis = getShardedJedis();
    1196             Jedis sjedis = getJedis();  
    1197             long count = sjedis.llen(key);
    1198             returnJedis(sjedis);
    1199             return count;
    1200         }
    1201 
    1202         /**
    1203          * 覆盖操作,将覆盖List中指定位置的值
    1204          * @param byte[] key
    1205          * @param int index 位置
    1206          * @param byte[] value 值
    1207          * @return 状态码
    1208          * */
    1209         public String lset(byte[] key, int index, byte[] value) {
    1210             Jedis jedis = getJedis();
    1211             String status = jedis.lset(key, index, value);
    1212             returnJedis(jedis);
    1213             return status;
    1214         }
    1215 
    1216         /**
    1217          * 覆盖操作,将覆盖List中指定位置的值
    1218          * @param key
    1219          * @param int index 位置
    1220          * @param String  value 值
    1221          * @return 状态码
    1222          * */
    1223         public String lset(String key, int index, String value) {
    1224             return lset(SafeEncoder.encode(key), index,
    1225                     SafeEncoder.encode(value));
    1226         }
    1227 
    1228         /**
    1229          * 在value的相对位置插入记录
    1230          * @param key
    1231          * @param LIST_POSITION   前面插入或后面插入
    1232          * @param String pivot 相对位置的内容
    1233          * @param String value 插入的内容
    1234          * @return 记录总数
    1235          * */
    1236         public long linsert(String key, LIST_POSITION where, String pivot,
    1237                 String value) {
    1238             return linsert(SafeEncoder.encode(key), where,
    1239                     SafeEncoder.encode(pivot), SafeEncoder.encode(value));
    1240         }
    1241 
    1242         /**
    1243          * 在指定位置插入记录
    1244          * @param String key
    1245          * @param LIST_POSITION 前面插入或后面插入
    1246          * @param byte[] pivot 相对位置的内容
    1247          * @param byte[] value 插入的内容
    1248          * @return 记录总数
    1249          * */
    1250         public long linsert(byte[] key, LIST_POSITION where, byte[] pivot,
    1251                 byte[] value) {
    1252             Jedis jedis = getJedis();
    1253             long count = jedis.linsert(key, where, pivot, value);
    1254             returnJedis(jedis);
    1255             return count;
    1256         }
    1257 
    1258         /**
    1259          * 获取List中指定位置的值
    1260          * @param String  key
    1261          * @param int index 位置 
    1262          * @return1263          * **/
    1264         public String lindex(String key, int index) {
    1265             return SafeEncoder.encode(lindex(SafeEncoder.encode(key), index));
    1266         }
    1267 
    1268         /**
    1269          * 获取List中指定位置的值 
    1270          * @param byte[] key
    1271          * @param int index 位置
    1272          * @return1273          * **/
    1274         public byte[] lindex(byte[] key, int index) { 
    1275             //ShardedJedis sjedis = getShardedJedis();
    1276             Jedis sjedis = getJedis();  
    1277             byte[] value = sjedis.lindex(key, index);
    1278             returnJedis(sjedis);
    1279             return value;
    1280         }
    1281 
    1282         /**
    1283          * 将List中的第一条记录移出List
    1284          * @param String key
    1285          * @return 移出的记录 
    1286          * */
    1287         public String lpop(String key) {
    1288             return SafeEncoder.encode(lpop(SafeEncoder.encode(key)));
    1289         }
    1290 
    1291         /**
    1292          * 将List中的第一条记录移出List
    1293          * @param byte[] key
    1294          * @return 移出的记录
    1295          * */
    1296         public byte[] lpop(byte[] key) {
    1297             Jedis jedis = getJedis();
    1298             byte[] value = jedis.lpop(key);
    1299             returnJedis(jedis);
    1300             return value;
    1301         }
    1302 
    1303         /**
    1304          * 将List中最后第一条记录移出List
    1305          * 
    1306          * @param byte[] key
    1307          * @return 移出的记录
    1308          * */
    1309         public String rpop(String key) {
    1310             Jedis jedis = getJedis();
    1311             String value = jedis.rpop(key);
    1312             returnJedis(jedis);
    1313             return value;
    1314         }
    1315 
    1316         /**
    1317          * 向List尾部追加记录
    1318          * @param String key
    1319          * @param String value
    1320          * @return 记录总数
    1321          * */
    1322         public long lpush(String key, String value) {
    1323             return lpush(SafeEncoder.encode(key), SafeEncoder.encode(value));
    1324         }
    1325 
    1326         /**
    1327          * 向List头部追加记录
    1328          * @param String  key
    1329          * @param String  value
    1330          * @return 记录总数
    1331          * */
    1332         public long rpush(String key, String value) {
    1333             Jedis jedis = getJedis();
    1334             long count = jedis.rpush(key, value);
    1335             returnJedis(jedis);
    1336             return count;
    1337         }
    1338 
    1339         /**
    1340          * 向List头部追加记录
    1341          * @param String key
    1342          * @param String value
    1343          * @return 记录总数
    1344          * */
    1345         public long rpush(byte[] key, byte[] value) {
    1346             Jedis jedis = getJedis();
    1347             long count = jedis.rpush(key, value);
    1348             returnJedis(jedis);
    1349             return count;
    1350         }
    1351 
    1352         /**
    1353          * 向List中追加记录
    1354          * @param byte[] key
    1355          * @param byte[] value
    1356          * @return 记录总数
    1357          * */
    1358         public long lpush(byte[] key, byte[] value) {
    1359             Jedis jedis = getJedis();
    1360             long count = jedis.lpush(key, value);
    1361             returnJedis(jedis);
    1362             return count;
    1363         }
    1364 
    1365         /**
    1366          * 获取指定范围的记录,可以做为分页使用
    1367          * @param String key
    1368          * @param long start
    1369          * @param long end
    1370          * @return List
    1371          * */
    1372         public List<String> lrange(String key, long start, long end) {
    1373             //ShardedJedis sjedis = getShardedJedis();
    1374             Jedis sjedis = getJedis();   
    1375             List<String> list = sjedis.lrange(key, start, end);
    1376             returnJedis(sjedis);
    1377             return list;
    1378         }
    1379 
    1380         /**
    1381          * 获取指定范围的记录,可以做为分页使用
    1382          * @param byte[] key
    1383          * @param int start
    1384          * @param int end 如果为负数,则尾部开始计算
    1385          * @return List
    1386          * */
    1387         public List<byte[]> lrange(byte[] key, int start, int end) {
    1388             //ShardedJedis sjedis = getShardedJedis();
    1389             Jedis sjedis = getJedis();   
    1390             List<byte[]> list = sjedis.lrange(key, start, end);
    1391             returnJedis(sjedis);
    1392             return list;
    1393         }
    1394 
    1395         /**
    1396          * 删除List中c条记录,被删除的记录值为value
    1397          * @param byte[] key
    1398          * @param int c 要删除的数量,如果为负数则从List的尾部检查并删除符合的记录
    1399          * @param byte[] value 要匹配的值
    1400          * @return 删除后的List中的记录数
    1401          * */
    1402         public long lrem(byte[] key, int c, byte[] value) {
    1403             Jedis jedis = getJedis();
    1404             long count = jedis.lrem(key, c, value);
    1405             returnJedis(jedis);
    1406             return count;
    1407         }
    1408 
    1409         /**
    1410          * 删除List中c条记录,被删除的记录值为value
    1411          * @param String key
    1412          * @param int c 要删除的数量,如果为负数则从List的尾部检查并删除符合的记录
    1413          * @param String value 要匹配的值
    1414          * @return 删除后的List中的记录数
    1415          * */
    1416         public long lrem(String key, int c, String value) {
    1417             return lrem(SafeEncoder.encode(key), c, SafeEncoder.encode(value));
    1418         }
    1419 
    1420         /**
    1421          * 算是删除吧,只保留start与end之间的记录
    1422          * @param byte[] key
    1423          * @param int start 记录的开始位置(0表示第一条记录)
    1424          * @param int end 记录的结束位置(如果为-1则表示最后一个,-2,-3以此类推)
    1425          * @return 执行状态码
    1426          * */
    1427         public String ltrim(byte[] key, int start, int end) {
    1428             Jedis jedis = getJedis();
    1429             String str = jedis.ltrim(key, start, end);
    1430             returnJedis(jedis);
    1431             return str;
    1432         }
    1433 
    1434         /** 
    1435          * 算是删除吧,只保留start与end之间的记录
    1436          * @param String key 
    1437          * @param int start 记录的开始位置(0表示第一条记录)
    1438          * @param int end 记录的结束位置(如果为-1则表示最后一个,-2,-3以此类推)
    1439          * @return 执行状态码
    1440          * */
    1441         public String ltrim(String key, int start, int end) {
    1442             return ltrim(SafeEncoder.encode(key), start, end);
    1443         }
    1444     } 
    1445     
    1446     public static void main(String[] args) {
    1447         JedisUtil jedisUtil= JedisUtil.getInstance();  
    1448         JedisUtil.Strings strings=jedisUtil.new Strings();
    1449         strings.set("nnn", "nnnn"); 
    1450         System.out.println("-----"+strings.get("nnn"));   
    1451         
    1452         Jedis jedis=JedisUtil.getInstance().getJedis(); 
    1453         for (int i = 0; i < 10; i++) { 
    1454             jedis.set("test", "test"); 
    1455             System.out.println(i+"=="+jedis.get("test"));  
    1456         
    1457         }
    1458         JedisUtil.getInstance().returnJedis(jedis);   
    1459     }
    1460         
    1461 }
    复制代码

    补充:

    复制代码
     1     /**
     2      * @Title:
     3      * getList @Description:(根据key以及类得到redis服务器中集合字符串对应的集合) @param @param
     4      * key @param @param clazz @param @return 设定文件 @return List<T> 返回类型 @throws
     5      */
     6     public <T> List<T> getList(String key, Class<T> clazz) {
     7         String valueStr = this.get(key);
     8         if (valueStr == null || "".equals(valueStr))
     9             return null;
    10         if (!isGoodJson(valueStr)) {
    11             valueStr = JSON.toJSONString(valueStr);
    12         }
    13         return JSONArray.parseArray(valueStr, clazz);
    14     }
    15 
    16     /**
    17      * 
    18      * @Title: getObject @Description:
    19      * (根据key以及类得到redis服务器中对象字符串对应的对象) @param @param key @param @param
    20      * clazz @param @return 设定文件 @return T 返回类型 @throws
    21      */
    22     public <T> T getObject(String key, Class<T> clazz) {
    23         String valueStr = this.get(key);
    24         if (valueStr == null || "".equals(valueStr))
    25             return null;
    26         if (!isGoodJson(valueStr)) {
    27             valueStr = JSON.toJSONString(valueStr);
    28         }
    29         return (T) JSON.parseObject(valueStr, clazz);
    30     }
    31 
    32     /**
    33      * 
    34      * @Title: isGoodJson @Description: (判断是否是json格式字符串) @param @param
    35      * json @param @return 设定文件 @return boolean 返回类型 @throws
    36      */
    37     public static boolean isGoodJson(String json) {
    38         if (StringUtils.isBlank(json)) {
    39             return false;
    40         }
    41         try {
    42             JSON.parse(json);
    43             return true;
    44         } catch (Exception e) {
    45             return false;
    46         }
    47     }
    复制代码

     

    2、序列化、反序列化:

    redis服务器本身支持二进制安全的类型,所以可以把一个java对象序列化后存储到redis中。下面封装了一个序列化、反序列化的工具类:

    复制代码
     1 package redis.utils;
     2 
     3 import java.io.ByteArrayInputStream;
     4 import java.io.ByteArrayOutputStream;
     5 import java.io.ObjectInputStream;
     6 import java.io.ObjectOutputStream;
     7 
     8 public class SerializeUtil {
     9     /**
    10      * 序列化
    11      * 
    12      * @param object
    13      * @return
    14      */
    15     public static byte[] serialize(Object object) {
    16         ObjectOutputStream oos = null;
    17         ByteArrayOutputStream baos = null;
    18         try {
    19             // 序列化
    20             baos = new ByteArrayOutputStream();
    21             oos = new ObjectOutputStream(baos);
    22             oos.writeObject(object);
    23             byte[] bytes = baos.toByteArray();
    24             return bytes;
    25         } catch (Exception e) {
    26 
    27         }
    28         return null;
    29     }
    30 
    31     /**
    32      * 反序列化
    33      * 
    34      * @param bytes
    35      * @return
    36      */
    37     public static Object unserialize(byte[] bytes) {
    38         ByteArrayInputStream bais = null;
    39         try {
    40             // 反序列化
    41             bais = new ByteArrayInputStream(bytes);
    42             ObjectInputStream ois = new ObjectInputStream(bais);
    43             return ois.readObject();
    44         } catch (Exception e) {
    45 
    46         }
    47         return null;
    48     }
    49 }
    复制代码

    3、测试:

    1)直接使用RedisUtils实例进行五大数据类型的操作:(这样,使用完后会自动归还到池子中)

    1 JedisUtil jedisUtil= JedisUtil.getInstance();  
    2         JedisUtil.Strings strings=jedisUtil.new Strings();
    3         strings.set("nnn", "nnnn"); 
    4         System.out.println("-----"+strings.get("nnn"));   

    2)通过RedisUtil实例获取Jedis连接对象;这样就可以用原生的方式使用;最后使用完后需要手动将其归还到池子中:

    复制代码
    1                Jedis jedis=JedisUtil.getInstance().getJedis(); 
    2         for (int i = 0; i < 10; i++) { 
    3             jedis.set("test", "test"); 
    4             System.out.println(i+"=="+jedis.get("test"));  
    5         
    6         }
    7         JedisUtil.getInstance().returnJedis(jedis);          
    复制代码

    3)将java对象存到redis中:

    复制代码
     1        Person p = new Person();
     2         p.setId(3);
     3         p.setName("测试");
     4         
     5         JedisUtil.Strings strings=jedisUtil.new Strings();
     6         strings.set("object3", SerializeUtil.serialize(p));
     7         
     8         //jedis.set(SafeEncoder.encode("object1"),SerializeUtil.serialize(p));
     9         byte[] personBy = jedis.get(SafeEncoder.encode("object3"));
    10         Person p1 = (Person) SerializeUtil.unserialize(personBy);
    11         System.out.println(p1.getName());
    复制代码
  • 相关阅读:
    vue.js插入dom节点的方式
    window.atob()与window.btoa()方法实现编码与解码
    使用FileReader接口读取文件内容
    移动前端—H5实现图片先压缩再上传
    JS单体内置对象之Math常用方法(min,max,ceil,floor,round,random等)
    JS中使用document.defaultView.getComputedStyle()、currentStyle()方法获取CSS属性值
    JS按位非(~)运算符与~~运算符的理解分析
    JS获取键盘按下的键值event.keyCode,event.charCode,event.which的兼容性
    Bootstrap 按钮
    Bootstrap CSS 表单
  • 原文地址:https://www.cnblogs.com/jpfss/p/10812032.html
Copyright © 2020-2023  润新知