如何在springboot中對redis進(jìn)行配置?針對這個問題,這篇文章詳細(xì)介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、成都微信小程序、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了柯坪免費(fèi)建站歡迎大家使用!
需要使用的三個主要jar包:
redis.clients jedis 2.9.0 org.springframework.data spring-data-redis org.springframework.boot spring-boot-configuration-processor true
使用spring-boot-configuration-processor包主要是用來配置加載文件
package com.zs.springboot.config.redis; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; /** * @Company * @Author Zs * 將這個類作為spring的一個組件,添加@ConfigurationProperties(prefix = "spring.redis")注解,就會默認(rèn)從application.properties * 文件中加載前綴為spring.redis的配置信息,配置文件中的配置字段與該類中的屬性一致,通過setter方法來設(shè)值 * @Date Create in 2019/8/30 **/ @Component @ConfigurationProperties(prefix = "spring.redis") public class RedisProperties { private String ip; private Integer[] ports; private Integer maxActive; private Integer maxWait; private Integer expire; public String getIp() { return ip; } public void setIp(String ip) { this.ip = ip; } public Integer[] getPorts() { return ports; } public void setPorts(Integer[] ports) { this.ports = ports; } public Integer getMaxActive() { return maxActive; } public void setMaxActive(Integer maxActive) { this.maxActive = maxActive; } public Integer getMaxWait() { return maxWait; } public void setMaxWait(Integer maxWait) { this.maxWait = maxWait; } public Integer getExpire() { return expire; } public void setExpire(Integer expire) { this.expire = expire; } }
在application中配置redis:
然后配置redis的配置類,使用jdisCluster來操作redis:
package com.zs.springboot.config.redis; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import redis.clients.jedis.HostAndPort; import redis.clients.jedis.JedisCluster; import java.util.HashSet; import java.util.Set; /** * @Company * @Author Zs * @Date Create in 2019/8/30 **/ @Configuration public class RedisConfiguration { private RedisProperties redisProperties; public RedisConfiguration(RedisProperties redisProperties) { this.redisProperties = redisProperties; } @Bean public JedisCluster jedisCluster() { Integer[] ports = redisProperties.getPorts(); String host = redisProperties.getIp(); SethostAndPortSet = new HashSet<>(); for (Integer port : ports) { hostAndPortSet.add(new HostAndPort(host, port)); } return new JedisCluster(hostAndPortSet, redisProperties.getMaxActive(), redisProperties.getMaxWait()); } }
編輯redis的增刪該方法:
/** * @Company * @Author Zs * @Date Create in 2019/8/28 **/ @Service public class RedisService { @Autowired private JedisCluster jedisCluster; private static final String SET_SUCCESS = "OK"; /** * 添加string數(shù)據(jù),成功返回code:200,失敗code:404 * @param key * @param value * @return */ public Mapset(String key, Object value) { Map map = new HashMap<>(); String result = jedisCluster.set(key, JsonUtil.toJsonString(value)); if (SET_SUCCESS.equals(result)) { map.put(Status.SUCCESS.getCodeName(), Status.SUCCESS.getCode()); } else { map.put(Status.FILED.getCodeName(), Status.FILED.getCode()); } return map; } /** * 從redis根據(jù)key獲取string數(shù)據(jù) * @param key * @return */ public String get(String key) { String jsonString = jedisCluster.get(key); if (jsonString==null || jsonString.equals("")) { return null; } return jsonString; } /** * 刪除string數(shù)據(jù) * @param key * @return */ public Map del(String key) { Map map = new HashMap<>(); Long del = jedisCluster.del(key); if (del>0) { map.put("code", 200); } else { map.put("code", 404); } return map; } /** * 設(shè)置失效時間 * @param key * @param seconds * @return */ public Long expire(String key,Integer seconds) { return jedisCluster.expire(key, seconds); } }
注意不能在service層中注入service,如果需要可以在controller層將redisService做為參數(shù)傳遞進(jìn)去,如果在service層中注入其他的service對象,可能造成事務(wù)的串聯(lián),讀到臟數(shù)據(jù)。
關(guān)于如何在springboot中對redis進(jìn)行配置問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識。