Redis服务在虚拟机上,JetCache添加缓存失败怎么办?

JetCache添加缓存失败?
image.png

@org.springframework.stereotype.Service
public class Service {

    // ali
    @Cached(name="nanme",key="'key'",cacheType = CacheType.REMOTE)
    public String alibaba(){
        return "lili";
    };
}

测试方法
image.png

// 测试方法
@SpringBootApplication
@EnableMethodCache(basePackages = "com.*")
public class LearnDemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(LearnDemoApplication.class, args);
    }

}

配置文件。我是用虚拟机启动的redis服务,虚拟机的ip就是配置文件里面的redis的host。
image.png

# 配置文件
jetcache:
  statIntervalMinutes: 15
  areaInCacheName: false
  remote:
    default:
      type: redis
      keyConvertor: fastjson2 #other choose\uFF1Afastjson/jackson
      broadcastChannel: projectA
      valueEncoder: java #other choose\uFF1Akryo/kryo5
      valueDecoder: java #other choose\uFF1Akryo/kryo5
      poolConfig:
        minIdle: 5
        maxIdle: 20
        maxTotal: 50
      databse: 0
      host: 192.168.200.11
      port: 6380

测试结果
image.png
希望解决问题

阅读 1.2k
avatarAI BotBETA

回答

首先,确保以下几点以排查和解决 JetCache 添加缓存失败的问题:

  1. Redis 服务连接

    • 确认 Redis 服务在虚拟机上正常运行。
    • 使用 Redis 客户端工具(如 redis-cli)连接到 Redis 服务,确保可以使用配置文件中指定的 IP 和端口进行连接。
  2. 网络配置

    • 检查虚拟机与运行 JetCache 应用的机器之间的网络连接。
    • 确认防火墙或安全组规则允许从运行 JetCache 应用的机器访问虚拟机的 Redis 端口(默认是 6379)。
  3. 配置文件检查

    • 确保配置文件中的 Redis host 和 port 配置正确。
    • 检查是否有其他配置错误或遗漏(如密码、连接池设置等)。
  4. 日志和错误信息

    • 查看 JetCache 应用的日志,检查是否有关于 Redis 连接或操作失败的详细错误信息。
    • 检查 Redis 服务的日志,看是否有拒绝连接或执行命令失败的记录。
  5. 代码和测试方法

    • 确保测试方法正确调用了 JetCache 的 API 进行缓存操作。
    • 如果可能,尝试简化测试代码,只包含最基本的缓存添加逻辑,以排除其他代码逻辑的影响。
  6. 依赖和版本

    • 确保 JetCache 和 Redis 客户端库的版本兼容。
    • 检查是否有依赖冲突或缺失。

如果以上步骤都确认无误,但问题依旧存在,可能需要更详细的日志信息或调试信息来进一步分析问题。你也可以考虑在 JetCache 的官方文档或社区中查找类似的问题和解决方案。

### 解决步骤

1. 确认 Redis 服务正常运行,并可使用配置文件中的 IP 和端口进行连接。
2. 检查虚拟机与运行 JetCache 应用的机器之间的网络连接和防火墙设置。
3. 仔细检查配置文件中的 Redis 配置。
4. 查看 JetCache 应用和 Redis 服务的日志,寻找错误信息。
5. 确保测试方法正确,并尝试简化测试代码。
6. 检查 JetCache 和 Redis 客户端库的版本兼容性。

希望这些步骤能帮助你解决 JetCache 添加缓存失败的问题。

1 个回答

将JetCache配置为使用在虚拟机上运行的Redis服务,可以通过以下步骤进行:

1. 确保Redis服务在虚拟机上正常运行

确定Redis服务在虚拟机上运行并且可以访问。可以在本地或虚拟机中通过以下命令测试连接:

redis-cli -h <虚拟机IP> -p 6379 ping

如果返回 PONG,表示Redis服务正常运行。

2. 配置JetCache

在Spring Boot应用程序中,添加JetCache和Redis的依赖:

<dependency>
    <groupId>com.alicp.jetcache</groupId>
    <artifactId>jetcache-starter-redis-lettuce</artifactId>
    <version>2.6.0</version>
</dependency>

3. 配置application.yml

application.yml中添加JetCache和Redis的配置:

jetcache:
  remote:
    default:
      type: redis
      keyConvertor: fastjson2
      broadcastChannel: projectA
      valueEncoder: java
      valueDecoder: java
      poolConfig:
        minIdle: 5
        maxIdle: 20
        maxTotal: 50
      database: 0
      host: <虚拟机IP>
      port: 6379

4. 创建Service类

在Service类中使用@Cached注解进行缓存:

import com.alicp.jetcache.anno.Cached;
import com.alicp.jetcache.CacheType;
import org.springframework.stereotype.Service;

@Service
public class MyService {

    @Cached(name="myCache", key="'key'", cacheType=CacheType.REMOTE)
    public String getData() {
        return "Hello, JetCache!";
    }
}

5. 启动Spring Boot应用

在Spring Boot启动类中启用缓存功能:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import com.alicp.jetcache.anno.config.EnableMethodCache;

@SpringBootApplication
@EnableMethodCache(basePackages = "com.example")
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