Redis工具类对各种数据类型的操作
2017-08-17 12:39
375 查看
Redis工具类对string,list,hash,set,zset数据类型的操作。
添加依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>
Redis配置
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cache.annotation.EnableCaching; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.core.*; /** * Created by Administrator on 2017/7/2. * Redis模板配置,缓存配置 */ @Configuration @EnableCaching public class RedisConfig { @Autowired RedisConnectionFactory redisConnectionFactory; /** * 实例化 RedisTemplate 对象 */ @Bean public RedisTemplate<String, Object> functionDomainRedisTemplate() { RedisTemplate<String, Object> redisTemplate = new RedisTemplate<String, Object>(); initDomainRedisTemplate(redisTemplate, redisConnectionFactory); return redisTemplate; } /** * 设置数据存入 redis 的序列化方式 */ private void initDomainRedisTemplate(RedisTemplate<String, Object> redisTemplate, RedisConnectionFactory factory) { /*redisTemplate.setKeySerializer(new StringRedisSerializer()); redisTemplate.setValueSerializer(new JdkSerializationRedisSerializer()); redisTemplate.setHashKeySerializer(new StringRedisSerializer()); redisTemplate.setHashValueSerializer(new Jackson2JsonRedisSerializer(Object.class));*/ redisTemplate.setConnectionFactory(factory); } /** * 实例化 HashOperations 对象,可以使用 Hash 类型操作 */ @Bean public HashOperations<String, String, Object> hashOperations(RedisTemplate<String, Object> redisTemplate) { return redisTemplate.opsForHash(); } /** * 实例化 ValueOperations 对象,可以使用 String 操作 */ @Bean public ValueOperations<String, Object> valueOperations(RedisTemplate<String, Object> redisTemplate) { return redisTemplate.opsForValue(); } /** * 实例化 ListOperations 对象,可以使用 List 操作 */ @Bean public ListOperations<String, Object> listOperations(RedisTemplate<String, Object> redisTemplate) { return redisTemplate.opsForList(); } /** * 实例化 SetOperations 对象,可以使用 Set 操作 */ @Bean public SetOperations<String, Object> setOperations(RedisTemplate<String, Object> redisTemplate) { return redisTemplate.opsForSet(); } /** * 实例化 ZSetOperations 对象,可以使用 ZSet 操作 */ @Bean public ZSetOperations<String, Object> zSetOperations(RedisTemplate<String, Object> redisTemplate) { return redisTemplate.opsForZSet(); } }
Redis操作
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.*; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.List; import java.util.Map; import java.util.Set; import java.util.concurrent.TimeUnit; @Service public class RedisService { @Autowired private RedisTemplate<String, Object> redisTemplate; // HashMap操作 @Resource private HashOperations<String, String, Object> hashOperations; // Object操作 @Resource private ValueOperations<String, Object> valueOperations; // List操作 @Resource private ListOperations<String, Object> listOperations; // set操作 @Resource private SetOperations<String, Object> setOperations; // ZSet操作 @Resource private ZSetOperations<String, Object> zSetOperations; //--------------------------------------------------------------------- // redisTemplate //--------------------------------------------------------------------- /** * 判断key是否存在 * @param key */ public boolean hasKey(String key) { return redisTemplate.hasKey(key); } /** * 删除key * @param key */ public void delete(String key){ redisTemplate.delete(key); } /** * 判断指定key的hashKey是否存在 * @param key * @param hashKey * @return */ public boolean hasKey(String key, String hashKey) { return redisTemplate.opsForHash().hasKey(key, hashKey); } /** * 设置超时时间 * @param key * @param timeout * @param unit */ public void expire(String key, final long timeout, final TimeUnit unit) { redisTemplate.expire(key, timeout, unit); } /** * 获取过期时间 * @param key * @return */ public long ttl(String key){ return redisTemplate.getExpire(key); } /** * 获取指定pattern的key * @param pattern * @return */ public Set<String> keys(String pattern) { return redisTemplate.keys(pattern); } /** * 删除多个key * @param keys */ public void delete(Set<String> keys) { redisTemplate.delete(keys); } /** * 设置过期时间 * @param key * @param expire */ private void setExpire (String key,long expire){ if (expire != -1) { redisTemplate.expire(key, expire, TimeUnit.SECONDS); } } //--------------------------------------------------------------------- // ValueOperations -> Redis String/Value 操作 //--------------------------------------------------------------------- /** * 设置key-value值 */ public void addValue(String key, Object value,long expire){ valueOperations.set(key, value); setExpire(key,expire); } /** * 设置key-value值,传入时间单位 */ public void addValue(String key, Object value,long expire, TimeUnit timeUnit){ valueOperations.set(key, value, expire, timeUnit); } /** * 设置key-value值, 无过期时间 */ public void addValue(String key, Object value){ valueOperations.set(key, value); } /** * 获取key的值 * */ public Object getValue(String key){ return valueOperations.get(key); } //--------------------------------------------------------------------- // HashOperations -> Redis Redis Hash 操作 //--------------------------------------------------------------------- /** * 向redis 中添加内容 * @param key 保存key * @param hashKey hashKey * @param data 保存对象 data * @param expire 过期时间 -1:表示不过期 */ public void addHashValue(String key,String hashKey, Object data, long expire) { hashOperations.put(key, hashKey, data); setExpire(key,expire); } /** * Hash 添加数据 * @param key key * @param map data */ public void addAllHashValue(String key, Map<String, Object> map, long expire) { hashOperations.putAll(key, map); setExpire(key,expire); } /** * 删除hash key * @param key key * @param hashKey hashKey */ public long deleteHashValue(String key, String hashKey) { return hashOperations.delete(key, hashKey); } /** * 获取数据 */ public Object getHashValue(String key, String hashKey) { return hashOperations.get(key, hashKey); } /** * 批量获取数据 */ public List<Object> getHashAllValue(String key) { return hashOperations.values(key); } /** * 批量获取指定hashKey的数据 */ public List<Object> getHashMultiValue(String key, List<String> hashKeys) { return hashOperations.multiGet(key, hashKeys); } /** * 获取hash数量 */ public Long getHashCount(String key) { return hashOperations.size(key); } //--------------------------------------------------------------------- // ZSetOperations -> Redis Sort Set 操作 //--------------------------------------------------------------------- /** * 设置zset值 */ public boolean addZSetValue(String key, Object member, long score){ return zSetOperations.add(key, member, score); } /** * 设置zset值 */ public boolean addZSetValue(String key, Object member, double score){ return zSetOperations.add(key, member, score); } /** * 批量设置zset值 */ public long addBatchZSetValue(String key, Set<ZSetOperations.TypedTuple<Object>> tuples){ return zSetOperations.add(key, tuples); } /** * 自增zset值 */ public void incZSetValue(String key, String member, long delta){ zSetOperations.incrementScore(key, member, delta); } /** * 获取zset数量 */ public long getZSetScore(String key, String member){ Double score = zSetOperations.score(key, member); if(score==null){ return 0; }else{ return score.longValue(); } } /** * 获取有序集 key 中成员 member 的排名 。其中有序集成员按 score 值递减 (从小到大) 排序。 */ public Set<ZSetOperations.TypedTuple<Object>> getZSetRank(String key, long start, long end){ return zSetOperations.rangeWithScores(key, start, end); } //--------------------------------------------------------------------- // listOperations -> Redis List() 操作 //--------------------------------------------------------------------- /** * 添加list列表 */ public void addListValue(String key,Object list){ listOperations.leftPush(key,list); } /** * 获取指定Key对应的list */ public Object getListValue(String key){ return listOperations.leftPop(key); } //--------------------------------------------------------------------- // setOperations -> Redis Set() 操作 //--------------------------------------------------------------------- /** * 添加Set集合集合 */ public void addSetValue(String key,Object list){ setOperations.add(key,list); } /** * 获取指定Key对应的set */ public Object getSetValue(String key){ return setOperations.members(key); } /** * 获取并移除指定key的值 */ public Object popSetValue(String key){ return setOperations.pop(key); } }
相关文章推荐
- redis中各种数据类型对应的jedis操作命令
- redis中各种数据类型对应的jedis操作命令
- redis中各种数据类型对应的jedis操作命令
- redis中各种数据类型对应的jedis操作命令
- redis中各种数据类型对应的jedis操作命令
- redis中各种数据类型对应的jedis操作命令
- redis中各种数据类型对应的jedis操作命令
- redis中各种数据类型对应的jedis操作命令
- redis中各种数据类型对应的jedis操作命令
- redis中各种数据类型对应的jedis操作命令
- redis中各种数据类型对应的jedis操作命令
- Redis各种数据类型操作
- java对redis各种数据类型的基本操作
- redis中各种数据类型对应的jedis操作命令
- redis中各种数据类型对应的jedis操作命令
- java对redis各种数据类型的基本操作
- redis中各种数据类型对应的jedis操作命令
- redis中各种数据类型对应的jedis操作命令
- redis中各种数据类型对应的jedis操作命令、redis命令大全
- Redis各种数据类型的操作