/* * Copyright (c) 2018-2028, DreamLu All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * Neither the name of the dreamlu.net developer nor the names of its * contributors may be used to endorse or promote products derived from * this software without specific prior written permission. * Author: DreamLu 卢春梦 (596392912@qq.com) */ package org.springblade.core.redis.config; import org.springblade.core.jwt.config.JwtRedisConfiguration; import org.springblade.core.redis.cache.BladeRedis; import org.springblade.core.redis.serializer.RedisKeySerializer; import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.cache.annotation.EnableCaching; import org.springframework.context.annotation.Bean; import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.data.redis.core.ValueOperations; import org.springframework.data.redis.serializer.RedisSerializer; /** * RedisTemplate 配置 * * @author L.cm */ @EnableCaching @AutoConfiguration(before = {JwtRedisConfiguration.class, RedisAutoConfiguration.class}) @EnableConfigurationProperties(BladeRedisProperties.class) public class RedisTemplateConfiguration implements BladeRedisSerializerConfigAble { /** * value 值 序列化 * * @return RedisSerializer */ @Bean @ConditionalOnMissingBean(RedisSerializer.class) @Override public RedisSerializer redisSerializer(BladeRedisProperties properties) { return defaultRedisSerializer(properties); } @Bean(name = "redisTemplate") @ConditionalOnMissingBean(name = "redisTemplate") public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory, RedisSerializer redisSerializer) { RedisTemplate redisTemplate = new RedisTemplate<>(); // key 序列化 RedisKeySerializer keySerializer = new RedisKeySerializer(); redisTemplate.setKeySerializer(keySerializer); redisTemplate.setHashKeySerializer(keySerializer); // value 序列化 redisTemplate.setValueSerializer(redisSerializer); redisTemplate.setHashValueSerializer(redisSerializer); redisTemplate.setConnectionFactory(redisConnectionFactory); return redisTemplate; } @Bean @ConditionalOnMissingBean(ValueOperations.class) public ValueOperations valueOperations(RedisTemplate redisTemplate) { return redisTemplate.opsForValue(); } @Bean public BladeRedis bladeRedis(RedisTemplate redisTemplate, StringRedisTemplate stringRedisTemplate) { return new BladeRedis(redisTemplate, stringRedisTemplate); } }