在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.203
        port: 28001
        password: 12345678
        timeout: 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 {
  @Autowired
  private 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资源池
@Autowired
  private 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日

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用Jedis工具类来扫描其他Spring Boot项目中使用Redis地址。首先,需要在pom.xml文件中添加Jedis依赖,然后在Java代码中使用Jedis的API来连接Redis服务器并扫描Redis地址。具体实现可以参考以下代码: ```java import redis.clients.jedis.Jedis; import redis.clients.jedis.ScanParams; import redis.clients.jedis.ScanResult; public class RedisScanner { public static void main(String[] args) { // 连接Redis服务器 Jedis jedis = new Jedis("localhost", 6379); // 扫描Redis地址 ScanParams params = new ScanParams().match("*"); String cursor = ""; do { ScanResult<String> result = jedis.scan(cursor, params); for (String key : result.getResult()) { System.out.println(key); } cursor = result.getStringCursor(); } while (!cursor.equals("")); // 关闭连接 jedis.close(); } } ``` ### 回答2: 要使用Java代码静态扫描其他Spring Boot项目中使用Redis地址,可以采取以下步骤: 1. 引入必要的依赖: 在项目的pom.xml文件中添加Spring BootRedis相关的依赖,例如: ```xml <!-- Spring Boot --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <!-- Redis --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> ``` 2. 创建一个Java类来执行扫描操作: ```java import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.data.redis.RedisProperties; import org.springframework.context.ApplicationContext; @SpringBootApplication public class RedisScanner { public static void main(String[] args) { ApplicationContext context = SpringApplication.run(RedisScanner.class, args); RedisProperties redisProperties = context.getBean(RedisProperties.class); System.out.println("Redis地址:" + redisProperties.getHost() + ":" + redisProperties.getPort()); } } ``` 3. 运行扫描程序: 在命令行或IDE中执行扫描程序的main方法,它将启动一个Spring Boot应用程序并输出Redis地址。 注意:确保已经正确配置了被扫描项目的Redis连接信息,扫描程序需要能够获取到该信息才能输出正确的Redis地址。 通过以上步骤,你可以使用Java代码静态扫描其他Spring Boot项目中使用Redis地址,并将其输出到控制台或其他你需要的地方。 ### 回答3: 要使用Java代码静态扫描其他Spring Boot项目中使用Redis地址,可以使用以下步骤: 1. 导入相关的Java类库和依赖:首先需要导入Spring Boot的相关类库,如spring-boot-starter-data-redis,以及Redis的Java客户端类库,如jedis或Lettuce。 2. 获取其他项目的源代码:将其他Spring Boot项目的源代码进行获取,可以通过Git克隆或下载压缩包的方式获取。 3. 遍历源代码文件:通过递归方式遍历其他项目的源代码文件夹,可以使用Java的File类和FileUtils类。 4. 搜索Redis连接配置:在遍历的过程中,对每个文件进行解析,搜索Redis连接配置的相关代码。可以通过正则表达式匹配关键字,如"RedisTemplate"、"Redisson"等。 5. 提取Redis地址:根据找到的连接配置代码,提取其中的Redis地址信息。可以通过字符串截取、正则表达式或代码解析等方式提取Redis连接地址。 6. 封装结果:将提取到的Redis地址保存到一个列表或其他数据结构中,用于后续的使用或输出。 7. 输出结果:根据需求来定义如何输出结果,可以将结果保存到日志文件、数据库或控制台显示出来。 需要注意的是,以上步骤仅是一个大致的思路,具体的实现方式可能因项目的结构和要求而有所不同。在实现过程中,还需要考虑文件过滤、异常处理、性能调优等因素。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值