Spring Boot Caching with Redis and Store value as Redis Hash

Posted

技术标签:

【中文标题】Spring Boot Caching with Redis and Store value as Redis Hash【英文标题】:Spring boot Caching with Redis and Store value as Redis Hash 【发布时间】:2021-12-28 06:39:02 【问题描述】:

我有一个非常普遍的要求,但很惊讶在互联网上浏览了很多页面后却找不到相同的要求。

下面是代码:

 @Cacheable(value = "cache", key = "#request.userId", cacheManager = "defaultCacheManager")
    public UserDto createOrFetch(CreateUserRequest request) 

我想将返回的 UserDto 对象存储为 Redis Hash,但默认情况下它将它存储为简单的键值对。

    我知道这可以通过我们可以从 Redis 模板获得的 HashOperations 来实现,但它缺乏将 ttl 值设置为哈希值。

    RedisRepository 也可以通过在类定义上添加@RedisHash 来使用。

只是想知道是否可以通过@Cacheable 注释方式实现相同的目标。 注意:我正在使用带有 SpringBoot 2.1.4.RELEASE 的 Jedis 客户端

【问题讨论】:

【参考方案1】:

如果我理解正确,您可以使用:

@Cacheable(value="books", key="T(someType).hash(#isbn)") 
public Book findBook(ISBN isbn, boolean checkWarehouse, boolean includeUsed)

但是,您如何保证此哈希是唯一的?这是您可能会遇到的问题。

参考:@Cacheable key on multiple method arguments

【讨论】:

实际上我想将 UserDto 对象作为 Redis Hash 存储在 Redis 中。 Redis Hash是redis提供的一种数据结构。

以上是关于Spring Boot Caching with Redis and Store value as Redis Hash的主要内容,如果未能解决你的问题,请参考以下文章

Spring boot caching example

错误 java.sql.SQLException:在创建 Spring Boot 应用程序期间无法加载身份验证插件“caching_sha2_password”

Spring Security with Boot

RSS Feeds with Spring Boot

《Pro Spring Boot 2》第四章:Web Applications with Spring Boot

《Pro Spring Boot 2》第五章:Data Access with Spring Boot