zoukankan      html  css  js  c++  java
  • 对RedisTemplate接口二次封装成自定义工具接口

    开发过程中,经常使用redis数据库存储。

    一般都是依赖注入redisTemplate,然后调用redisTemplate的api进行接口功能实现。

    但是,如果对redisTemplate自带的API不熟悉,每次都要重新查找筛选,很是麻烦。所以,自己干脆整理了一个接口。将常用的一些redis功能封装到这个接口中,以后自己只要是用这个,就不需要那么麻烦的去查redisTemplate的API了。

    现将代码贴出,分享给有需要的人。

      1 /*
      2  * 
      3  * 项目名称 : hospnav
      4  * 创建日期 : 2017年11月8日
      5  * 修改历史 : 
      6  *     1. [2017年11月8日]创建文件 by ningjianjian
      7  */
      8 package com.joysuch.common.service;
      9 
     10 import java.util.List;
     11 import java.util.Map;
     12 import java.util.Set;
     13 
     14 /**
     15  * @author ning
     16  * 创建于 2017年11月8日上午10:47:27
     17  * //TODO redis工具接口
     18  */
     19 public interface RedisTemplateService {
     20 
     21     //================================================Hash================================================
     22 
     23     /**
     24      *TODO 删除键为key的缓存(hash/set/list/String)
     25      * @param key
     26      * ning 创建于  2017年11月8日 上午11:54:05 
     27      */
     28     void deleteFromRedis(String key);
     29 
     30     /**
     31      *TODO 查看哈希表 hKey 中,给定域 hashKey 是否存在。
     32      * @param hKey 哈希表名称
     33      * @param hashKey 域的hashKey
     34      * @return  如果哈希表含有给定域,返回 1 。如果哈希表不含有给定域,或 hashKey 不存在,返回 0 。
     35      * ning 创建于  2017年11月8日 上午10:50:44 
     36      */
     37     Boolean hashCheckHxists(String hKey, String hashKey);
     38 
     39     /**
     40      *TODO 查询哈希表 hKey 中给定域 hashKey 的值。
     41      * @param hKey
     42      * @param hashKey
     43      * @return 给定域的值。当给定域不存在或是给定 key 不存在时,返回 nil 。
     44      * ning 创建于  2017年11月8日 上午11:02:08 
     45      */
     46     Object hashGet(String hKey, String hashKey);
     47 
     48     /**
     49      *TODO 获取所有的散列值
     50      * @param key
     51      * @return
     52      * ning 创建于  2017年11月8日 上午11:57:33 
     53      */
     54     Map<Object, Object> hashGetAll(String key);
     55 
     56     /**
     57      *TODO 哈希表 hKey 中的域 hashKey 的值加上增量 delta 。
     58      *
     59      *增量也可以为负数,相当于对给定域进行减法操作。  如果 key 不存在,一个新的哈希表被创建并执行 HINCRBY 命令。
     60      *如果域 field 不存在,那么在执行命令前,域的值被初始化为 0 。  对一个储存字符串值的域 field 执行 HINCRBY 命令将造成一个错误。
     61      * @param hKey
     62      * @param hashKey
     63      * @param delta
     64      * @return 执行 HINCRBY 命令之后,哈希表 hKey 中域 hashKey 的值。
     65      * ning 创建于  2017年11月8日 上午11:21:32 
     66      */
     67     Long hashIncrementLongOfHashMap(String hKey, String hashKey, Long delta);
     68 
     69     /**
     70      *TODO 哈希表 hKey 中的域 hashKey 的值加上浮点值 增量 delta 。
     71      * @param hKey
     72      * @param hashKey
     73      * @param delta
     74      * @return 执行 HINCRBY 命令之后,哈希表 hKey 中域 hashKey 的值。
     75      * ning 创建于  2017年11月8日 上午11:42:20 
     76      */
     77     Double hashIncrementDoubleOfHashMap(String hKey, String hashKey, Double delta);
     78 
     79     /**
     80      *TODO 添加键值对到哈希表key中
     81      * @param key
     82      * @param hashKey
     83      * @param value
     84      * ning 创建于  2017年11月8日 上午11:45:41 
     85      */
     86     void hashPushHashMap(String key, Object hashKey, Object value);
     87 
     88     /**
     89      *TODO 获取哈希表key中的所有域
     90      * @param key
     91      * @return
     92      * ning 创建于  2017年11月8日 上午11:48:18 
     93      */
     94     Set<Object> hashGetAllHashKey(String key);
     95 
     96     /**
     97      *TODO 获取散列中的字段数量
     98      * @param key
     99      * @return
    100      * ning 创建于  2017年11月8日 上午11:50:34 
    101      */
    102     Long hashGetHashMapSize(String key);
    103 
    104     /**
    105      *TODO 获取哈希中的所有值
    106      * @param key
    107      * @return
    108      * ning 创建于  2017年11月8日 上午11:51:12 
    109      */
    110     List<Object> hashGetHashAllValues(String key);
    111 
    112     /**
    113      *TODO 删除一个或多个哈希字段
    114      * @param key
    115      * @param hashKeys
    116      * @return 返回值为被成功删除的数量
    117      * ning 创建于  2017年11月8日 上午11:52:22 
    118      */
    119     Long hashDeleteHashKey(String key, Object... hashKeys);
    120 
    121     //================================================List================================================
    122 
    123     /**
    124      *TODO 从右向左存压栈
    125      * @param key
    126      * @param value
    127      * ning 创建于  2017年11月8日 下午12:21:06 
    128      */
    129     void listRightPushList(String key, String value);
    130 
    131     /**
    132      *TODO 从右出栈
    133      * @param key
    134      * @return
    135      * ning 创建于  2017年11月8日 下午12:21:37 
    136      */
    137     String listRightPopList(String key);
    138 
    139     /**
    140      *TODO 从左向右存压栈
    141      * @param key
    142      * @param value
    143      * ning 创建于  2017年11月8日 下午12:05:25 
    144      */
    145     void listLeftPushList(String key, String value);
    146 
    147     /**
    148      *TODO 从左出栈
    149      * @param key
    150      * @return
    151      * ning 创建于  2017年11月8日 下午1:56:40 
    152      */
    153     String listLeftPopList(String key);
    154 
    155     /**
    156      *TODO 集合list的长度
    157      * @param key
    158      * @return
    159      * ning 创建于  2017年11月8日 下午12:08:05 
    160      */
    161     Long listSize(String key);
    162 
    163     /**
    164      *TODO 查询列表 key 中指定区间内的元素,区间以偏移量 start 和 stop 指定。
    165      * @param key
    166      * @param start
    167      * @param end
    168      * @return
    169      * ning 创建于  2017年11月8日 下午12:09:56 
    170      */
    171     List<String> listRangeList(String key, Long start, Long end);
    172 
    173     /**
    174      *TODO 移除key中值为value的i个,返回删除的个数;如果没有这个元素则返回0 
    175      * @param key
    176      * @param i
    177      * @param value
    178      * @return
    179      * ning 创建于  2017年11月8日 下午12:12:39 
    180      */
    181     Long listRemoveFromList(String key, long i, Object value);
    182 
    183     /**
    184      *TODO 根据下标查询list中某个值
    185      * @param key
    186      * @param index
    187      * @return
    188      * ning 创建于  2017年11月8日 下午12:13:40 
    189      */
    190     String listIndexFromList(String key, long index);
    191 
    192     /**
    193      *TODO 根据下标设置value
    194      * @param key
    195      * @param index
    196      * @param value
    197      * ning 创建于  2017年11月8日 下午12:15:28 
    198      */
    199     void listSetValueToList(String key, long index, String value);
    200 
    201     /**
    202      *TODO 裁剪(删除), 删除 除了[start,end]以外的所有元素 
    203      * @param key
    204      * @param start
    205      * @param end
    206      * ning 创建于  2017年11月8日 下午12:17:23 
    207      */
    208     void listTrimByRange(String key, Long start, Long end);
    209 
    210     //================================================Set================================================
    211     
    212     /**
    213      *TODO 将一个或多个 value 元素加入到集合 key 当中,已经存在于集合的 value 元素将被忽略。
    214      * @param key
    215      * @param values
    216      * @return 被添加到集合中的新元素的数量,不包括被忽略的元素。
    217      * ning 创建于  2017年11月8日 下午1:59:05 
    218      */
    219     Long setAddSetMap(String key, String...values);
    220     
    221     /**
    222      *TODO 获取set集合的大小
    223      * @param key
    224      * @return
    225      * ning 创建于  2017年11月8日 下午2:01:38 
    226      */
    227     Long setGetSizeForSetMap(String key);
    228     
    229     /**
    230      *TODO 获取set集合中的元素
    231      * @param key
    232      * @return
    233      * ning 创建于  2017年11月8日 下午2:02:40 
    234      */
    235     Set<String> setGetMemberOfSetMap(String key);
    236     
    237     /**
    238      *TODO 检查元素是不是set集合中的
    239      * @param key
    240      * @param o
    241      * @return
    242      * ning 创建于  2017年11月8日 下午2:03:37 
    243      */
    244     Boolean setCheckIsMemberOfSet(String key, Object o);
    245     
    246     //================================================String================================================
    247     
    248     /**
    249      *TODO 如果 key 已经存在并且是一个字符串, APPEND 命令将 value 追加到 key 原来的值的末尾。
    250      *     如果 key 不存在, APPEND 就简单地将给定 key 设为 value ,就像执行 SET key value 一样。
    251      * @param key
    252      * @param value
    253      * @return 追加 value 之后, key 中字符串的长度
    254      * ning 创建于  2017年11月8日 下午2:14:03 
    255      */
    256     Integer stringAppendString(String key, String value);
    257     
    258     /**
    259      *TODO 获取指定键的值
    260      * @param key
    261      * @return
    262      * ning 创建于  2017年11月8日 下午2:15:09 
    263      */
    264     String stringGetStringByKey(String key);
    265     
    266     /**
    267      *TODO 获取存储在键上的字符串的子字符串
    268      * @param key
    269      * @param start
    270      * @param end
    271      * @return 截取后的子字符串
    272      * ning 创建于  2017年11月8日 下午2:16:11 
    273      */
    274     String stringGetSubStringFromString(String key, long start, long end);
    275     
    276     /**
    277      *TODO 将键的整数值按给定的长整型数值增加
    278      * @param key
    279      * @param delta
    280      * @return 返回增长后的结果值
    281      * ning 创建于  2017年11月8日 下午2:18:00 
    282      */
    283     Long stringIncrementLongString(String key, Long delta);
    284     
    285     /**
    286      *TODO 将键的整数值按给定的浮点型数值增加
    287      * @param key
    288      * @param delta
    289      * @return 返回增长后的结果值
    290      * ning 创建于  2017年11月8日 下午2:18:24 
    291      */
    292     Double stringIncrementDoubleString(String key, Double delta);
    293     
    294     /**
    295      *TODO 设置指定键的值
    296      * @param key
    297      * @param value
    298      * ning 创建于  2017年11月8日 下午2:19:28 
    299      */
    300     void stringSetString(String key, String value);
    301     
    302     /**
    303      *TODO 设置键的字符串值并返回其旧值
    304      * @param key
    305      * @param value
    306      * @return
    307      * ning 创建于  2017年11月8日 下午2:20:07 
    308      */
    309     String stringGetAndSet(String key, String value);
    310     
    311     /**
    312      *TODO 使用键和到期时间来设置值,时间单位默认为毫秒
    313      * @param key
    314      * @param value
    315      * @param timeout
    316      * @return
    317      * ning 创建于  2017年11月8日 下午2:21:30 
    318      */
    319     void stringSetValueAndExpireTime(String key, String value, long timeout);
    320     
    321 }

    下方为接口实现类代码:

      1 /*
      2  * 
      3  * 项目名称 : hospnav
      4  * 创建日期 : 2017年11月8日
      5  * 修改历史 : 
      6  *     1. [2017年11月8日]创建文件 by ningjianjian
      7  */
      8 package com.joysuch.common.service.impl;
      9 
     10 import java.util.List;
     11 import java.util.Map;
     12 import java.util.Set;
     13 import java.util.concurrent.TimeUnit;
     14 
     15 import org.springframework.beans.factory.annotation.Autowired;
     16 import org.springframework.data.redis.core.RedisTemplate;
     17 import org.springframework.stereotype.Service;
     18 
     19 import com.joysuch.common.service.RedisTemplateService;
     20 
     21 /**
     22  * @author ning
     23  * 创建于 2017年11月8日上午10:47:56
     24  * //TODO redis工具接口实现类
     25  */
     26 @Service("redisTemplateService")
     27 public class RedisTemplateServiceImpl implements RedisTemplateService {
     28 
     29     @Autowired
     30     private RedisTemplate<String, String> redisTemplate;
     31 
     32     @Override
     33     public void deleteFromRedis(String key) {
     34         redisTemplate.delete(key);
     35     }
     36     
     37     @Override
     38     public Boolean hashCheckHxists(String mapName, String field) {
     39         return redisTemplate.opsForHash().hasKey(mapName, field);
     40     }
     41 
     42     @Override
     43     public Object hashGet(String tableName, String hashKey) {
     44         return redisTemplate.opsForHash().get(tableName, hashKey);
     45     }
     46     
     47     @Override
     48     public Map<Object, Object> hashGetAll(String key) {
     49         return  redisTemplate.opsForHash().entries(key);
     50     }
     51 
     52     @Override
     53     public Long hashIncrementLongOfHashMap(String hKey, String hashKey, Long delta) {
     54         return redisTemplate.opsForHash().increment(hKey, hashKey, delta);
     55     }
     56 
     57     @Override
     58     public Double hashIncrementDoubleOfHashMap(String hKey, String hashKey, Double delta) {
     59         return redisTemplate.opsForHash().increment(hKey, hashKey, delta);
     60     }
     61 
     62     @Override
     63     public void hashPushHashMap(String key, Object hashKey, Object value) {
     64         redisTemplate.opsForHash().put(key, hashKey, value);
     65     }
     66 
     67     @Override
     68     public Set<Object> hashGetAllHashKey(String key) {
     69         return redisTemplate.opsForHash().keys(key);
     70     }
     71 
     72     @Override
     73     public Long hashGetHashMapSize(String key) {
     74         return redisTemplate.opsForHash().size(key);
     75     }
     76 
     77     @Override
     78     public List<Object> hashGetHashAllValues(String key) {
     79         return redisTemplate.opsForHash().values(key);
     80     }
     81 
     82     @Override
     83     public Long hashDeleteHashKey(String key, Object... hashKeys) {
     84         return redisTemplate.opsForHash().delete(key, hashKeys);
     85     }
     86 
     87     @Override
     88     public void listLeftPushList(String key, String value) {
     89         redisTemplate.opsForList().leftPush(key, value); 
     90     }
     91 
     92     @Override
     93     public String listLeftPopList(String key) {
     94         return redisTemplate.opsForList().leftPop(key);
     95     }
     96 
     97     @Override
     98     public Long listSize(String key) {
     99         return redisTemplate.opsForList().size(key);
    100     }
    101 
    102     @Override
    103     public List<String> listRangeList(String key, Long start, Long end) {
    104         return redisTemplate.opsForList().range(key, start, end);
    105     }
    106 
    107     @Override
    108     public Long listRemoveFromList(String key, long i, Object value) {
    109         return redisTemplate.opsForList().remove(key, i, value);
    110     }
    111 
    112     @Override
    113     public String listIndexFromList(String key, long index) {
    114         return redisTemplate.opsForList().index(key, index);
    115     }
    116 
    117     @Override
    118     public void listSetValueToList(String key, long index, String value) {
    119         redisTemplate.opsForList().set(key, index, value);
    120     }
    121 
    122     @Override
    123     public void listTrimByRange(String key, Long start, Long end) {
    124         redisTemplate.opsForList().trim(key, start, end);
    125     }
    126 
    127     @Override
    128     public void listRightPushList(String key, String value) {
    129         redisTemplate.opsForList().rightPush(key, value);
    130     }
    131 
    132     @Override
    133     public String listRightPopList(String key) {
    134         return redisTemplate.opsForList().rightPop(key);
    135     }
    136 
    137     @Override
    138     public Long setAddSetMap(String key, String... values) {
    139         return redisTemplate.opsForSet().add(key, values);
    140     }
    141 
    142     @Override
    143     public Long setGetSizeForSetMap(String key) {
    144         return redisTemplate.opsForSet().size(key);
    145     }
    146 
    147     @Override
    148     public Set<String> setGetMemberOfSetMap(String key) {
    149         return redisTemplate.opsForSet().members(key);
    150     }
    151 
    152     @Override
    153     public Boolean setCheckIsMemberOfSet(String key, Object o) {
    154         return redisTemplate.opsForSet().isMember(key, o);
    155     }
    156 
    157     @Override
    158     public Integer stringAppendString(String key, String value) {
    159         return redisTemplate.opsForValue().append(key, value);
    160     }
    161 
    162     @Override
    163     public String stringGetStringByKey(String key) {
    164         return  redisTemplate.opsForValue().get(key);
    165     }
    166 
    167     @Override
    168     public String stringGetSubStringFromString(String key, long start, long end) {
    169         return redisTemplate.opsForValue().get(key, start, end);
    170     }
    171 
    172     @Override
    173     public Long stringIncrementLongString(String key, Long delta) {
    174         return redisTemplate.opsForValue().increment(key, delta);
    175     }
    176 
    177     @Override
    178     public Double stringIncrementDoubleString(String key, Double delta) {
    179         return redisTemplate.opsForValue().increment(key, delta);
    180     }
    181 
    182     @Override
    183     public void stringSetString(String key, String value) {
    184         redisTemplate.opsForValue().set(key, value);        
    185     }
    186 
    187     @Override
    188     public String stringGetAndSet(String key, String value) {
    189         return redisTemplate.opsForValue().getAndSet(key, value);
    190     }
    191 
    192     @Override
    193     public void stringSetValueAndExpireTime(String key, String value, long timeout) {
    194         redisTemplate.opsForValue().set(key, value, timeout, TimeUnit.MILLISECONDS);        
    195     }
    196     
    197 }

    欢迎补充和指正!

  • 相关阅读:
    Collectors.reducing总结
    Ubuntu 换源看这一篇就够了
    基于Vue2和Node.js的反欺诈系统设计与实现
    Flink源码解析(四)——从Flink集群部署和任务提交模式看Flink任务的核心组件
    SaaS架构(二) 多租户数据隔离方案
    网络IO模型(BIO,NIO,AIO)
    Gale-Shapley算法
    Java 内存模型
    上位机那些事儿
    三菱PLC之SLMP协议报文说明
  • 原文地址:https://www.cnblogs.com/ningJJ/p/7808482.html
Copyright © 2011-2022 走看看