对RedisTemplate接口二次封装成自定义工具接口
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对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 }
欢迎补充和指正!
以上是关于对RedisTemplate接口二次封装成自定义工具接口的主要内容,如果未能解决你的问题,请参考以下文章