java封装redis条件查询_Spring Boot整合Redis,并且实现查询操作,以及工具类的封装...

本文介绍了如何在Spring Boot中整合Redis,提供了条件查询的实现,并展示了如何封装Redis工具类,包括设置、获取、删除缓存,以及操作哈希表等方法。
摘要由CSDN通过智能技术生成

@Slf4j

@Component

public class RedisUtils {

@Resource

private RedisConfig redisConfig;

/**

* 根据db获取对应的redisTemplate实例

*

* @param db

* @return redisTemplate实例

*/

public RedisTemplate getRedisTemplateByDb(final int db) {

return redisConfig.setDataBase(db);

}

/**

* 设置缓存

*

* @param key  缓存key

* @param value 缓存value

*/

public void setString(String key, String value, int db) {

RedisTemplate redisTemplate = getRedisTemplateByDb(db);

redisTemplate.opsForValue().set(key, value);

Loger.debug("RedisUtil:set cache key={},value={}", key, value);

}

/**

* 设置缓存,并且自己指定过期时间

*

* @param key

* @param value

* @param expireTime 过期时间

*/

public void setString(String key, String value, int expireTime, int db) {

RedisTemplate redisTemplate = getRedisTemplateByDb(db);

redisTemplate.opsForValue().set(key, value, expireTime, TimeUnit.SECONDS);

Loger.debug("RedisUtil:set cache key={},value={}", key, value, expireTime, TimeUnit.SECONDS);

}

/**

* 设置缓存对象,可指定DB

*

* @param key 缓存key

* @param obj 缓存value

*/

public void setObject(String key, T obj, int db) {

RedisTemplate redisTemplate = getRedisTemplateByDb(db);

redisTemplate.opsForValue().set(key, obj);

}

/**

* 新增hashMap值

*

* @param key

* @param hashKey

* @param hashValue

* @param db

* @return void

* @author Xuyijieing

* @date 2019年10月26日 9:22

*/

public void hashPutString(Serializable key, Serializable hashKey, String hashValue, int db) {

RedisTemplate redisTemplate = getRedisTemplateByDb(db);

HashOperations operations = redisTemplate.opsForHash();

operations.put(key, hashKey, hashValue);

}

/**

* 以map集合的形式添加键值对

*

* @param key

* @param maps

* @param db

* @return void

* @author Sunhj

* @date 2019年10月26日 9:56

*/

public void hashPutAll(String key, Map maps, int db) {

RedisTemplate redisTemplate = getRedisTemplateByDb(db);

HashOperations operations = redisTemplate.opsForHash();

operations.putAll(key, maps);

}

/**

* 获取变量中的键值对

* {key3=value3, key1=value1, key5=value5, key4=value4, key2=value2}

*

* @param db

* @param key

* @return java.util.Map

* @author Xuyijie

* @date 2019年10月26日 8:47

*/

public Map hashGetAll(int db, Serializable key) {

RedisTemplate redisTemplate = getRedisTemplateByDb(db);

return redisTemplate.opsForHash().entries(key);

}

/**

* 判断key是否存在

*

* @param key

* @param db

* @return java.util.Map

* @author Xuyijie

* @date 2019年10月26日 8:47

*/

public Boolean hashHasKey(Serializable key, Serializable hahsKey, int db) {

RedisTemplate redisTemplate = getRedisTemplateByDb(db);

return redisTemplate.opsForHash().hasKey(key, hahsKey);

}

/**

* 获取hash表中存在的所有的键

*

* @param key

* @param db

* @return java.util.List

* @author Sunhj

* @date 2019年10月26日 10:58

*/

public Set hashGetAllHashKeys(Serializable key, int db) {

RedisTemplate redisTemplate = getRedisTemplateByDb(db);

return redisTemplate.opsForHash().keys(key);

}

/**

* 获取hash表中存在的所有的值

*

* @param key

* @param db

* @return java.util.List

* @author Sunhj

* @date 2019年10月26日 10:58

*/

public List hashGetAllHashValues(Serializable key, int db) {

RedisTemplate redisTemplate = getRedisTemplateByDb(db);

return redisTemplate.opsForHash().values(key);

}

/**

* 根据key,hashKey

* 获取hash表中存在的单个值

*

* @param key

* @param db

* @return java.util.List

* @author Sunhj

* @date 2019年10月26日 10:58

*/

public Object hashGetObject(Serializable key, Serializable hashKey, int db) {

RedisTemplate redisTemplate = getRedisTemplateByDb(db);

return redisTemplate.opsForHash().get(key, hashKey);

}

/**

* 删除一个或者多个hash表字段

*

* @param key

* @param db

* @param fields

* @return java.lang.Long

* @author Sunhj

* @date 2019年10月26日 10:15

*/

public Long hashDelete(Serializable key, int db, Serializable... fields) {

RedisTemplate redisTemplate = getRedisTemplateByDb(db);

HashOperations operations = redisTemplate.opsForHash();

return operations.delete(key, (Object) fields);

}

/**

* 删除一个hash表字段

*

* @param key

* @param db

* @param fields

* @return java.lang.Long

* @author Sunhj

* @date 2019年10月26日 10:15

*/

public boolean hashDeleteOne(Serializable key, String fields, int db) {

RedisTemplate redisTemplate = getRedisTemplateByDb(db);

HashOperations operations = redisTemplate.opsForHash();

return operations.delete(key, fields) == 1;

}

/**

* 设置缓存对象

*

* @param key 缓存key

* @param obj 缓存value

*/

public void setObject(String key, T obj, int expireTime, int db) {

RedisTemplate redisTemplate = getRedisTemplateByDb(db);

redisTemplate.opsForValue().set(key, obj, expireTime, TimeUnit.SECONDS);

}

/**

* 获取指定key的缓存

*

* @param key---JSON.parseObject(value, User.class);

*/

public Object getObject(String key, int db) {

RedisTemplate redisTemplate = getRedisTemplateByDb(db);

return redisTemplate.opsForValue().get(key);

}

/**

* 获取指定key的缓存

*

* @param key---JSON.parseObject(value, User.class);

*/

public Object getKeys(String key, int db) {

RedisTemplate redisTemplate = getRedisTemplateByDb(db);

return redisTemplate.opsForValue().getOperations().keys(key);

}

/**

* 判断当前key值 是否存在

*

* @param key

*/

public boolean hasKey(String key, int db) {

RedisTemplate redisTemplate = getRedisTemplateByDb(db);

return redisTemplate.hasKey(key);

}

/**

* 获取指定key的缓存

*

* @param key

*/

public String getString(String key, int db) {

RedisTemplate redisTemplate = getRedisTemplateByDb(db);

String value = (String) redisTemplate.opsForValue().get(key);

Loger.debug("RedisUtil:get cache key={},value={}", key, value);

return value;

}

/**

* 删除指定key的缓存

*

* @param key

*/

public boolean delete(String key, int db) {

RedisTemplate redisTemplate = getRedisTemplateByDb(db);

return redisTemplate.delete(key);

}

/**

* @param key

* @throws

* @Title: expire

* @Description: 更新key的失效时间

*/

public Boolean expire(String key, int seconds, int db) {

RedisTemplate redisTemplate = getRedisTemplateByDb(db);

Loger.debug("RedisUtil:expire cache key={}", key);

return redisTemplate.expire(key, seconds, TimeUnit.SECONDS);

}

/**

* 移除并获取列表中第一个元素

*

* @param key

* @param db

* @return void

* @author sunhj

* @date 2019年10月26日 14:35

*/

public String listLeftPop(Serializable key, int db) {

RedisTemplate redisTemplate = getRedisTemplateByDb(db);

Object leftPop = redisTemplate.opsForList().leftPop(key);

if (leftPop == null) {

return null;

}

return JSON.toJSONString(leftPop);

}

/**

* 移除并获取列表最后一个元素

*

* @param key

* @param db

* @return java.lang.Object

* @author sunhj

* @date 2019年10月26日 14:40

*/

public String listRightPop(Serializable key, int db) {

RedisTemplate redisTemplate = getRedisTemplateByDb(db);

ListOperations operations = redisTemplate.opsForList();

Object x = operations.rightPop(key);

if (x == null) {

return null;

}

return JSON.toJSONString(x);

}

/**

* 获取变量中的指定map键是否有值,如果存在该map键则获取值,没有则返回null。

*

* @param key

* @param field

* @param db

* @return T

* @author Sunhj

* @date 2019年10月26日 8:41

*/

public T hashGet(Serializable key, Serializable field, Class t, int db) {

try {

RedisTemplate redisTemplate = getRedisTemplateByDb(db);

HashOperations operations = redisTemplate.opsForHash();

//String x = Objects.requireNonNull(operations.get(key, field)).toString();

//T y = JSON.parseObject(Objects.requireNonNull(operations.get(key, field)).toString(), t);

//T y = JSON.parseObject(x , t);

return JSON.parseObject(Objects.requireNonNull(operations.get(key, field)).toString(), t);

} catch (Exception e) {

return null;

}

}

/**

* 获取变量中的指定map键是否有值,如果存在该map键则获取值(String格式),没有则返回null。

*

* @param key

* @param field

* @param db

* @return T

* @author Sunhj

* @date 2019年10月26日 8:41

*/

public String hashGetString(Serializable key, Serializable field, int db) {

RedisTemplate redisTemplate = getRedisTemplateByDb(db);

HashOperations operations = redisTemplate.opsForHash();

try {

Serializable serializable = operations.get(key, field);

if (serializable != null) {

return serializable.toString();

}

return null;

} catch (Exception e) {

Loger.error("hashGetString方法异常", e);

return null;

}

}

/**

* 获取变量中的键值对 ??

*

* @param key

* @param db

* @return java.util.Map

* @author Sunhj

* @date 2019年10月26日 8:47

*/

public Map hashGetAll(Serializable key, Class t, int db) {

RedisTemplate redisTemplate = getRedisTemplateByDb(db);

HashOperations operations = redisTemplate.opsForHash();

Map x = operations.entries(key);

Map map = new HashMap<>();

try {

for (Serializable xa : x.keySet()) {

String keyValue = x.get(xa).toString();

map.put(xa.toString(), JSON.parseObject(keyValue, t));

}

return map;

} catch (Exception e) {

return null;

}

}

/**

* 新增hashMap值

*

* @param key

* @param hashKey

* @param hashValue

* @param db

* @return void

* @author Sunhj

* @date 2019年10月26日 9:22

*/

public boolean hashPut(Serializable key, Serializable hashKey, T hashValue, int db) {

RedisTemplate redisTemplate = getRedisTemplateByDb(db);

HashOperations operations = redisTemplate.opsForHash();

operations.put(key, hashKey, JSON.toJSONString(hashValue, SerializerFeature.WriteMapNullValue));

return true;

}

/**

* 查看hash表中指定字段是否存在

*

* @param key

* @param field

* @param db

* @return boolean

* @author Sunhj

* @date 2019年10月26日 10:32

*/

public boolean hashExists(Serializable key, Serializable field, int db) {

RedisTemplate redisTemplate = getRedisTemplateByDb(db);

HashOperations operations = redisTemplate.opsForHash();

return operations.hasKey(key, field);

}

/**

* 存储在list的头部,即添加一个就把它放在最前面的索引处

*

* @param key

* @param value

* @param db

* @return java.lang.Long

* @author sunhj

* @date 2019年10月26日 14:03

*/

public Long listLeftPush(Serializable key, Serializable value, int db) {

RedisTemplate redisTemplate = getRedisTemplateByDb(db);

ListOperations operations = redisTemplate.opsForList();

return operations.leftPush(key, value);

}

/**

* 获取所有的KEY

*

* @param key

*/

public List getHashKeys(String key, int db) {

RedisTemplate redisTemplate = getRedisTemplateByDb(db);

List values = redisTemplate.opsForHash().values(key);

return values;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
>