对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 uname命令详解
uname常见命令参数 -a, --all print all information, in the following order, except omit -p and -i if unknow ...
- 4星|《情感驱动》:可口可乐营销VP的案例回顾与经验总结
情感驱动 作者是西班牙人,1963年出生,可口可乐前营销VP. 作者大学是法律专业,毕业后5年,在西班牙开了一个律师事务所,干了1年后去读MBA.1988年进入宝洁工作,1996年跳槽到可口可乐,辗转 ...
- 阿里八八Alapa事后诸葛亮
设想和目标 1.我们的软件要解决什么问题?是否定义的很清楚?是否对典型用户和典型场景有清晰的描述? 我们的项目希望解决用户对于时间.日程管理上不够方便.直观.易丢失的问题,因为并不是新颖高端的概念,因 ...
- 【洛谷】【线段树】P1471 方差
[题目背景:] 滚粗了的HansBug在收拾旧数学书,然而他发现了什么奇妙的东西. [题目描述:] 蒟蒻HansBug在一本数学书里面发现了一个神奇的数列,包含N个实数.他想算算这个数列的平均数和方差 ...
- 【转】 Class.forName()用法及与new区别 详解
平时开发中我们经常会发现:用到Class.forName()方法.为什么要用呢? 下面分析一下: 主要功能Class.forName(xxx.xx.xx)返回的是一个类Class.forName(xx ...
- 【JavaScript】JavaScript(V8)实现输入输出
首先看牛客网的样例:https://www.nowcoder.com/questionTerminal/dae9959d6df7466d9a1f6d70d6a11417 计算a+b的和,每行包行两个整 ...
- django restframework 序列化
Serialization 序列化 创建表 from django.db import models from pygments.lexers import get_all_lexers from p ...
- 【转】Spring Boot干货系列:(六)静态资源和拦截器处理
前言 本章我们来介绍下SpringBoot对静态资源的支持以及很重要的一个类WebMvcConfigurerAdapter. 正文 前面章节我们也有简单介绍过SpringBoot中对静态资源的默认支持 ...
- Kafka设计解析(三)Kafka High Availability (下)
转载自 技术世界,原文链接 Kafka设计解析(三)- Kafka High Availability (下) 摘要 本文在上篇文章基础上,更加深入讲解了Kafka的HA机制,主要阐述了HA相关各种场 ...
- c模拟 页式管理页面置换算法之FIFO
写的操作系统作业.... 放上来给需要的小伙伴 需要注意的地方: 1.该算法只涉及单进程 2.只是用c模拟FIFO的思想 FIFO思想:选择在内存中存活时间最久的页面淘汰 关于该算法我的理解: 一个进 ...