springboot配置redis过程详解

网友投稿 208 2022-12-28


springboot配置redis过程详解

在springboot中,默认继承好了一套完好的redis包,可以直接使用,但是如果使用中出了错不容易找到错误的原因,因此这里使用自己配置的redis;

需要使用的三个主要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的一个组件,添加@ConfiabmjkgurationProperties(prefix = "spring.redis")注解,就会默认从application.properties

* 文件中加载前缀为spring.redis的配置信息,配置文件中的配置字段与该类中的属性一致,通过setter方法来设值

* @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();

Set hostAndPortSet = 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数据,成功返回code:200,失败code:404

* @param key

* @param value

* @return

*/

public Map set(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根据key获取string数据

* @param key

* @return

*/

public String get(String key) {

String jsonString = jedisCluster.get(key);

if (jsonString==null || jsonString.equals("")) {

return null;

}

return jsonString;

}

/**

* 删除string数据

* @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;

}

/**

* 设置失效时间

* @param key

* @param seconds

* @return

*/

public Long expire(String key,Integer seconds) {

return jedisCluster.expire(key, seconds);

}

}

注意不能在service层中注入service,如果需要可以在controller层将redisServihttp://ce做为参数传递进去,如果在service层中注入其他的service对象,可能造成事务的串联,读到脏数据。

该方法需要使用到jsonUtil类,将数据转为json字符串存储


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:外网接口做接口测试工具(外网接口做接口测试工具)
下一篇:Java实现图片倒影的源码实例内容
相关文章

 发表评论

暂时没有评论,来抢沙发吧~