基于RedisTemplate的redis工具类
来源:互联网 发布:知乎华为mate10 编辑:程序博客网 时间:2024/06/08 10:43
RedisTempla是一个spring-redis模块下的操作redis的工具类,有点类似于jdbcTemplate。
但是操作起来略显麻烦,于是封装一个稍微简单点的redis工具类,直接上代码:
import org.springframework.data.redis.core.RedisTemplate;import org.springframework.data.redis.core.StringRedisTemplate;import org.springframework.data.redis.core.ValueOperations;import java.util.Set;import java.util.concurrent.TimeUnit;@SuppressWarnings("unchecked")public class RedisUtil { private RedisTemplate<String, Object> redisTemplate; private StringRedisTemplate stringRedisTemplate; private String namespace = "work:"; public void setRedisTemplate(RedisTemplate<String, Object> redisTemplate) { this.redisTemplate = redisTemplate; } public void setStringRedisTemplate(StringRedisTemplate stringRedisTemplate) { this.stringRedisTemplate = stringRedisTemplate; } public void setNamespace(String namespace) { if (namespace != null) this.namespace = namespace + ":"; } public void set(String k, Object v, long time) { String key = namespace + k; if (v instanceof String && stringRedisTemplate != null) { stringRedisTemplate.opsForValue().set(key, (String) v); } else { redisTemplate.opsForValue().set(key, v); } if (time > 0) redisTemplate.expire(key, time, TimeUnit.SECONDS); } public void set(String k, Object v) { set(k, v, -1); } public boolean contains(String key) { return redisTemplate.hasKey(namespace + key); } public String get(String k) { if (stringRedisTemplate != null) { return stringRedisTemplate.opsForValue().get(namespace + k); } else { return (String) redisTemplate.opsForValue().get(namespace + k); } } public <T> T getObject(String k) { ValueOperations<String, Object> valueOps = redisTemplate.opsForValue(); return (T) valueOps.get(namespace + k); } public void remove(String key) { redisTemplate.delete(namespace + key); } public long getExpire(String key) { return redisTemplate.getExpire(key); } public Set<String> keys(String pattern) { return redisTemplate.keys(namespace + pattern); } public Long increment(String key, long delta) { return redisTemplate.opsForValue().increment(namespace + key, delta); } public Double increment(String key, double delta) { return redisTemplate.opsForValue().increment(namespace + key, delta); }}
spring boot的配置:
@Bean public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) { RedisTemplate<String, Object> template = new RedisTemplate<>(); template.setConnectionFactory(factory); Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class); RedisSerializer<String> stringSerializer = new StringRedisSerializer(); ObjectMapper om = new ObjectMapper(); om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); jackson2JsonRedisSerializer.setObjectMapper(om); template.setValueSerializer(jackson2JsonRedisSerializer); template.setKeySerializer(stringSerializer); template.afterPropertiesSet(); return template; } @Bean public StringRedisTemplate stringRedisTemplate(RedisConnectionFactory factory) { StringRedisTemplate template = new StringRedisTemplate(factory); RedisSerializer<String> stringSerializer = new StringRedisSerializer(); template.setKeySerializer(stringSerializer); template.setValueSerializer(stringSerializer); template.setHashKeySerializer(stringSerializer); template.setKeySerializer(stringSerializer); template.afterPropertiesSet(); return template; } @Bean public RedisUtil redisUtil(RedisTemplate<String, Object> redisTemplate, StringRedisTemplate stringRedisTemplate) { RedisUtil redisUtil = new RedisUtil(); redisUtil.setRedisTemplate(redisTemplate); redisUtil.setStringRedisTemplate(stringRedisTemplate); redisUtil.setNamespace("xxx"); return redisUtil; }
调用:
@Autowiredprivate RedisUtil redisUtil;redisUtil.set("test", "abc");redisUtil.get("test");User user = new User();user.setId(1L);user.setName("Eric");redisUtil.set("user", user );User user1 = redisUtil.getObject("user");
阅读全文
0 0
- 基于RedisTemplate的redis工具类
- 使用RedisTemplate进行Redis存取的工具类设计
- 基于spring的redisTemplate的缓存工具类
- 基于spring的redisTemplate的缓存工具类
- redis整合spring(redisTemplate工具类)
- redis整合spring(redisTemplate工具类)
- redis整合spring(redisTemplate工具类)
- Redis使用二、redis整合spring(redisTemplate工具类)
- 使用RedisTemplate的操作类访问Redis
- 基于Spring的 Redis工具类
- spring与redis整合,redisTemplate的使用
- Spring-Data-Redis之RedisTemplate的使用
- Spring Data Redis(RedisTemplate的使用)
- Spring-Data-Redis之RedisTemplate的使用
- 深入理解Spring Redis的使用 (三)、使用RedisTemplate的操作类访问Redis
- 深入理解Spring Redis的使用 (三)、使用RedisTemplate的操作类访问Redis
- 基于Java的redis客户端jedis管理类 工具类
- Redis缓存(RedisTemplate)
- 【c++11 新特性应用】利用bind实现通用的混合任务线程池
- jQuery Ajax 实例
- eclipse-Servlet
- ambari-server安装(ubuntu、deepin、debian通用)
- 引入不了<%@taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>标签库的问题
- 基于RedisTemplate的redis工具类
- Linux系统编程——进程和线程的区别与联系
- C++中set按降序排列方法。
- Android Studio学习之导入第三方开源库详解
- OpenWRT自定义固件,做自己的私人固件
- servlet基础知识2
- 使用Clion调试fastText源代码
- delphi 安装ICS
- 使用jdbc读取数据到页面