2021年5月11日星期二

RedisTemplate常用方法封装

RedisTemplate常用方法封装

序列化和配置

package com.gitee.ccsert.mall.common.redis.config;import com.faster

接口

package com.gitee.ccsert.mall.common.redis;import org.springframework.data.domain.Sort;import org.springframework.data.geo.Distance;import org.springframework.data.geo.GeoResults;import org.springframework.data.geo.Point;import org.springframework.data.redis.connection.RedisGeoCommands;import java.util.List;import java.util.Map;import java.util.Set;/** * ClassName: RedisService <br/> * Description: redis操作接口 <br/> */public interface RedisService { /**  * 保存属性  *  * @param key key值  * @param value value值  * @param time 时间戳  */ void set(String key, Object value, long time); /**  * 保存属性  *  * @param key key值  * @param value value值  */ void set(String key, Object value); /**  * 获取属性  *  * @param key key值  * @return 返回对象  */ Object get(String key); /**  * 删除属性  *  * @param key key值  * @return 返回成功  */ Boolean del(String key); /**  * 批量删除属性  *  * @param keys key值集合  * @return 返回删除数量  */ Long del(List<String> keys); /**  * 设置过期时间  *  * @param key key值  * @param time 时间戳  * @return 返回成功  */ Boolean expire(String key, long time); /**  * 获取过期时间  *  * @param key key值  * @return 返回时间戳  */ Long getExpire(String key); /**  * 判断key是否存在  *  * @param key key值  * @return 返回  */ Boolean hasKey(String key); /**  * 按delta递增  *  * @param key key值  * @param delta delta值  * @return 返回递增后结果  */ Long incr(String key, long delta); /**  * 按delta递减  *  * @param key key值  * @param delta delta值  * @return 返回递减后结果  */ Long decr(String key, long delta); /**  * 获取Hash结构中的属性  *  * @param key  外部key值  * @param hashKey 内部key值  * @return 返回内部key的value  */ Object hGet(String key, String hashKey); /**  * 向Hash结构中放入一个属性  *  * @param key  外部key  * @param hashKey 内部key  * @param value 内部key的value  * @param time 过期时间  * @return 返回是否成功  */ Boolean hSet(String key, String hashKey, Object value, long time); /**  * 向Hash结构中放入一个属性  *  * @param key  外部key  * @param hashKey 内部key  * @param value 内部key的value  */ void hSet(String key, String hashKey, Object value); /**  * 直接获取整个Hash结构  *  * @param key 外部key值  * @return 返回hashMap  */ Map<Object, Object> hGetAll(String key); /**  * 直接设置整个Hash结构  *  * @param key 外部key  * @param map hashMap值  * @param time 过期时间  * @return 返回是否成功  */ Boolean hSetAll(String key, Map<String, Object> map, long time); /**  * 直接设置整个Hash结构  *  * @param key 外部key  * @param map hashMap值  */ void hSetAll(String key, Map<String, ?> map); /**  * 删除Hash结构中的属性  *  * @param key  外部key值  * @param hashKey 内部key值  */ void hDel(String key, Object... hashKey); /**  * 判断Hash结构中是否有该属性  *  * @param key  外部key  * @param hashKey 内部key  * @return 返回是否存在  */ Boolean hHasKey(String key, String hashKey); /**  * Hash结构中属性递增  *  * @param key  外部key  * @param hashKey 内部key  * @param delta 递增条件  * @return 返回递增后的数据  */ Long hIncr(String key, String hashKey, Long delta); /**  * Hash结构中属性递减  *  * @param key  外部key  * @param hashKey 内部key  * @param delta 递增条件  * @return 返回递减后的数据  */ Long hDecr(String key, String hashKey, Long delta); /**  * 获取Set结构  *  * @param key key  * @return 返回set集合  */ Set<Object> sMembers(String key); /**  * 向Set结构中添加属性  *  * @param key key  * @param values value集  * @return 返回增加数量  */ Long sAdd(String key, Object... values); /**  * 向Set结构中添加属性  *  * @param key key  * @param time 过期时间  * @param values 值集合  * @return 返回添加的数量  */ Long sAdd(String key, long time, Object... values); /**  * 是否为Set中的属性  *  * @param key key  * @param value value  * @return 返回是否存在  */ Boolean sIsMember(String key, Object value); /**  * 获取Set结构的长度  *  * @param key key  * @return 返回长度  */ Long sSize(String key); /**  * 删除Set结构中的属性  *  * @param key key  * @param values value集合  * @return 删除掉的数据量  */ Long sRemove(String key, Object... values); /**  * 获取List结构中的属性  *  * @param key key  * @param start 开始  * @param end 结束  * @return 返回查询的集合  */ List<Object> lRange(String key, long start, long end); /**  * 获取List结构的长度  *  * @param key key  * @return 长度  */ Long lSize(String key); /**  * 根据索引获取List中的属性  *  * @param key key  * @param index 索引  * @return 对象  */ Object lIndex(String key, long index); /**  * 向List结构中添加属性  *  * @param key key  * @param value value  * @return 增加后的长度  */ Long lPush(String key, Object value); /**  * 向List结构中添加属性  *  * @param key key  * @param value value  * @param time 过期时间  * @return 增加后的长度  */ Long lPush(String key, Object value, long time); /**  * 向List结构中批量添加属性  *  * @param key key  * @param values value 集合  * @return 增加后的长度  */ Long lPushAll(String key, Object... values); /**  * 向List结构中批量添加属性  *  * @param key key  * @param time 过期时间  * @param values value集合  * @return 增加后的长度  */ Long lPushAll(String key, Long time, Object... values); /**  * 从List结构中移除属性  *  * @param key key  * @param count 总量  * @param value value  * @return 返回删除后的长度  */ Long lRemove(String key, long count, Object value); /**  * 向bitmap中新增值  *  * @param key key  * @param offset 偏移量  * @param b  状态  * @return 结果  */ Boolean bitAdd(String key, int offset, boolean b); /**  * 从bitmap中获取偏移量的值  *  * @param key key  * @param offset 偏移量  * @return 结果  */ Boolean bitGet(String key, int offset); /**  * 获取bitmap的key值总和  *  * @param key key  * @return 总和  */ Long bitCount(String key); /**  * 获取bitmap范围值  *  * @param key key  * @param limit 范围  * @param offset 开始偏移量  * @return long类型集合  */ List<Long> bitField(String key, int limit, int offset); /**  * 获取所有bitmap  *  * @param key key  * @return 以二进制字节数组返回  */ byte[] bitGetAll(String key); /**  * 增加坐标  *  * @param key key  * @param x x  * @param y y  * @param name 地点名称  * @return 返回结果  */ Long geoAdd(String key, Double x, Double y, String name); /**  * 根据城市名称获取坐标集合  *  * @param key key  * @param place 地点  * @return 坐标集合  */ List<Point> geoGetPointList(String key, Object... place); /**  * 计算两个城市之间的距离  *  * @param key  key  * @param placeOne 地点1  * @param placeTow 地点2  * @return 返回距离  */ Distance geoCalculationDistance(String key, String placeOne, String placeTow); /**  * 获取附该地点附近的其他地点  *  * @param key  key  * @param place 地点  * @param distance 附近的范围  * @param limit 查几条  * @param sort  排序规则  * @return 返回附近的地点集合  */ GeoResults<RedisGeoCommands.GeoLocation<Object>> geoNearByPlace(String key, String place, Distance distance, long limit, Sort.Direction sort); /**  * 获取地点的hash  *  * @param key key  * @param place 地点  * @return 返回集合  */ List<String> geoGetHash(String key, String... place);}

