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 }

 

posted @ 2020-05-12 23:49  愿无违  阅读(649)  评论(0编辑  收藏  举报