Springboot2.X中使用Redis


  使用redis之前,首先要安裝redis服務,確保服務正常啟動,redis-cli客戶端能連接上。springboot集成redis上手快,簡單幾步就可以搞定。

  首先,引入springboot集成redis的依賴:

springboot集成redis依賴坐標:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>

  其次,在項目的配置文件中配置redis:

redis:
    host: IP地址
    port: 6379
    timeout: 60s
    database: 1
    pool:
      max-active: 100
      max-idle: 10
      max-wait: 100000

  此處配置根據自身實際情況配置,在安裝redis如果不是使用默認配置,可根據自己修改的內容進行配置。在springboot項目中使用RedisTemplate就可使用。

@Autowired
    private RedisTemplate redisTemplate;

  但是這個調用的是redis自帶的RedisTemplate,redistemplate默認key-value都是object類型,使用時都需要序列化使用,然而我們在開發過程中使用的多是key:String、value:object的類型,所以我們可以自己寫個配置類,自定義RedisTemplate模板:

@Configuration
public class RedisConfig {
	@SuppressWarnings("all")
	public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
	// 我們為了自己開發方便,一般直接使用 <String, Object>
	RedisTemplate<String, Object> template = new RedisTemplate<String, Object>();
	template.setConnectionFactory(factory);
	// Json序列化配置
	Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
	ObjectMapper om = new ObjectMapper();
	om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
	om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
	jackson2JsonRedisSerializer.setObjectMapper(om);
	// String 的序列化
	StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
	// key采用String的序列化方式
	template.setKeySerializer(stringRedisSerializer);
	// hash的key也采用String的序列化方式
	template.setHashKeySerializer(stringRedisSerializer);
	// value序列化方式采用jackson
	template.setValueSerializer(jackson2JsonRedisSerializer);
	// hash的value序列化方式采用jackson
	template.setHashValueSerializer(jackson2JsonRedisSerializer);
	template.afterPropertiesSet();
	return template;
	}
}

  為了更加方便,我們還可以自己寫個Redis工具類:

@Slf4j
@Component
public class RedisUtil {
	@Autowired
	private RedisTemplate redisTemplate;

	/**
	 * SET操作
	 *
	 * @param key   KEY
	 * @param value VALUE
	 * @return 是否成功
	 */
	public boolean set(String key, String value) {
		try {
			redisTemplate.opsForValue().set(key, value);
			return true;
		} catch (Exception e) {
			log.error("redis set操作異常:" + e.getMessage());
			return false;
		}
	}

	/**
	 * GET操作
	 *
	 * @param key KEY
	 * @return VALUE
	 */
	public String get(String key) {
		try {
			String value = redisTemplate.opsForValue().get(key);
			return value;
		} catch (Exception e) {
			log.error("redis get操作異常:" + e.getMessage());
			return null;
		}
	}
}

  使用示例:

@Slf4j
@Service
public class getTokenServiceImpl implements GetTokenService {
	@Autowired
	private RedisUtil redis;

	@Value("${xzqdm}")
	private String xzqdm;

	@Value("${ausername}")
	private String ausername;

	@Value("${password}")
	private String password;

	@Value("${url.getToken}")
	private String urlGetToken;

	@Override
	public ResTokenMes getToken() throws IOException {
		HttpClientUtil https= new HttpClientUtil();
		GetHeadMes headMes = new GetHeadMes();
		........................此處省略若干代碼
		String result = https.sendHttpClient(url, tokenmap);
		ResTokenMes resTokenMes = JSONUtil.toBean(JSONUtil.toJsonStr(result), ResTokenMes.class);
		String token = resTokenMes.getData().getToken();
		redis.set("token", token);
		return resTokenMes;
	}
}



@Slf4j
@Service
public class PushServiceImpl implements PushService {

	@Autowired
	private RedisUtil redis;

	@Autowired
	InfoMapper infoMapper;

	@Autowired
	@Qualifier("batchKafkaTemplate")
	private KafkaTemplate<Object, Object> batchKafkaTemplate;

	@Value("${kafka.topic.batch}")
	private String topic;

	@Value("${xzqdm}")
	private String xzqdm;

	@Value("${url.postXF}")
	private String urlPostXF;

	@Value("${url.postFK}")
	private String urlPostFK;

	@Override
	public R getApply() {
		//獲取token
		String token = redis.get("token");
                ....................此處省略若干代碼
        }
}        

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM