spring data redis

来源:互联网 发布:江南大学网络教育专业 编辑:程序博客网 时间:2024/05/19 11:50

Configuration

/** * Created by jiyang on 15:44 2017/12/20 */@Configurationpublic class RedisConfig {    @Value("${redis.host:172.16.0.17}")    private String redisHost;    @Value("${redis.port:6379}")    private int redisPort;    @Value("${chcheRedis.host:172.16.0.17}")    private String cacheRedisHost;    @Value("${chacheRedis.port:6379}")    private int cacheRedisPort;    // 1 创建 JedisPoolConfig    @SuppressWarnings("Duplicates")    @Bean    public JedisPoolConfig jedisPoolConfig(){        JedisPoolConfig poolConfig= new JedisPoolConfig();        poolConfig.setMaxTotal(100);// 最大连接数        poolConfig.setMaxIdle(50);// 最大空闲数        poolConfig.setMaxWaitMillis(1000);//最大建立连接等待时间        return poolConfig;    }    // 2 创建 RedisConnectionFactory    @Bean    @Primary    public RedisConnectionFactory jedisConnectionFactory(){        JedisConnectionFactory jedisConnectionFactory = new JedisConnectionFactory(jedisPoolConfig());        jedisConnectionFactory.setHostName(redisHost);        jedisConnectionFactory.setPort(redisPort);        return jedisConnectionFactory;    }    @Bean(name = "cacheConnectionFactory")    public RedisConnectionFactory cacheConnectionFactory(){        JedisConnectionFactory jedisConnectionFactory = new JedisConnectionFactory(jedisPoolConfig());        jedisConnectionFactory.setHostName(redisHost);        jedisConnectionFactory.setPort(redisPort);        return jedisConnectionFactory;    }    // 3 创建 StringRedisTemplate    @Primary    @Bean    public StringRedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory){        return new StringRedisTemplate(redisConnectionFactory);    }    @Bean(name = "chacheRedis")    public StringRedisTemplate cacheRedisTemplate(@Qualifier("cacheConnectionFactory") RedisConnectionFactory redisConnectionFactory){        return new StringRedisTemplate(redisConnectionFactory);    }    // 4 创建 RedisTemplate    @Bean(name = "cacheRedisForObject")    public RedisTemplate cacheRedisForObject(@Qualifier("cacheConnectionFactory") RedisConnectionFactory redisConnectionFactory){        RedisTemplate redisTemplate = new RedisTemplate();        redisTemplate.setConnectionFactory(redisConnectionFactory);        return redisTemplate;    }    // 5 创建CacheManager    @Bean    public RedisCacheManager cacheManager() {        RedisCacheManager redisCacheManager = new RedisCacheManager(springBootRedisCache(cacheConnectionFactory()));        redisCacheManager.setLoadRemoteCachesOnStartup(true); // 启动时加载远程缓存        redisCacheManager.setUsePrefix(true); // 是否使用前缀生成器        redisCacheManager.setCachePrefix(cacheName -> ("LONGDAI_CACHE_" + cacheName + ":").getBytes());        redisCacheManager.setExpires(CacheConstants.getExpirationMap());        return redisCacheManager;    }    public RedisTemplate<String, Object> springBootRedisCache(@Qualifier("cacheConnectionFatory") RedisConnectionFactory redisConnectionFactory) {        RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();        redisTemplate.setConnectionFactory(redisConnectionFactory);        redisTemplate.setEnableDefaultSerializer(false);        redisTemplate.setKeySerializer(stringRedisSerializer());        redisTemplate.setValueSerializer(genericJackson2JsonRedisJsonSerializer());        redisTemplate.afterPropertiesSet();        return redisTemplate;    }    @Bean    public StringRedisSerializer stringRedisSerializer() {        return new StringRedisSerializer();    }    @Bean    public GenericJackson2JsonRedisSerializer genericJackson2JsonRedisJsonSerializer() {        return new GenericJackson2JsonRedisSerializer();    }    @Bean    public KeyGenerator keyGenerator() {        return (target, method, params) -> {            StringBuilder sb = new StringBuilder();            sb.append(target.getClass().getName());            sb.append("_");            sb.append(method.getName());            sb.append("_");            for (int i = 0; i < params.length; i++) {                sb.append(params[i].toString());                if (i != params.length - 1) {                    sb.append("_");                }            }            return sb.toString();        };    }}
public class CacheConstants {    private CacheConstants() {    }    public static final String CACHE_NAME_TRANSFER_DEBT_LIST = "longdai_front_page_transferDebtsList";    public static final Long TRANSFER_DEBT_LIST_EXPIRATION_TIME_IN_SECONDS = 10 * 60L;    public static final String CACHE_NAME_FUND_PLAN_LIST = "longdai_front_page_fundPlanList";    public static final Long FUND_PLAN_LIST_EXPIRATION_TIME_IN_SECONDS = 10 * 60L;    public static final String CACHE_NAME_FUND_PLAN_DETAIL = "longdai_fund_plan_detail";    public static final Long FUND_PLAN_DETAIL_EXPIRATION_TIME_IN_SECONDS = 10 * 60L;    public static Map<String,Long> getExpirationMap() {        Map<String, Long> expirationMap = new HashMap<>();        expirationMap.put(CACHE_NAME_TRANSFER_DEBT_LIST, TRANSFER_DEBT_LIST_EXPIRATION_TIME_IN_SECONDS);        expirationMap.put(CACHE_NAME_FUND_PLAN_LIST, FUND_PLAN_LIST_EXPIRATION_TIME_IN_SECONDS);        expirationMap.put(CACHE_NAME_FUND_PLAN_DETAIL, FUND_PLAN_DETAIL_EXPIRATION_TIME_IN_SECONDS);        return expirationMap;    }}

TestController.java

/** * Created by jiyang on 16:10 2017/12/15 */@Controller@RequestMapping("/tester")public class TestController {    @Autowired    private CacheRequestService cacheRequestService;    @Autowired    private StringRedisTemplate stringRedisTemplate;    @Value("${message.data.name:2}")    private String name;    @Value("${message.data.password:ps}")    private String password;    @RequestMapping(value = "/vip/upgrade", method = RequestMethod.GET)    @ResponseBody    public Object vipUpgrade() {        cacheRequestService.listUsers();        return this.password;    }    @RequestMapping(value = "/v2", method = RequestMethod.GET)    @ResponseBody    public Object getV() {        return stringRedisTemplate.opsForValue().get("channel_secret_key_00880001");    }}

原创粉丝点击