package com.bocom.util; import java.util.Collection; import java.util.Set; import java.util.concurrent.TimeUnit; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.dao.DataAccessException; import org.springframework.data.redis.connection.RedisConnection; import org.springframework.data.redis.core.HashOperations; import org.springframework.data.redis.core.ListOperations; import org.springframework.data.redis.core.RedisCallback; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.SetOperations; import org.springframework.data.redis.core.ValueOperations; import org.springframework.data.redis.core.ZSetOperations; import org.springframework.data.redis.serializer.RedisSerializer; import org.springframework.data.redis.serializer.StringRedisSerializer; import org.springframework.util.CollectionUtils; @Configuration public class RedisUtil { @Autowired private RedisTemplate redisTemplate; public RedisUtil() { } /** * 获取redisTemplate实例 * * @return */ public RedisTemplate getRedisTemplate() { return this.redisTemplate; } /** * 检测是否连接成功 * * @return */ public String ping() { return (String) redisTemplate.execute(new RedisCallback() { @Override public Object doInRedis(RedisConnection redisConnection) throws DataAccessException { return redisConnection.ping(); } }); } /** * 有无key * * @param key * @return */ public boolean hasKey(String key) { return this.redisTemplate.hasKey(key); } /** * 添加key value * * @param key * @param value */ public void set(String key, Object value) { set(key, value, 0l); } /** * 添加key value * 设置存活时间 * * @param key * @param value * @param liveTime */ public void set(String key, Object value, long liveTime) { if (liveTime > 0) this.redisTemplate.opsForValue().set(key, value, liveTime); this.redisTemplate.opsForValue().set(key, value); } /** * 添加key value * 设置存活时间(单位) * * @param key * @param value * @param liveTime * @param unit */ public void set(String key, Object value, long liveTime, TimeUnit unit) { if (liveTime > 0) this.redisTemplate.opsForValue().set(key, value, liveTime, unit); this.redisTemplate.opsForValue().set(key, value); } /** * 通过正则匹配keys * * @param pattern */ public Set patternKeys(String pattern) { Set keys = null; if (StringUtils.isNotEmpty(pattern)) { keys = this.redisTemplate.keys(pattern); } return keys; } /** * 获取值 * * @param key * @return */ public Object get(String key) { return this.redisTemplate.opsForValue().get(key); } /** * 查看redis里有多少数据 * * @return */ public long dbSize() { return (long) redisTemplate.execute(new RedisCallback() { @Override public Object doInRedis(RedisConnection redisConnection) throws DataAccessException { return redisConnection.dbSize(); } }); } /** * 删除key * * @param key */ public void delKey(String key) { this.redisTemplate.delete(key); } /** * 删除key集 * * @param keys */ public void delKeys(Collection keys) { if (keys != null && keys.size() > 0) { this.redisTemplate.delete(keys); } } public void hdel(String key, Object... item){ redisTemplate.opsForHash().delete(key,item); } /** * 清空所有数据 * * @return */ public String flushDB() { return redisTemplate.execute(new RedisCallback() { @Override public Object doInRedis(RedisConnection redisConnection) throws DataAccessException { redisConnection.flushDb(); return "ok"; } }).toString(); } @SuppressWarnings("unchecked") public void del(String ... key){ if(key!=null&&key.length>0){ if(key.length==1){ redisTemplate.delete(key[0]); }else{ redisTemplate.delete(CollectionUtils.arrayToList(key)); } } } /** * 缓存类型 */ public void getOperations() { //String,Object ValueOperations value = redisTemplate.opsForValue(); //hash集合 HashOperations hash = redisTemplate.opsForHash(); //list ListOperations list = redisTemplate.opsForList(); //set SetOperations set = redisTemplate.opsForSet(); //zset有序 ZSetOperations zset = redisTemplate.opsForZSet(); } /** * 解决写入redis缓存时key乱码问题 * @param redisTemplate */ @Autowired(required = false) public void setRedisTemplate(RedisTemplate redisTemplate) { RedisSerializer stringSerializer = new StringRedisSerializer(); redisTemplate.setKeySerializer(stringSerializer); redisTemplate.setValueSerializer(stringSerializer); redisTemplate.setHashKeySerializer(stringSerializer); redisTemplate.setHashValueSerializer(stringSerializer); this.redisTemplate = redisTemplate; } }
基于RedisTemplate的RedisUtil常用类
猜你喜欢
转载自blog.csdn.net/genghongsheng/article/details/82533320
今日推荐
周排行