redis:spring-data-redis
来源:互联网 发布:音乐简谱制作软件 编辑:程序博客网 时间:2024/05/16 15:21
首先需要安装redis:
下载地址:https://github.com/MSOpenTech/redis/releases
完成后,开始写代码:
使用注解的方式进行配置
@Configuration@EnableWebMvc@ComponentScan(basePackages = {"xx.redis"})@PropertySource({"classpath:jedis.properties"}) public class ApplicationConfig extends WebMvcConfigurerAdapter { @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/resources/**").addResourceLocations("/resources/"); } @Override public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) { configurer.enable(); } @Autowired private Environment env; @Bean public Gson gson(){ return new Gson(); } @Bean public JedisPoolConfig poolConfig(){ Integer maxIdle = getIntValueFromEnv("jedis.maxIdle"); Integer maxTotal = getIntValueFromEnv("jedis.maxTotal"); Long maxWaitMillis = getLongValueFromEnv("jedis.maxWaitMillis"); Boolean testOnBorrow = getBooleanValueFromEnv("jedis.testOnBorrow"); JedisPoolConfig jedisPoolConfig = new JedisPoolConfig(); jedisPoolConfig.setMaxIdle(maxIdle == null ? JedisPoolConfig.DEFAULT_MAX_IDLE : maxIdle); jedisPoolConfig.setMaxTotal(maxTotal == null ? JedisPoolConfig.DEFAULT_MAX_TOTAL : maxTotal); jedisPoolConfig.setMaxWaitMillis(maxWaitMillis == null ? JedisPoolConfig.DEFAULT_MAX_WAIT_MILLIS : maxWaitMillis); jedisPoolConfig.setTestOnBorrow(testOnBorrow == null ? JedisPoolConfig.DEFAULT_TEST_ON_BORROW : testOnBorrow); return jedisPoolConfig; } @Bean public JedisConnectionFactory connectionFactory(){ JedisConnectionFactory jedisConnectionFactory = new JedisConnectionFactory(poolConfig()); String hostName = getStringValueFromEnv("jedis.host"); System.out.println("hostName:"+hostName); Integer port = getIntValueFromEnv("jedis.port"); String password = getStringValueFromEnv("jedis.password"); jedisConnectionFactory.setHostName(hostName); if(port != null) jedisConnectionFactory.setPort(port); if(port != null) jedisConnectionFactory.setPassword(password == null ? "" : password); return jedisConnectionFactory; } @Bean public StringRedisSerializer stringRedisSerializer(){ return new StringRedisSerializer(); } @SuppressWarnings({ "rawtypes", "unchecked" }) @Bean public RedisTemplate redisTemplate(){ RedisTemplate redisTemplate = new RedisTemplate<>(); redisTemplate.setConnectionFactory(connectionFactory()); redisTemplate.setKeySerializer(stringRedisSerializer()); redisTemplate.setEnableTransactionSupport(true); return redisTemplate; } private String getStringValueFromEnv(String key) { return env.getProperty(key) == null ? null : String.valueOf(env.getProperty(key)); } private Long getLongValueFromEnv(String key) { return env.getProperty(key) == null ? null : Long.valueOf(env.getProperty(key)); } private Boolean getBooleanValueFromEnv(String key) { return env.getProperty(key) == null ? null : Boolean.valueOf(env.getProperty(key)); } public Integer getIntValueFromEnv(String key){ return env.getProperty(key) == null ? null : Integer.valueOf(env.getProperty(key)); }}
jedis.properties:
#jedis configjedis.testOnBorrow=truejedis.host = 192.168.81.58
Util:
package xx.redis;import java.util.List;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.data.redis.core.RedisTemplate;import org.springframework.stereotype.Component;@Component("listOps")public class ListOps { @Autowired private RedisTemplate<String, String> redisTemplate; /** * 压栈 * * @param key * @param value * @return */ public Long push(String key, String value) { return redisTemplate.opsForList().leftPush(key, value); } /** * 出栈 * * @param key * @return */ public String pop(String key) { return redisTemplate.opsForList().leftPop(key); } /** * 入队 * * @param key * @param value * @return */ public Long in(String key, String value) { return redisTemplate.opsForList().rightPush(key, value); } /** * 出队 * * @param key * @return */ public String out(String key) { return redisTemplate.opsForList().leftPop(key); } /** * 栈/队列长 * * @param key * @return */ public Long length(String key) { return redisTemplate.opsForList().size(key); } /** * 范围检索 * * @param key * @param start * @param end * @return */ public List<String> range(String key, int start, int end) { return redisTemplate.opsForList().range(key, start, end); } /** * 移除 * * @param key * @param i * @param value */ public void remove(String key, long i, String value) { redisTemplate.opsForList().remove(key, i, value); } /** * 检索 * * @param key * @param index * @return */ public String index(String key, long index) { return redisTemplate.opsForList().index(key, index); } /** * 置值 * * @param key * @param index * @param value */ public void set(String key, long index, String value) { redisTemplate.opsForList().set(key, index, value); } /** * 裁剪 * * @param key * @param start * @param end */ public void trim(String key, long start, int end) { redisTemplate.opsForList().trim(key, start, end); }}package xx.redis;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Component;import com.google.gson.Gson;@Component("seriazileUtil")public class SeriazileUtil { @Autowired private Gson gson; public String seriazileAsString(Object object){ if(object == null){ return null; } return gson.toJson(object); } public <T> T deserializeAsObject(String json, Class<T> clazz){ if(json == null || clazz == null){ return null; } return gson.fromJson(json, clazz); }}
测试:
@Override public List<Teacher> listTeachers() { String key = "allTeacherCache"; Long length = listOps.length(key); if(length != 0){ List<String> teacherStringS = listOps.range(key, 0, Integer.valueOf(length.toString())); return jsonsToTeachers(teacherStringS); } List<Teacher> teachers = getAllTeachers(); setTeachersCache(teachers, key); return teachers; } private void setTeachersCache(List<Teacher> teachers, String key) { teachers.stream().forEach(teacher->listOps.push(key, seriazileUtil.seriazileAsString(teacher))); } private List<Teacher> jsonsToTeachers(List<String> json){ return json.stream().map(teacherStr->{ return seriazileUtil.deserializeAsObject(teacherStr, Teacher.class); }).collect(Collectors.toList()); }
0 0
- redis:spring-data-redis
- redis Jredis spring-data-redis
- spring data redis 操作redis
- Spring Data Redis (Redis Support)
- Spring Data Redis(Redis Transactions)
- Spring Data Redis(Redis Scripting)
- Spring Data Redis(Redis Cluster)
- Spring Data Redis(Redis Repositories)
- spring data redis 操作redis
- java+redis;spring-data-redis+redis
- SPRING DATA - REDIS配置
- spring data redis试用
- SPRING DATA - REDIS配置
- SPRING DATA - REDIS配置
- Spring-Data-Redis特性
- Spring Data Redis
- spring-data-redis 使用
- spring-data集成redis
- MFC CDC绘制直线 折现 椭圆 ...
- 在做自动化测试之前你需要知道的
- 学三维动画要用数位板吗?
- iOS之PCH文件的使用
- DataBinding快速入门(还在用findViewById?)
- redis:spring-data-redis
- 算法学习之- 动态规划
- NKUOJ 1004题 糖葫芦游戏
- 安装Centos 6后的网络配置
- 添加tomcat为启动服务/删除tomcat服务
- mac下安装和使用brew
- android&java 正则表达式
- MVC和MVP两种框架设计模式
- Spring框架知识要点总结(第一天)