开发过程中,经常使用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接口二次封装成自定义工具接口的更多相关文章

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

    背景:代码里面有时候会把将要运行的内容放到主线程里面运行,但假设已经是主线程里面的代码调用dispatch_async的时候偶尔会出现crash,所以就须要推断是否已经在主线程里面了. 通常的做法类似 ...

  2. Angular简易分页设计(二):封装成指令

    (首先声明本文来自博客园本人原创,转载请说明出处.欢迎关注:http://www.cnblogs.com/mazhaokeng/) 之前我们讲过,Angular分页代码确实不难实现,但是由于在多个路由 ...

  3. Navisworks API 简单二次开发 (自定义工具条)

    在Navisworks软件运行的时候界面右侧有个工具条.比较方便.但是在二次开发的时候我不知道在Api那里调用.如果有网友知道请告诉我.谢谢. 我用就自己设置一个工具.界面比较丑!没有美工. 代码: ...

  4. windows下openresty中使用lua做接口转发、二次封装等

    需求:根据客户需求,可以在ngx下 通过lua做接口二次封装再次转发给用户或第三方 场景:对返回值有要求的.接口屏蔽字段.或做一些业务上的验证等 1.windows直接下载openresty 解压即可 ...

  5. 利用Jackson封装常用JsonUtil工具类

    在日常的项目开发中,接口与接口之间.前后端之间的数据传输一般都是使用JSON格式,那必然会封装一些常用的Json数据转化的工具类,本文讲解下如何利用Jackson封装高复用性的Json转换工具类. 转 ...

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

    AJ分享,必须精品 一:效果 二:封装好的工具条 NYComposeToolbar.h 带代理方法 #import <UIKit/UIKit.h> typedef enum { NYCom ...

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

    目录 自定义只读 自定义只写 序列化覆盖字段 二次封装Response 数据库关系分析 断外键关联关系 ORM操作外键关系 ORM四种关联关系 基表 系列化类其他配置(了解) 十大接口 BaseSer ...

  8. mybatis二(参数处理和map封装及自定义resultMap)

    .单个参数 mybatis不会做特殊处理. #{参数名/任意名}:取出参数值. .多个参数 mybatis会做特殊处理. 多个参数会被封装成 一个map. key:param1...paramN,或者 ...

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

    当我们在一个web应用中开发好一些自定义标签的时候,这些自定义标签通常有标签处理器Java类,和一个描述这些标签tld文件,如果我们想在以后别的web工程中还能用上这些标签,可以将这些自定义标签封装在 ...

随机推荐

  1. 汽车学习---汽车知识大全【all】

    汽车驱动/发动机/大灯 侧方位停车和倒车入库技巧 手动挡车型 换档8大技巧 常见的掉头情况注意事项 最全的左转,右转,待转,掉头方法 开车技巧大汇总,尤其适合新手司机 汽车常识扫盲,不做“汽车小白”! ...

  2. windows下npm安装vue

    一.使用之前,我们先来掌握3个东西是用来干什么的. npm: Nodejs下的包管理器. webpack: 它主要的用途是通过CommonJS的语法把所有浏览器端需要发布的静态资源做相应的准备,比如资 ...

  3. sql标量函数与表值函数

    标量函数 ),)) returns int as begin return (select UserID from UserInfo where UserName=@UserName and User ...

  4. return 返回值的问题

    def yue(): print("1. 打开手机") print("2. 打开陌陌") print("3. 找个漂亮的小姐姐") prin ...

  5. 从0开始搭建Element项目

    第一步:安装 Node.js/NPM 下载Node.js:https://nodejs.org/zh-cn/download/ 下载安装即可. 第二步:安装 vue-cli 打开 cmd 创建,在命令 ...

  6. Linux 下安装配置 JDK7 配置环境(debian 7)

    自从从Oracle收购Sun近三年来,已经有很多变化.早在8月,甲骨文将“Operating System Distributor License for Java”许可证终结,这意味着第三方将不可以 ...

  7. Echarts 多曲线“断点”问题解决方法

    Echarts 用来做可视化曲线是非常优秀的一个库.建议使用 Echarts 作为项目的可视化图标库时,仔细研究 官方实例,根据需求来选择类似的示例,下载实例模板来开发,节省时间,减少出错,提高效率. ...

  8. swift直接赋值与引用赋值都会触发willSet

    class baseGoo{ var isScannerRunning = false { willSet{ print(newValue) } } var desp:String = "& ...

  9. 【bzoj 4675】 点对游戏

    题目 发现一个人如果最终拿走了\(k\)个点,那么这个人的答案就是 \[\frac{\binom{n-2}{k-2}\sum_{i=1}^{n}\sum_{j=1}^{n}[dis(i,j)\in M ...

  10. 洛谷 P1073 最优贸易

    题目描述 CC C 国有 n n n 个大城市和 m mm 条道路,每条道路连接这 nnn 个城市中的某两个城市.任意两个城市之间最多只有一条道路直接相连.这 mmm 条道路中有一部分为单向通行的道路 ...