对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 }

欢迎补充和指正!

时间: 2024-08-02 11:19:05

对RedisTemplate接口二次封装成自定义工具接口的相关文章

[转载]微信公众平台二次开发之自定义菜单接口

原文地址:微信公众平台二次开发之自定义菜单接口作者:糊涂人 今天在SAE上运行代码时出现了一个小问题,所以发一篇博客与大家分享,这也是我第一次写关于技术上的博客,希望大家帮忙顶顶 步骤1. 你要有一个公众号,自己申请,过程略,很简单的. 步骤2. 登陆进去->高级功能,这时候要想开发必须要输入url和token,这里方法我引一下别人的文章http://www.cnblogs.com/txw1958/p/wechat-tutorial.html. 步骤3. 如果上面的工作完成了,这个时候你会在高级

将Java中的数组进行二次封装成属于我们自己的数组

我们来简略回顾一下Java数组的基础概念: 数组最大的优点是可以快速查询,因为数组直接通过索引查询很快:array[2],所以在随机访问时有一定的优势.其数据结构是简单的线性序列,这使得元素访问非常快速,并且按照索引遍历数组方便 数组最好应用于"索引有语意"的情况 但并非所有有语意的索引都适用于数组,例如索引是身 份 证号这种长度的数字,就无法作为索引使用 而数组也同样可以处理"索引没有语意"的情况 数组的缺点: 根据内容查找元素速度慢 数组的大小一经确定不能改变

对dispatch_async到主线程的逻辑封装成C/C++接口类型

背景:代码里面有时候会把将要运行的内容放到主线程里面运行,但假设已经是主线程里面的代码调用dispatch_async的时候偶尔会出现crash,所以就须要推断是否已经在主线程里面了. 通常的做法类似于以下所代码: ...... if ([NSThread isMainThread]) { block(); } else { dispatch_async(dispatch_get_main_queue(), block); } ...... 所以在SDWebImage库里面进行了一次封装,把这部

利用Jackson封装常用JsonUtil工具类

在日常的项目开发中,接口与接口之间.前后端之间的数据传输一般都是使用JSON格式,那必然会封装一些常用的Json数据转化的工具类,本文讲解下如何利用Jackson封装高复用性的Json转换工具类. 转换格式属性配置 首先,我们需要对Json对象转换自定义些常用配置属性,封装成适合项目接口规则的工具类.代码如下: @Slf4j public class JsonUtil { private static ObjectMapper objectMapper = new ObjectMapper();

猫猫学iOS 之微博项目实战(12)发送微博自定义工具条代理实现点击事件

猫猫分享,必须精品 原创文章,欢迎转载.转载请注明:翟乃玉的博客 地址:http://blog.csdn.net/u013357243 一:效果 二:封装好的工具条 NYComposeToolbar.h 带代理方法 #import <UIKit/UIKit.h> typedef enum { NYComposeToolbarButtonTypeCamera, // 拍照 NYComposeToolbarButtonTypePicture, // 相册 NYComposeToolbarButto

drf序列化高级、自定义只读只写、序列化覆盖字段、二次封装Response、数据库查询优化(断关联)、十大接口、视图家族、自动补全图片链接

目录 自定义只读 自定义只写 序列化覆盖字段 二次封装Response 数据库关系分析 断外键关联关系 ORM操作外键关系 ORM四种关联关系 基表 序列化类其他配置(了解) 十大接口 BaseSerializer初始化方法 十大接口序列化总结 单查群查 单增群增 单删群删 单整体改/群整体改 单局部改/群局部改 群增群改配置 十大接口小结 字段提供就校验,不提供拉到 DjangoORM内置优化机制:一次最多查21条数据 models.py response.py serializers.py

如何将自定义标签封装成一个Jar包

当我们在一个web应用中开发好一些自定义标签的时候,这些自定义标签通常有标签处理器Java类,和一个描述这些标签tld文件,如果我们想在以后别的web工程中还能用上这些标签,可以将这些自定义标签封装在一个JAR包中,正如JSTL标签库一样. 我们现在准备将web应用中开发好的自定义标签封装成jar包,这些自定义标签的两个文件如下图所示:   要想封装成专门的jar包,我们需要另外建一个Java工程,注意是Java工程,不是web工程,这里设置该Java工程名称为“simpletag”,接着在该工

Vue.js 自定义组件封装实录——基于现有控件的二次封装(以计时器为例)

在本人着手开发一个考试系统的过程中,出现了如下一个需求:制作一个倒计时的控件显示在试卷页面上.本文所记录的就是这样的一个过程. 前期工作 对于这个需求,自然我想到的是有没有现成的组件可以直接使用(本着不重复发明轮子的原则).于是我就在 GitHub 上找寻.确实找到了不少,但是与需求之间的差距还比较大.从零开始写又不太现实(时间摆在那里,加之自己的前端也是刚学,还没有从零开始手撸一个控件的能力),所以在已有组件的基础上进行二次封装便成了一个比较可行的方法(几乎也是唯一解).遂在 npm 上以 c

Directx11学习笔记【二】 将HelloWin封装成类

我们把上一个教程的代码封装到一个类中来方便以后的使用. 首先新建一个空工程叫做MyHelloWin,添加一个main.cpp文件,然后新建一个类叫做MyWindow,将于窗体有关的操作封装到里面 MyWindow.h文件 1 /************************************************************************ 2 Directx11学习笔记[2] 将HelloWin封装成类 3 2016.01 by zhangbaochong 4 /