1.配置文件
#不用 springboot的redisTemplate,所以不用Springboot自身集成的redis配置 redis: host: localhost port: 6379 timeout: 3 passpord: xiaochao poolMaxTotal: 10 poolMaxIdle: 10 poolMaxWait: 3 passport: xiaochao
2.配置项映射类
package com.everjiankang.miaosha.redis; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; import lombok.Data; @Data @Component @ConfigurationProperties("redis") public class RedisConfig { private String host; private String username; private String passport; private int port; private int timeout; private String passpord; private int poolMaxTotal; private int poolMaxIdle; private int poolMaxWait; }
3.配置类
package com.everjiankang.miaosha.config; import java.util.Arrays; import java.util.HashMap; import java.util.Map; import javax.sql.DataSource; import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import com.everjiankang.miaosha.redis.RedisConfig; import redis.clients.jedis.JedisPool; import redis.clients.jedis.JedisPoolConfig; @Configuration public class MyConfig { @Autowired RedisConfig redisConfig; @Bean public JedisPool jedisPoolFactory() { JedisPoolConfig poolConfig = new JedisPoolConfig(); poolConfig.setMaxIdle(redisConfig.getPoolMaxIdle()); poolConfig.setMaxTotal(redisConfig.getPoolMaxTotal()); poolConfig.setMaxWaitMillis(redisConfig.getPoolMaxWait() * 1000); return new JedisPool(poolConfig, redisConfig.getHost(), redisConfig.getPort(), redisConfig.getTimeout(), redisConfig.getPasspord()); } }
package com.everjiankang.miaosha.redis; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.alibaba.fastjson.JSON; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; @Service public class RedisService { @Autowired JedisPool jedisPool; public <T> T get(String key, Class<T> clazz) { Jedis jedis = null; try { jedis = jedisPool.getResource(); String value = jedis.get(key); T t = stringToBean(value,clazz); return t; } finally { returnToPool(jedis); } } public boolean set(String key, Object value) { Jedis jedis = null; try { jedis = jedisPool.getResource(); String str = beanToString(value); if(str == null || str.length() <=0) return false; jedis.set(key,str); return true; } finally { returnToPool(jedis); } } private <T> String beanToString(T value) { if(value == null) return null; Class<?> clazz = value.getClass(); if(clazz == int.class || clazz == Integer.class || clazz == long.class || clazz == Long.class || clazz == float.class || clazz == Float.class || clazz == double.class || clazz == Double.class ) return "" + value; else if(value instanceof String) return (String) value; else return JSON.toJSONString(value); } @SuppressWarnings("unchecked") private <T> T stringToBean(String value,Class<T> clazz) { if(value == null) return null; if(clazz == int.class || clazz == Integer.class) return (T) Integer.valueOf(value); else if( clazz == long.class || clazz == Long.class) return (T) Long.valueOf(value); else if(clazz == float.class || clazz == Float.class) return (T) Float.valueOf(value); else if(clazz == double.class || clazz == Double.class) return (T) Double.valueOf(value); else if(value instanceof String) return (T) value; else return JSON.toJavaObject(JSON.parseObject(value), clazz); } /** * 将Jedis链接还回连接池:详情close方法 * @param jedis */ private void returnToPool(Jedis jedis) { if(jedis != null) jedis.close(); } }
33. Springboot 系列 原生方式引入Redis,非RedisTemplate
原文:https://www.cnblogs.com/guchunchao/p/10637832.html