对RedisTemplate接口二次封装成自定义工具接口

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对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 }

欢迎补充和指正!

以上是关于对RedisTemplate接口二次封装成自定义工具接口的主要内容,如果未能解决你的问题,请参考以下文章

项目业务<权限管理 + 组件二次封装>

Spark 中的二次排序Java实现

Spark 中的二次排序Java实现

swift4.0 对 afn 进行二次封装

redisTemplate 封装bitcout

uni.app 请求接口二次封装