Spring Data Jpa Redis与Sping Boot JDBC模板的集成

rkkpypqq  于 2023-10-20  发布在  Spring
关注(0)|答案(1)|浏览(120)

我目前正在开发一个CRUD应用程序,目标是整合AWS、MySQL、Docker等行业标准工具。对于与数据库的连接,我使用Spring的普通旧SpringJDBC模板。然而,我注意到Spring的许多工具主要是为SpringJPA构建的。
我想深入到底层细节,并利用Redis作为内存中的数据库进行缓存。然而,我遇到的大多数教程都专注于将Redis与Spring JPA一起使用。有没有人可以给我提供一个资源或指南,告诉我如何将Redis与Spring的JDBC模板集成在一起?我将非常感谢任何帮助。谢谢你,谢谢!
我在谷歌上搜索了很多资源,所有的资源似乎都指向使用Spring JPA。

xuo3flqw

xuo3flqw1#

Redis可以很容易地集成到Sping Boot 中,而不依赖Spring Data Redis。
使用依赖关系:

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

在应用程序中创建一个RedisClient/Helper bean

@Component
@Slf4j
public class RedisClient {

    private JedisPool pool;

    @PostConstruct
    public void initialize() {
        try {
            JedisPoolConfig poolConfig = new JedisPoolConfig();
            poolConfig.setMinIdle(ApplicationConstant.REDIS_MIN_IDLE);
            poolConfig.setMaxTotal(ApplicationConstant.REDIS_MAX_TOTAL);
            poolConfig.setMaxIdle(ApplicationConstant.REDIS_MAX_IDLE);
            URI uri = URI.create(ApplicationConstant.REDIS_SERVER_URL);
            pool = new JedisPool(poolConfig, uri);
            try (Jedis client = pool.getResource()){
                if (client.isBroken()) throw new JedisConnectionException("Unable to create Jedis pool please check the configurations.");
            }
            log.info("Redis connection established.");
        } catch (JedisConnectionException e) {
            log.error("Error in creating jedis pool", e);
            throw e;
        }
    }

    @PreDestroy
    public void close() {
        if (pool!=null && !pool.isClosed()) {
            pool.close();
        }
    }

    public String get(String key) {
        try(Jedis jedis = pool.getResource()) {
            return jedis.get(key);
        } 
    }

    public String set(String key, String value) {
        try(Jedis jedis = pool.getResource()) {
            return jedis.set(key, value);
        }
    }
}

现在,只需在您想要的任何地方自动连接/注入bean。

@Repository
public class MyDao{

    @Autowired
    private EntityManager em;
    @Autowired
    private RedisClient redisClient;

    public String getData(String key) {
        String obj = redisClient.get(key);
        if (obj != null) {
           return obj;
        }
        String result= em.find(String.class, key);
        redisClient.set(key, result);
        return resp;
    }
}

参考-https://redis.io/docs/clients/java/https://www.baeldung.com/jedis-java-redis-client-library

相关问题