对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 系统的网络配置文件
系统的网络配置文件 方式一: 界面操作 setup -->界面配置网络,网关等 方式二: 修改配置文件 # 修改配置 vim /etc/sysconfig/network-scripts/ifc ...
- CVE-2013-2551漏洞成因与利用分析(ISCC2014 PWN6)
CVE-2013-2551漏洞成因与利用分析 1. 简介 VUPEN在Pwn2Own2013上利用此漏洞攻破了Win8+IE10,5月22日VUPEN在其博客上公布了漏洞的细节.它是一个ORG数组整数 ...
- 所有文章的测试Demo
Mqtt C++ Client 测试Demo https://pan.baidu.com/s/1Ue00GYv2SUd8aTquhvOW1w
- wrap装饰器包
import wrapt # without argument in decorator @wrapt.decorator def logging(wrapped, instance, args, k ...
- bin/hdfs dfs命令
appendToFile Usage: hdfs dfs -appendToFile <localsrc> ... <dst> 追加一个或者多个文件到hdfs制定文件中.也可以 ...
- 查看oracle数据库版本
1. 登录sysdba用户 sqlplus / as sysdba 2. 方法一:v$version SQL> select * from v$version; 3. 方法二:product_ ...
- adb shell 运行时报错"adb server version (26) doesn't match this client (39); killing..."的解决方案
adb即 Android Debug Bridge 是一个通用的命令行工具,可用于通过PC端对连接的Android模拟器设备或连接至电脑的真实物理设备进行命令行操作.目前,许多软件均会借助 adb 工 ...
- Android 4.4中AudioRecord用例 - 录制系统内置声音
通过API 19新加的MediaRecorder.AudioSource.REMOTE_SUBMIX參数能够让系统App录制系统内置的声音,也就是扬声器的声音.以下是一个巨简单的样例来演示样例怎样通过 ...
- Anaconda 安装和使用
最近看了些关于数据分析的书,想系统的整理下相关知识,算是学习笔记吧,也希望能帮到初学者. 1.Anaconda介绍 安装python的方法有很多种,数据分析方面比较常用Anaconda.Anacond ...
- 3223. 文艺平衡树【平衡树-splay】
Description 您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作:翻转一个区间,例如原有序序列是5 4 3 2 1,翻转区间是[2,4]的话,结果是5 2 3 ...