实现

package com.gitee.ccsert.mall.common.redis.impl;import com.gitee.ccsert.mall.common.redis.RedisService;import org.springframework.data.domain.Sort;import org.springframework.data.geo.Distance;import org.springframework.data.geo.GeoResults;import org.springframework.data.geo.Point;import org.springframework.data.redis.connection.BitFieldSubCommands;import org.springframework.data.redis.connection.RedisGeoCommands;import org.springframework.data.redis.core.RedisCallback;import org.springframework.data.redis.core.RedisTemplate;import javax.annotation.Resource;import java.util.List;import java.util.Map;import java.util.Set;import java.util.concurrent.TimeUnit;/** * ClassName: RedisServiceImpl <br/> * Description: redis操作的具体时间类 <br/> */public class RedisServiceImpl implements RedisService { @Resource private RedisTemplate<String, Object> redisTemplate; @Override public void set(String key, Object value, long time) {  redisTemplate.opsForValue().set(key, value, time, TimeUnit.SECONDS); } @Override public void set(String key, Object value) {  redisTemplate.opsForValue().set(key, value); } @Override public Object get(String key) {  return redisTemplate.opsForValue().get(key); } @Override public Boolean del(String key) {  return redisTemplate.delete(key); } @Override public Long del(List<String> keys) {  return redisTemplate.delete(keys); } @Override public Boolean expire(String key, long time) {  return redisTemplate.expire(key, time, TimeUnit.SECONDS); } @Override public Long getExpire(String key) {  return redisTemplate.getExpire(key, TimeUnit.SECONDS); } @Override public Boolean hasKey(String key) {  return redisTemplate.hasKey(key); } @Override public Long incr(String key, long delta) {  return redisTemplate.opsForValue().increment(key, delta); } @Override public Long decr(String key, long delta) {  return redisTemplate.opsForValue().increment(key, -delta); } @Override public Object hGet(String key, String hashKey) {  return redisTemplate.opsForHash().get(key, hashKey); } @Override public Boolean hSet(String key, String hashKey, Object value, long time) {  redisTemplate.opsForHash().put(key, hashKey, value);  return expire(key, time); } @Override public void hSet(String key, String hashKey, Object value) {  redisTemplate.opsForHash().put(key, hashKey, value); } @Override public Map<Object, Object> hGetAll(String key) {  return redisTemplate.opsForHash().entries(key); } @Override public Boolean hSetAll(String key, Map<String, Object> map, long time) {  redisTemplate.opsForHash().putAll(key, map);  return expire(key, time); } @Override public void hSetAll(String key, Map<String, ?> map) {  redisTemplate.opsForHash().putAll(key, map); } @Override public void hDel(String key, Object... hashKey) {  redisTemplate.opsForHash().delete(key, hashKey); } @Override public Boolean hHasKey(String key, String hashKey) {  return redisTemplate.opsForHash().hasKey(key, hashKey); } @Override public Long hIncr(String key, String hashKey, Long delta) {  return redisTemplate.opsForHash().increment(key, hashKey, delta); } @Override public Long hDecr(String key, String hashKey, Long delta) {  return redisTemplate.opsForHash().increment(key, hashKey, -delta); } @Override public Set<Object> sMembers(String key) {  return redisTemplate.opsForSet().members(key); } @Override public Long sAdd(String key, Object... values) {  return redisTemplate.opsForSet().add(key, values); } @Override public Long sAdd(String key, long time, Object... values) {  Long count = redisTemplate.opsForSet().add(key, values);  expire(key, time);  return count; } @Override public Boolean sIsMember(String key, Object value) {  return redisTemplate.opsForSet().isMember(key, value); } @Override public Long sSize(String key) {  return redisTemplate.opsForSet().size(key); } @Override public Long sRemove(String key, Object... values) {  return redisTemplate.opsForSet().remove(key, values); } @Override public List<Object> lRange(String key, long start, long end) {  return redisTemplate.opsForList().range(key, start, end); } @Override public Long lSize(String key) {  return redisTemplate.opsForList().size(key); } @Override public Object lIndex(String key, long index) {  return redisTemplate.opsForList().index(key, index); } @Override public Long lPush(String key, Object value) {  return redisTemplate.opsForList().rightPush(key, value); } @Override public Long lPush(String key, Object value, long time) {  Long index = redisTemplate.opsForList().rightPush(key, value);  expire(key, time);  return index; } @Override public Long lPushAll(String key, Object... values) {  return redisTemplate.opsForList().rightPushAll(key, values); } @Override public Long lPushAll(String key, Long time, Object... values) {  Long count = redisTemplate.opsForList().rightPushAll(key, values);  expire(key, time);  return count; } @Override public Long lRemove(String key, long count, Object value) {  return redisTemplate.opsForList().remove(key, count, value); } @Override public Boolean bitAdd(String key, int offset, boolean b) {  return redisTemplate.opsForValue().setBit(key, offset, b); } @Override public Boolean bitGet(String key, int offset) {  return redisTemplate.opsForValue().getBit(key, offset); } @Override public Long bitCount(String key) {  return redisTemplate.execute((RedisCallback<Long>) con -> con.bitCount(key.getBytes())); } @Override public List<Long> bitField(String key, int limit, int offset) {  return redisTemplate.execute((RedisCallback<List<Long>>) con ->    con.bitField(key.getBytes(),      BitFieldSubCommands.create().get(BitFieldSubCommands.BitFieldType.unsigned(limit)).valueAt(offset))); } @Override public byte[] bitGetAll(String key) {  return redisTemplate.execute((RedisCallback<byte[]>) con -> con.get(key.getBytes())); } @Override public Long geoAdd(String key, Double x, Double y, String name) {  return redisTemplate.opsForGeo().add(key, new Point(x, y), name); } @Override public List<Point> geoGetPointList(String key, Object... place) {  return redisTemplate.opsForGeo().position(key, place); } @Override public Distance geoCalculationDistance(String key, String placeOne, String placeTow) {  return redisTemplate.opsForGeo()    .distance(key, placeOne, placeTow, RedisGeoCommands.DistanceUnit.KILOMETERS); } @Override public GeoResults<RedisGeoCommands.GeoLocation<Object>> geoNearByPlace(String key, String place, Distance distance, long limit, Sort.Direction sort) {  RedisGeoCommands.GeoRadiusCommandArgs args = RedisGeoCommands.GeoRadiusCommandArgs.newGeoRadiusArgs().includeDistance().includeCoordinates();  // 判断排序方式  if (Sort.Direction.ASC == sort) {   args.sortAscending();  } else {   args.sortDescending();  }  args.limit(limit);  return redisTemplate.opsForGeo()    .radius(key, place, distance, args); } @Override public List<String> geoGetHash(String key, String... place) {  return redisTemplate.opsForGeo()    .hash(key, place); }}








原文转载:http://www.shaoqun.com/a/734775.html

跨境电商:https://www.ikjzd.com/

wangwei:https://www.ikjzd.com/w/1744

mein:https://www.ikjzd.com/w/1601


RedisTemplate常用方法封装序列化和配置packagecom.gitee.ccsert.mall.common.redis.config;importcom.faster接口packagecom.gitee.ccsert.mall.common.redis;importorg.springframework.data.domain.Sort;importorg.springframewo
blibli:https://www.ikjzd.com/w/1676
dojo:https://www.ikjzd.com/w/2052
cicpa:https://www.ikjzd.com/w/1375
SD 红人等级划分:https://www.ikjzd.com/tl/5268
(下篇)IPI导致FBA进不了货了怎么办?SFP来救命:https://www.ikjzd.com/home/128487
贸易战热潮下,在岸、离岸人民币兑美元汇率双双跌破"7"关口!:https://www.ikjzd.com/home/103359

没有评论:

发表评论