> 文章列表 > 在Spring Boot微服务使用Jedis操作Redis String字符串

在Spring Boot微服务使用Jedis操作Redis String字符串

在Spring Boot微服务使用Jedis操作Redis String字符串

记录:407

场景:在Spring Boot微服务使用Jedis操作Redis String字符串。

版本:JDK 1.8,Spring Boot 2.6.3,redis-6.2.5,jedis-3.7.1。

1.微服务中配置Redis信息

1.1在application.yml中Jedis配置信息

hub:example:redis:jedis:host: 192.168.19.203port: 28001password: 12345678timeout: 60000

1.2使用ConfigurationProperties加载Jedis配置

Spring Boot微服务在启动时,自动注解机制会读取application.yml的Jedis相关注入到JedisConnectProperties 对象。

在Spring环境中,注入JedisConnectProperties对象,就能获取到Redis相关配置信息。也就是Jedis客户端必须的参数。

定义JedisConnectProperties 类,扫描yml中的hub.example.redis.jedis配置。

@Component
@ConfigurationProperties(prefix="hub.example.redis.jedis")
public class JedisConnectProperties {private String host;private int port;private int timeout;private String password;public String getHost() {return host;}public void setHost(String host) {this.host = host;}public int getPort() {return port;}public void setPort(int port) {this.port = port;}public int getTimeout() {return timeout;}public void setTimeout(int timeout) {this.timeout = timeout;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}
}

1.3在pom.xml添加依赖

在Spring Boot中默认集成jedis,使用时无需加版本号,本例版本3.7.1是Spring Boot 2.6.3对应的版本。

<dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>3.7.1</version>
</dependency>

2.微服务中配置Jedis

2.1配置Jedis

@Configuration
public class JedisConfig {@Autowiredprivate JedisConnectProperties jedisProperties;@Bean("jedisPoolConfig")public JedisPoolConfig jedisPoolConfig() {JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();jedisPoolConfig.setMaxTotal(30);jedisPoolConfig.setMaxIdle(30);jedisPoolConfig.setMinIdle(1);jedisPoolConfig.setNumTestsPerEvictionRun(-1);jedisPoolConfig.setTestOnBorrow(true);jedisPoolConfig.setTestOnReturn(false);jedisPoolConfig.setBlockWhenExhausted(false);return jedisPoolConfig;}@Bean("jedisPool")public JedisPool jedisPool(JedisPoolConfig jedisPoolConfig) {JedisPool jedisPool = new JedisPool(jedisPoolConfig,jedisProperties.getHost(),jedisProperties.getPort(),jedisProperties.getTimeout(),jedisProperties.getPassword());return jedisPool;}
}

2.2解析

在配置Jedis后,在Spring环境中可以使用@Autowired自动注入jedisPool,从Jedis资源池中获取Jedis就可以操作Redis了。

3.使用Jedis操作Redis String字符串

3.1简要说明

使用Jedis操作字符串,常用操作:增、查、改、删、设置超时等。

3.2 SET命令的后缀解析

EX:设置键的过期时间为秒(second)。

PX:设置键的过期时间为毫秒(millisecond)。

NX:只在键不存在时,才对键进行设置操作。

XX:只在键已经存在时,才对键进行设置操作。

3.3操作示例

@RestController
@RequestMapping("/hub/example/loadJedis")
@Slf4j
public class LoadJedisController {// 注入JedisPool资源池
@Autowiredprivate JedisPool jedisPool;/*** 在Spring Boot微服务使用Jedis操作Redis String字符串*/@GetMapping("/jedis02-01")public Object loadData02_01() {log.info("Jedis操作开始...");// 1.获取Jedis对象Jedis jedis = jedisPool.getResource();// 2.增// 2.1写一条数据jedis.set("CityInfo:suzhou02:01", "苏州");// 2.2写一条数据,键不存在时,才对键进行设置操作jedis.setnx("CityInfo:suzhou02:02", "苏州-工业园区");// 2.3写一条数据,并设置超时,600秒jedis.setex("CityInfo:suzhou02:03", 600L, "苏州-相城");// 2.4写批量数据,奇数位置是键,偶数位置是值jedis.mset("CityInfo:suzhou02:04", "苏州-昆山","CityInfo:suzhou02:05", "苏州-吴江");// 3.查// 3.1查询一个键String city = jedis.get("CityInfo:suzhou02:01");// 3.1查询批量键List<String> cityList = jedis.mget("CityInfo:suzhou02:01","CityInfo:suzhou02:02","CityInfo:suzhou02:03");// 4.改// 4.1修改一条数据jedis.set("CityInfo:suzhou02:01", "苏州-姑苏");// 4.1修改一条数据,只有键存在才修改SetParams setParams01 = new SetParams();setParams01.ex(5 * 60L);setParams01.xx();jedis.set("CityInfo:suzhou02:02", "苏州-工业园区-苏州", setParams01);// 5.删// 5.1删除一条数据jedis.del("CityInfo:suzhou02:01");// 5.1删除批量数据jedis.del("CityInfo:suzhou02:01", "CityInfo:suzhou02:02");// 6.判断键是否存在Boolean exists01 = jedis.exists("CityInfo:suzhou02:01");Long exists02 = jedis.exists("CityInfo:suzhou02:01", "CityInfo:suzhou02:02");// 7.设置超时// 7.1设置5分钟超时SetParams setParams02 = new SetParams();setParams02.ex(5 * 60L);jedis.set("CityInfo:suzhou02:04", "苏州-昆山", setParams02);// 7.2设置10分钟超时jedis.expire("CityInfo:suzhou02:04", 10 * 60L);// 8.查存活时间Long ttl = jedis.ttl("CityInfo:suzhou02:04");// 9.ping判断服务是否存在String pingResult = jedis.ping();// 10.释放Jedis对象jedis.close();log.info("Jedis操作结束...");return "执行成功";}
}

3.4测试验证

使用Postman测试。

请求RUL:http://127.0.0.1:18205/hub-205-redis/hub/example/loadJedis/jedis02-01

以上,感谢。

2023年4月15日