对RedisTemplate接口二次封装成自定义工具接口
开发过程中,经常使用redis数据库存储。
一般都是依赖注入redisTemplate,然后调用redisTemplate的api进行接口功能实现。
但是,如果对redisTemplate自带的API不熟悉,每次都要重新查找筛选,很是麻烦。所以,自己干脆整理了一个接口。将常用的一些redis功能封装到这个接口中,以后自己只要是用这个,就不需要那么麻烦的去查redisTemplate的API了。
现将代码贴出,分享给有需要的人。
/*
*
* 项目名称 : hospnav
* 创建日期 : 2017年11月8日
* 修改历史 :
* 1. [2017年11月8日]创建文件 by ningjianjian
*/
package com.joysuch.common.service; import java.util.List;
import java.util.Map;
import java.util.Set; /**
* @author ning
* 创建于 2017年11月8日上午10:47:27
* //TODO redis工具接口
*/
public interface RedisTemplateService { //================================================Hash================================================ /**
*TODO 删除键为key的缓存(hash/set/list/String)
* @param key
* ning 创建于 2017年11月8日 上午11:54:05
*/
void deleteFromRedis(String key); /**
*TODO 查看哈希表 hKey 中,给定域 hashKey 是否存在。
* @param hKey 哈希表名称
* @param hashKey 域的hashKey
* @return 如果哈希表含有给定域,返回 1 。如果哈希表不含有给定域,或 hashKey 不存在,返回 0 。
* ning 创建于 2017年11月8日 上午10:50:44
*/
Boolean hashCheckHxists(String hKey, String hashKey); /**
*TODO 查询哈希表 hKey 中给定域 hashKey 的值。
* @param hKey
* @param hashKey
* @return 给定域的值。当给定域不存在或是给定 key 不存在时,返回 nil 。
* ning 创建于 2017年11月8日 上午11:02:08
*/
Object hashGet(String hKey, String hashKey); /**
*TODO 获取所有的散列值
* @param key
* @return
* ning 创建于 2017年11月8日 上午11:57:33
*/
Map<Object, Object> hashGetAll(String key); /**
*TODO 哈希表 hKey 中的域 hashKey 的值加上增量 delta 。
*
*增量也可以为负数,相当于对给定域进行减法操作。 如果 key 不存在,一个新的哈希表被创建并执行 HINCRBY 命令。
*如果域 field 不存在,那么在执行命令前,域的值被初始化为 0 。 对一个储存字符串值的域 field 执行 HINCRBY 命令将造成一个错误。
* @param hKey
* @param hashKey
* @param delta
* @return 执行 HINCRBY 命令之后,哈希表 hKey 中域 hashKey 的值。
* ning 创建于 2017年11月8日 上午11:21:32
*/
Long hashIncrementLongOfHashMap(String hKey, String hashKey, Long delta); /**
*TODO 哈希表 hKey 中的域 hashKey 的值加上浮点值 增量 delta 。
* @param hKey
* @param hashKey
* @param delta
* @return 执行 HINCRBY 命令之后,哈希表 hKey 中域 hashKey 的值。
* ning 创建于 2017年11月8日 上午11:42:20
*/
Double hashIncrementDoubleOfHashMap(String hKey, String hashKey, Double delta); /**
*TODO 添加键值对到哈希表key中
* @param key
* @param hashKey
* @param value
* ning 创建于 2017年11月8日 上午11:45:41
*/
void hashPushHashMap(String key, Object hashKey, Object value); /**
*TODO 获取哈希表key中的所有域
* @param key
* @return
* ning 创建于 2017年11月8日 上午11:48:18
*/
Set<Object> hashGetAllHashKey(String key); /**
*TODO 获取散列中的字段数量
* @param key
* @return
* ning 创建于 2017年11月8日 上午11:50:34
*/
Long hashGetHashMapSize(String key); /**
*TODO 获取哈希中的所有值
* @param key
* @return
* ning 创建于 2017年11月8日 上午11:51:12
*/
List<Object> hashGetHashAllValues(String key); /**
*TODO 删除一个或多个哈希字段
* @param key
* @param hashKeys
* @return 返回值为被成功删除的数量
* ning 创建于 2017年11月8日 上午11:52:22
*/
Long hashDeleteHashKey(String key, Object... hashKeys); //================================================List================================================ /**
*TODO 从右向左存压栈
* @param key
* @param value
* ning 创建于 2017年11月8日 下午12:21:06
*/
void listRightPushList(String key, String value); /**
*TODO 从右出栈
* @param key
* @return
* ning 创建于 2017年11月8日 下午12:21:37
*/
String listRightPopList(String key); /**
*TODO 从左向右存压栈
* @param key
* @param value
* ning 创建于 2017年11月8日 下午12:05:25
*/
void listLeftPushList(String key, String value); /**
*TODO 从左出栈
* @param key
* @return
* ning 创建于 2017年11月8日 下午1:56:40
*/
String listLeftPopList(String key); /**
*TODO 集合list的长度
* @param key
* @return
* ning 创建于 2017年11月8日 下午12:08:05
*/
Long listSize(String key); /**
*TODO 查询列表 key 中指定区间内的元素,区间以偏移量 start 和 stop 指定。
* @param key
* @param start
* @param end
* @return
* ning 创建于 2017年11月8日 下午12:09:56
*/
List<String> listRangeList(String key, Long start, Long end); /**
*TODO 移除key中值为value的i个,返回删除的个数;如果没有这个元素则返回0
* @param key
* @param i
* @param value
* @return
* ning 创建于 2017年11月8日 下午12:12:39
*/
Long listRemoveFromList(String key, long i, Object value); /**
*TODO 根据下标查询list中某个值
* @param key
* @param index
* @return
* ning 创建于 2017年11月8日 下午12:13:40
*/
String listIndexFromList(String key, long index); /**
*TODO 根据下标设置value
* @param key
* @param index
* @param value
* ning 创建于 2017年11月8日 下午12:15:28
*/
void listSetValueToList(String key, long index, String value); /**
*TODO 裁剪(删除), 删除 除了[start,end]以外的所有元素
* @param key
* @param start
* @param end
* ning 创建于 2017年11月8日 下午12:17:23
*/
void listTrimByRange(String key, Long start, Long end); //================================================Set================================================ /**
*TODO 将一个或多个 value 元素加入到集合 key 当中,已经存在于集合的 value 元素将被忽略。
* @param key
* @param values
* @return 被添加到集合中的新元素的数量,不包括被忽略的元素。
* ning 创建于 2017年11月8日 下午1:59:05
*/
Long setAddSetMap(String key, String...values); /**
*TODO 获取set集合的大小
* @param key
* @return
* ning 创建于 2017年11月8日 下午2:01:38
*/
Long setGetSizeForSetMap(String key); /**
*TODO 获取set集合中的元素
* @param key
* @return
* ning 创建于 2017年11月8日 下午2:02:40
*/
Set<String> setGetMemberOfSetMap(String key); /**
*TODO 检查元素是不是set集合中的
* @param key
* @param o
* @return
* ning 创建于 2017年11月8日 下午2:03:37
*/
Boolean setCheckIsMemberOfSet(String key, Object o); //================================================String================================================ /**
*TODO 如果 key 已经存在并且是一个字符串, APPEND 命令将 value 追加到 key 原来的值的末尾。
* 如果 key 不存在, APPEND 就简单地将给定 key 设为 value ,就像执行 SET key value 一样。
* @param key
* @param value
* @return 追加 value 之后, key 中字符串的长度
* ning 创建于 2017年11月8日 下午2:14:03
*/
Integer stringAppendString(String key, String value); /**
*TODO 获取指定键的值
* @param key
* @return
* ning 创建于 2017年11月8日 下午2:15:09
*/
String stringGetStringByKey(String key); /**
*TODO 获取存储在键上的字符串的子字符串
* @param key
* @param start
* @param end
* @return 截取后的子字符串
* ning 创建于 2017年11月8日 下午2:16:11
*/
String stringGetSubStringFromString(String key, long start, long end); /**
*TODO 将键的整数值按给定的长整型数值增加
* @param key
* @param delta
* @return 返回增长后的结果值
* ning 创建于 2017年11月8日 下午2:18:00
*/
Long stringIncrementLongString(String key, Long delta); /**
*TODO 将键的整数值按给定的浮点型数值增加
* @param key
* @param delta
* @return 返回增长后的结果值
* ning 创建于 2017年11月8日 下午2:18:24
*/
Double stringIncrementDoubleString(String key, Double delta); /**
*TODO 设置指定键的值
* @param key
* @param value
* ning 创建于 2017年11月8日 下午2:19:28
*/
void stringSetString(String key, String value); /**
*TODO 设置键的字符串值并返回其旧值
* @param key
* @param value
* @return
* ning 创建于 2017年11月8日 下午2:20:07
*/
String stringGetAndSet(String key, String value); /**
*TODO 使用键和到期时间来设置值,时间单位默认为毫秒
* @param key
* @param value
* @param timeout
* @return
* ning 创建于 2017年11月8日 下午2:21:30
*/
void stringSetValueAndExpireTime(String key, String value, long timeout); }
下方为接口实现类代码:
/*
*
* 项目名称 : hospnav
* 创建日期 : 2017年11月8日
* 修改历史 :
* 1. [2017年11月8日]创建文件 by ningjianjian
*/
package com.joysuch.common.service.impl; import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.TimeUnit; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service; import com.joysuch.common.service.RedisTemplateService; /**
* @author ning
* 创建于 2017年11月8日上午10:47:56
* //TODO redis工具接口实现类
*/
@Service("redisTemplateService")
public class RedisTemplateServiceImpl implements RedisTemplateService { @Autowired
private RedisTemplate<String, String> redisTemplate; @Override
public void deleteFromRedis(String key) {
redisTemplate.delete(key);
} @Override
public Boolean hashCheckHxists(String mapName, String field) {
return redisTemplate.opsForHash().hasKey(mapName, field);
} @Override
public Object hashGet(String tableName, String hashKey) {
return redisTemplate.opsForHash().get(tableName, hashKey);
} @Override
public Map<Object, Object> hashGetAll(String key) {
return redisTemplate.opsForHash().entries(key);
} @Override
public Long hashIncrementLongOfHashMap(String hKey, String hashKey, Long delta) {
return redisTemplate.opsForHash().increment(hKey, hashKey, delta);
} @Override
public Double hashIncrementDoubleOfHashMap(String hKey, String hashKey, Double delta) {
return redisTemplate.opsForHash().increment(hKey, hashKey, delta);
} @Override
public void hashPushHashMap(String key, Object hashKey, Object value) {
redisTemplate.opsForHash().put(key, hashKey, value);
} @Override
public Set<Object> hashGetAllHashKey(String key) {
return redisTemplate.opsForHash().keys(key);
} @Override
public Long hashGetHashMapSize(String key) {
return redisTemplate.opsForHash().size(key);
} @Override
public List<Object> hashGetHashAllValues(String key) {
return redisTemplate.opsForHash().values(key);
} @Override
public Long hashDeleteHashKey(String key, Object... hashKeys) {
return redisTemplate.opsForHash().delete(key, hashKeys);
} @Override
public void listLeftPushList(String key, String value) {
redisTemplate.opsForList().leftPush(key, value);
} @Override
public String listLeftPopList(String key) {
return redisTemplate.opsForList().leftPop(key);
} @Override
public Long listSize(String key) {
return redisTemplate.opsForList().size(key);
} @Override
public List<String> listRangeList(String key, Long start, Long end) {
return redisTemplate.opsForList().range(key, start, end);
} @Override
public Long listRemoveFromList(String key, long i, Object value) {
return redisTemplate.opsForList().remove(key, i, value);
} @Override
public String listIndexFromList(String key, long index) {
return redisTemplate.opsForList().index(key, index);
} @Override
public void listSetValueToList(String key, long index, String value) {
redisTemplate.opsForList().set(key, index, value);
} @Override
public void listTrimByRange(String key, Long start, Long end) {
redisTemplate.opsForList().trim(key, start, end);
} @Override
public void listRightPushList(String key, String value) {
redisTemplate.opsForList().rightPush(key, value);
} @Override
public String listRightPopList(String key) {
return redisTemplate.opsForList().rightPop(key);
} @Override
public Long setAddSetMap(String key, String... values) {
return redisTemplate.opsForSet().add(key, values);
} @Override
public Long setGetSizeForSetMap(String key) {
return redisTemplate.opsForSet().size(key);
} @Override
public Set<String> setGetMemberOfSetMap(String key) {
return redisTemplate.opsForSet().members(key);
} @Override
public Boolean setCheckIsMemberOfSet(String key, Object o) {
return redisTemplate.opsForSet().isMember(key, o);
} @Override
public Integer stringAppendString(String key, String value) {
return redisTemplate.opsForValue().append(key, value);
} @Override
public String stringGetStringByKey(String key) {
return redisTemplate.opsForValue().get(key);
} @Override
public String stringGetSubStringFromString(String key, long start, long end) {
return redisTemplate.opsForValue().get(key, start, end);
} @Override
public Long stringIncrementLongString(String key, Long delta) {
return redisTemplate.opsForValue().increment(key, delta);
} @Override
public Double stringIncrementDoubleString(String key, Double delta) {
return redisTemplate.opsForValue().increment(key, delta);
} @Override
public void stringSetString(String key, String value) {
redisTemplate.opsForValue().set(key, value);
} @Override
public String stringGetAndSet(String key, String value) {
return redisTemplate.opsForValue().getAndSet(key, value);
} @Override
public void stringSetValueAndExpireTime(String key, String value, long timeout) {
redisTemplate.opsForValue().set(key, value, timeout, TimeUnit.MILLISECONDS);
} }
欢迎补充和指正!
对RedisTemplate接口二次封装成自定义工具接口的更多相关文章
- 对dispatch_async到主线程的逻辑封装成C/C++接口类型
背景:代码里面有时候会把将要运行的内容放到主线程里面运行,但假设已经是主线程里面的代码调用dispatch_async的时候偶尔会出现crash,所以就须要推断是否已经在主线程里面了. 通常的做法类似 ...
- Angular简易分页设计(二):封装成指令
(首先声明本文来自博客园本人原创,转载请说明出处.欢迎关注:http://www.cnblogs.com/mazhaokeng/) 之前我们讲过,Angular分页代码确实不难实现,但是由于在多个路由 ...
- Navisworks API 简单二次开发 (自定义工具条)
在Navisworks软件运行的时候界面右侧有个工具条.比较方便.但是在二次开发的时候我不知道在Api那里调用.如果有网友知道请告诉我.谢谢. 我用就自己设置一个工具.界面比较丑!没有美工. 代码: ...
- windows下openresty中使用lua做接口转发、二次封装等
需求:根据客户需求,可以在ngx下 通过lua做接口二次封装再次转发给用户或第三方 场景:对返回值有要求的.接口屏蔽字段.或做一些业务上的验证等 1.windows直接下载openresty 解压即可 ...
- 利用Jackson封装常用JsonUtil工具类
在日常的项目开发中,接口与接口之间.前后端之间的数据传输一般都是使用JSON格式,那必然会封装一些常用的Json数据转化的工具类,本文讲解下如何利用Jackson封装高复用性的Json转换工具类. 转 ...
- AJ学IOS 之微博项目实战(12)发送微博自定义工具条代理实现点击事件
AJ分享,必须精品 一:效果 二:封装好的工具条 NYComposeToolbar.h 带代理方法 #import <UIKit/UIKit.h> typedef enum { NYCom ...
- drf序列化高级、自定义只读只写、序列化覆盖字段、二次封装Response、数据库查询优化(断关联)、十大接口、视图家族
目录 自定义只读 自定义只写 序列化覆盖字段 二次封装Response 数据库关系分析 断外键关联关系 ORM操作外键关系 ORM四种关联关系 基表 系列化类其他配置(了解) 十大接口 BaseSer ...
- mybatis二(参数处理和map封装及自定义resultMap)
.单个参数 mybatis不会做特殊处理. #{参数名/任意名}:取出参数值. .多个参数 mybatis会做特殊处理. 多个参数会被封装成 一个map. key:param1...paramN,或者 ...
- 如何将自定义标签封装成一个Jar包
当我们在一个web应用中开发好一些自定义标签的时候,这些自定义标签通常有标签处理器Java类,和一个描述这些标签tld文件,如果我们想在以后别的web工程中还能用上这些标签,可以将这些自定义标签封装在 ...
随机推荐
- Linux 系统的/目录
根目录下的重要目录 目录 应放置档案内容 /bin 系统有很多放置执行档的目录,但/bin比较特殊.因为/bin放置的是在单人维护模式下还能够被操作的指令.在/bin底下的指令可以被root与一般帐号 ...
- 铁乐学Python_day07_集合and浅谈深浅copy
1.[List补充] 在循环一个列表时,最好不要使用元素和索引进行删除操作,一旦删除,索引会随之改变,容易出错. 如果想不出错,可以采用倒着删除的方法,因为倒着删除进行的话,只是后面元素的位置发生了变 ...
- EF CodeFirst示例
新建Web空项目,选择MVC相关基础组件 安装EntityFramework 添加模型和上下文对象 添加包含读写的控制器 点击添加报错 这时需要重新生成项目,然后再试尝试添加控制器,OK 为调试方便, ...
- EBS中比较复杂的trace方法
FND LOG Messages-------------------------a) Using the System Administrator Responsibility, navigate ...
- XtraEditors三、LookUpEdit、GridLookUpEdit、SearchLookUpEdit
https://documentation.devexpress.com/WindowsForms/DevExpress.XtraEditors.LookUpEditBase.class 一.Look ...
- docker学习笔记:简单构建Dockerfile【Docker for Windows】
参考与入门推荐:https://www.cnblogs.com/ECJTUACM-873284962/p/9789130.html#autoid-0-0-9 最近学习docker,写一个简单构建Doc ...
- Result工具类
使用ajax请求访问时,可以用此工具类作为返回对象,也方便统一代码规范 package com.ujia.entity; import java.io.Serializable; public cla ...
- 4-4 R语言函数 tapply
#对向量的子集进行操作 #tapply(参数):tapply(向量,因子/因子列表,函数/函数名) > x <- c(rnorm(5),runif(5),rnorm(5,1)) > ...
- Android Studio3.0 配置AndroidAnnotation注解框架
前言android学习了一段时间后,想要开发一款App,但是一些复杂的代码写多了实在麻烦,就到网上找了找简便的方法,于是在众多的注解开发框架中,找到了Android Annotation这个框架,这里 ...
- weblogic之CVE-2018-3246 XXE分析
通过ftp通道将数据传出来.上传1.xml <!DOCTYPE xmlrootname [<!ENTITY % aaa SYSTEM "http://192.168.172.12 ...