zoukankan      html  css  js  c++  java
  • redis常用工具类Utils

    redis常用工具类Utils

      1 package com.yw.redis.utils;
      2 
      3 import com.alibaba.fastjson.JSON;
      4 import redis.clients.jedis.Jedis;
      5 import redis.clients.jedis.JedisPool;
      6 import redis.clients.jedis.Transaction;
      7 
      8 import java.util.*;
      9 
     10 /**
     11  * 功能描述: redis客户端
     12  *
     13  * @param:
     14  * @return:
     15  * @auther: YW
     16  * @date: 2018/3/29 10:05
     17  */
     18 public class RedisClientUtils {
     19     public JedisPool jedisPool;
     20 
     21     public RedisClientUtils(JedisPool pool) {
     22         this.jedisPool = pool;
     23     }
     24 
     25     public RedisClientUtils() {
     26 
     27     }
     28 
     29     public JedisPool getJedisPool() {
     30         return jedisPool;
     31     }
     32 
     33     public void setJedisPool(JedisPool jedisPool) {
     34         this.jedisPool = jedisPool;
     35     }
     36 
     37     /**
     38      * 根据key来获取对应的value
     39      */
     40     public Object getByKey(String key) {
     41         Jedis client = jedisPool.getResource();
     42         Object o = null;
     43         try {
     44             o = client.get(key);
     45         } finally {
     46             jedisPool.returnResourceObject(client);// 向连接池“归还”资源
     47         }
     48         return o;
     49     }
     50 
     51      
     52 
     53     /**
     54      * 判断String类型key是否存在
     55      */
     56     public boolean isKeyExist(String key) {
     57         Jedis client = jedisPool.getResource();
     58         boolean o = false;
     59         try {
     60             o = client.exists(key);
     61         } finally {
     62             jedisPool.returnResourceObject(client);
     63             ;// 向连接池“归还”资源
     64         }
     65         return o;
     66     }
     67 
     68     /**
     69      * String类型的键值写入redis
     70      *
     71      * @param key
     72      * @param value
     73      * @return
     74      */
     75     public boolean set(String key, String value) {
     76         Jedis client = jedisPool.getResource();
     77         String issuccess = "";
     78         try {
     79             issuccess = client.set(key, value);
     80             if ("OK" .equals(issuccess)) {
     81                 return true;
     82             } else {
     83                 return false;
     84             }
     85         } finally {
     86             jedisPool.returnResourceObject(client);
     87             ;// 向连接池“归还”资源
     88         }
     89     }
     90 
     91     public Long setnx(String key, String value) {
     92         Jedis client = jedisPool.getResource();
     93         try {
     94 
     95             Long result = client.setnx(key, value);
     96             System.out.println("setnx key=" + key + " value=" + value +
     97                     "result=" + result);
     98             return result;
     99         } finally {
    100             jedisPool.returnResourceObject(client);
    101             ;// 向连接池“归还”资源
    102         }
    103     }
    104 
    105     /**
    106      * String类型的键值写入redis,并设置失效时间
    107      *
    108      * @param key
    109      * @param value
    110      * @return
    111      */
    112     public boolean setKeyWithExpireTime(String key, String value, int time) {
    113         if (time == 0) {
    114 
    115         }
    116         Jedis client = jedisPool.getResource();
    117         String issuccess = "";
    118         try {
    119             issuccess = client.setex(key, time, value);
    120             if ("OK" .equals(issuccess)) {
    121                 return true;
    122             } else {
    123                 return false;
    124             }
    125         } finally {
    126             jedisPool.returnResourceObject(client);
    127             ;// 向连接池“归还”资源
    128         }
    129     }
    130 
    131     /**
    132      * list<String>结构的数据写入redis
    133      *
    134      * @param key
    135      * @param value
    136      * @return
    137      */
    138     public boolean lpush(String key, List<String> value) {
    139         Jedis client = jedisPool.getResource();
    140         try {
    141             Transaction tx = client.multi();
    142             for (String one : value) {
    143                 tx.lpush(key, one);
    144             }
    145             tx.exec();
    146             return true;
    147         } finally {
    148             jedisPool.returnResourceObject(client);
    149             ;// 向连接池“归还”资源
    150         }
    151     }
    152 
    153     /**
    154      * 根据key获取list类型
    155      *
    156      * @param key
    157      * @return
    158      */
    159     public List<String> lrange(String key) {
    160         Jedis client = jedisPool.getResource();
    161         List<String> returnList = null;
    162         try {
    163             returnList = client.lrange(key, 0, -1);
    164 
    165         } finally {
    166             jedisPool.returnResourceObject(client);
    167             ;// 向连接池“归还”资源
    168         }
    169         return returnList;
    170     }
    171 
    172     public List<String> lrange(String key, int start, int length) {
    173         Jedis client = jedisPool.getResource();
    174         try {
    175             return client.lrange(key, start, length);
    176         } finally {
    177             jedisPool.returnResourceObject(client);
    178         }
    179     }
    180 
    181     /**
    182      * @param key
    183      * @param o
    184      * @return
    185      */
    186     public boolean setAnObject(String key, Object o) {
    187         Jedis client = jedisPool.getResource();
    188         try {
    189             String afterSerialize = JSON.toJSONString(o);
    190             o = client.set(key, afterSerialize);
    191             return true;
    192         } finally {
    193             jedisPool.returnResourceObject(client);// 向连接池“归还”资源
    194         }
    195     }
    196 
    197     @SuppressWarnings("unchecked")
    198     public <T> T getSetT(String key, T newValue) {
    199         Jedis client = jedisPool.getResource();
    200         T t;
    201         try {
    202             String afterSerialize = Util.beanToJson(newValue);
    203             String value = client.getSet(key, afterSerialize);
    204             t = (T) Util.jsonToBean(value, newValue.getClass());
    205             return t;
    206         } finally {
    207             jedisPool.returnResourceObject(client);// 向连接池“归还”资源
    208         }
    209     }
    210 
    211     public <T> T getAnObject(String key, Class<T> zz) {
    212         Jedis client = jedisPool.getResource();
    213         T t;
    214         try {
    215             String s = client.get(key);
    216             if (s == null || s.length() == 0) {
    217                 return null;
    218             }
    219             t = Util.jsonToBean(s, zz);
    220         } finally {
    221             jedisPool.returnResourceObject(client);
    222         }
    223         return t;
    224 
    225     }
    226 
    227     public List<String> getKeys(String pattern) {
    228         Jedis client = jedisPool.getResource();
    229         List<String> result = new ArrayList<String>();
    230         try {
    231             Set<String> set = client.keys(pattern);
    232             result.addAll(set);
    233         } finally {
    234             jedisPool.returnResourceObject(client);// 向连接池“归还”资源
    235         }
    236         return result;
    237     }
    238 
    239     /*
    240     *  减
    241     * */
    242     public boolean delKey(String key) {
    243         Jedis client = jedisPool.getResource();
    244         try {
    245             System.out.println("del key=" + key);
    246             client.del(key);
    247             return true;
    248         } finally {
    249             jedisPool.returnResourceObject(client);// 向连接池“归还”资源
    250         }
    251     }
    252 
    253     /* hsah 类型复制*/
    254     public <T> boolean hset(String key, String field, T t) {
    255         Jedis client = jedisPool.getResource();
    256         try {
    257             String afterSerialize = Util.beanToJson(t);
    258             client.hset(key, field, afterSerialize);
    259             return true;
    260         } finally {
    261             jedisPool.returnResourceObject(client);// 向连接池“归还”资源
    262         }
    263 
    264     }
    265 
    266     /**
    267      * 存入的时hash结构的数据
    268      *
    269      * @param key key
    270      * @param map map的key实质为field。
    271      * @return
    272      */
    273     public <T, S> boolean hmset(String key, Map<T, S> map) {
    274         Jedis client = jedisPool.getResource();
    275         try {
    276             Iterator<Map.Entry<T, S>> iterator = map.entrySet().iterator();
    277             Map<String, String> stringMap = new HashMap<String, String>();
    278             String filed;
    279             String value;
    280             while (iterator.hasNext()) {
    281                 Map.Entry<T, S> entry = iterator.next();
    282                 filed = String.valueOf(entry.getKey());
    283                 value = Util.beanToJson(entry.getValue());
    284                 stringMap.put(filed, value);
    285             }
    286             client.hmset(key, stringMap);
    287             return true;
    288         } finally {
    289             jedisPool.returnResourceObject(client);// 向连接池“归还”资源
    290         }
    291 
    292     }
    293 
    294     public <T> T hgetObject(String key, String field, Class<T> cls) {
    295         Jedis client = jedisPool.getResource();
    296         try {
    297             String value = client.hget(key, field);
    298             return (T) Util.jsonToBean(value, cls);
    299         } finally {
    300             jedisPool.returnResourceObject(client);// 向连接池“归还”资源
    301         }
    302 
    303     }
    304 
    305     public String hgetString(String key, String field) {
    306         Jedis client = jedisPool.getResource();
    307         try {
    308             String value = client.hget(key, field);
    309             return value;
    310         } finally {
    311             jedisPool.returnResourceObject(client);// 向连接池“归还”资源
    312         }
    313 
    314     }
    315 
    316     public Map<String, String> hGetAll(String key) {
    317         Jedis client = jedisPool.getResource();
    318         try {
    319             return client.hgetAll(key);
    320         } finally {
    321             jedisPool.returnResourceObject(client);// 向连接池“归还”资源
    322         }
    323 
    324     }
    325 
    326     public List<String> hkeys(String key) {
    327         Jedis client = jedisPool.getResource();
    328         try {
    329             List<String> fields = new ArrayList<String>();
    330             Set<String> set = client.hkeys(key);
    331             fields.addAll(set);
    332             return fields;
    333         } finally {
    334             jedisPool.returnResourceObject(client);// 向连接池“归还”资源
    335         }
    336 
    337     }
    338 
    339     public List<String> hvals(String key) {
    340         Jedis client = jedisPool.getResource();
    341         try {
    342             List<String> values = client.hvals(key);
    343             return values;
    344         } finally {
    345             jedisPool.returnResourceObject(client);// 向连接池“归还”资源
    346         }
    347 
    348     }
    349 
    350     public boolean hexists(String key, String field) {
    351         Jedis client = jedisPool.getResource();
    352         try {
    353             return client.hexists(key, field);
    354         } finally {
    355             jedisPool.returnResourceObject(client);// 向连接池“归还”资源
    356         }
    357     }
    358 
    359     /*
    360     * 增
    361     * */
    362     public long incr(String key) {
    363         Jedis client = jedisPool.getResource();
    364         try {
    365             return client.incr(key);
    366         } finally {
    367             jedisPool.returnResourceObject(client);
    368         }
    369     }
    370 
    371     public void hdel(String key, String... fields) {
    372         Jedis client = jedisPool.getResource();
    373         try {
    374             client.hdel(key, fields);
    375         } finally {
    376             jedisPool.returnResourceObject(client);
    377         }
    378     }
    379 
    380     /**
    381      * @param key
    382      * @param field
    383      */
    384     public void lpush(String key, String field) {
    385         Jedis client = jedisPool.getResource();
    386         try {
    387             client.lpush(key, field);
    388         } finally {
    389             jedisPool.returnResourceObject(client);
    390         }
    391     }
    392 
    393     public void lpush(String key, Object obj) {
    394         Jedis client = jedisPool.getResource();
    395         try {
    396             String field = Util.beanToJson(obj);
    397             client.lpush(key, field);
    398         } finally {
    399             jedisPool.returnResourceObject(client);
    400         }
    401     }
    402 
    403     /**
    404      * 该方法不适用于普通的调用,该方法只针对于错误日志记录
    405      *
    406      * @param key
    407      * @param field
    408      */
    409     public void lpushForErrorMsg(String key, String field) {
    410         Jedis client = jedisPool.getResource();
    411         try {
    412             if (client.llen(key) > 1000) {
    413                 return;
    414             }
    415             client.lpush(key, field);
    416         } finally {
    417             jedisPool.returnResourceObject(client);
    418         }
    419     }
    420 
    421     public long llen(String key) {
    422         Jedis client = jedisPool.getResource();
    423         try {
    424             return client.llen(key);
    425         } finally {
    426             jedisPool.returnResourceObject(client);
    427         }
    428     }
    429 
    430     public List<String> blPop(String key, int timeoutSeconds) {
    431         Jedis client = jedisPool.getResource();
    432         try {
    433             return client.blpop(timeoutSeconds, key);
    434         } finally {
    435             jedisPool.returnResourceObject(client);
    436         }
    437     }
    438 
    439     public <T> long sadd(String key, String... values) {
    440         Jedis client = jedisPool.getResource();
    441         try {
    442             return client.sadd(key, values);
    443         } finally {
    444             jedisPool.returnResourceObject(client);
    445         }
    446     }
    447 
    448     public <T> long sadd(String key, List<T> ts) {
    449         Jedis client = jedisPool.getResource();
    450         try {
    451             if (ts == null || ts.size() == 0) {
    452                 return 0l;
    453             }
    454             String[] values = new String[ts.size()];
    455             for (int i = 0; i < ts.size(); i++) {
    456                 values[i] = ts.get(i).toString();
    457             }
    458             return client.sadd(key, values);
    459         } finally {
    460             jedisPool.returnResourceObject(client);
    461         }
    462     }
    463 
    464     public long srem(String key, String... values) {
    465         Jedis client = jedisPool.getResource();
    466         try {
    467             return client.srem(key, values);
    468         } finally {
    469             jedisPool.returnResourceObject(client);
    470         }
    471     }
    472 
    473     public <T> long srem(String key, List<T> ts) {
    474         Jedis client = jedisPool.getResource();
    475         try {
    476             if (ts == null || ts.size() == 0) {
    477                 return 0l;
    478             }
    479             String[] values = new String[ts.size()];
    480             for (int i = 0; i < ts.size(); i++) {
    481                 values[i] = ts.get(i).toString();
    482             }
    483             return client.srem(key, values);
    484         } finally {
    485             jedisPool.returnResourceObject(client);
    486         }
    487     }
    488 
    489     public Set<String> getByRange(String key, double min, double max) {
    490         Jedis client = jedisPool.getResource();
    491         try {
    492             return client.zrangeByScore(key, min, max);
    493         } finally {
    494             jedisPool.returnResourceObject(client);
    495         }
    496     }
    497 
    498     public Long decr(String key) {
    499         Jedis client = jedisPool.getResource();
    500         try {
    501             return client.decr(key);
    502         } finally {
    503             jedisPool.returnResourceObject(client);
    504         }
    505     }
    506 
    507     public Long hlen(String key) {
    508         Jedis client = jedisPool.getResource();
    509         try {
    510             return client.hlen(key);
    511         } finally {
    512             jedisPool.returnResourceObject(client);
    513         }
    514     }
    515 
    516     public List<String> hmget(String key, String... fields) {
    517         Jedis client = jedisPool.getResource();
    518         try {
    519             return client.hmget(key, fields);
    520         } finally {
    521             jedisPool.returnResourceObject(client);
    522         }
    523     }
    524 
    525     /**
    526      * 从redis里面得到以 某字符串开头的所有key
    527      *
    528      * @param str
    529      */
    530     public Set<String> getKeyByStr(String str) {
    531         Jedis client = jedisPool.getResource();
    532 
    533         Set<String> keys = null;
    534         try {
    535             keys = client.keys(str);
    536         } finally {
    537             jedisPool.returnResourceObject(client);
    538         }
    539         return keys;
    540     }
    541 
    542     public void ltrim(String key, int start, int stop) {
    543         Jedis client = jedisPool.getResource();
    544         try {
    545             client.ltrim(key, start, stop);
    546         } finally {
    547             jedisPool.returnResourceObject(client);
    548         }
    549     }
    550 
    551     /**
    552      * @param key
    553      * @param seconds
    554      * @return
    555      */
    556     public Long expire(String key, Integer seconds) {
    557         Jedis client = jedisPool.getResource();
    558         Long success = 1l;
    559         try {
    560             success = client.expire(key, seconds);
    561         } finally {
    562             jedisPool.returnResourceObject(client);
    563             ;
    564         }
    565         return success;
    566     }
    567 
    568     /**
    569      * 存入的时hash结构的数据,并且去掉value中的引号
    570      *
    571      * @param key key
    572      * @param map map的key实质为field。
    573      * @return
    574      */
    575     public <T, S> boolean hmsetWithoutQuotationMarks(String key, Map<T, S> map) {
    576         Jedis client = jedisPool.getResource();
    577         try {
    578             Iterator<Map.Entry<T, S>> iterator = map.entrySet().iterator();
    579             Map<String, String> stringMap = new HashMap<String, String>();
    580             String filed;
    581             String value;
    582             while (iterator.hasNext()) {
    583                 Map.Entry<T, S> entry = iterator.next();
    584                 filed = String.valueOf(entry.getKey());
    585                 value = JSON.toJSONString(entry.getValue()).replace(""", "");
    586                 stringMap.put(filed, value);
    587             }
    588             client.hmset(key, stringMap);
    589             return true;
    590         } finally {
    591             jedisPool.returnResourceObject(client);// 向连接池“归还”资源
    592         }
    593     }
    594 }
  • 相关阅读:
    用SSH指令批量修改文件夹 文件权限和拥有者
    magento转移服务器和magento建立多站点总结
    ssh 命令
    magento缓存系列详解:clean cache
    如何配置magento免运费商品方法
    Magento后台订单显示产品图片的修改方法
    如何在magento后台增加一个自定义订单状态
    Magento路径函数getBaseUrl使用方法
    图解HTTPS
    php 数组 添加元素、删除元素
  • 原文地址:https://www.cnblogs.com/YuanWeiBlogger/p/12879743.html
Copyright © 2011-2022 走看看