业务方法如下(需要补全): @Autowired private RedisTemplate redisTemplate; /** * 缓存文章的基本信息,以hash格式进行存储,key格式是rank:post:文章id,例如rank:post:1, * hashkey格式分别为:post:id、post:title、post:commentCount、post:viewCount,value分别为对应值 * 要求:先根据key判断文章基本信息是否已缓存,如果没有缓存,就对应缓存其基本信息id、title、commentCount、viewCount * 同时设置过期时间 * @param post * @param expireTime */ public void hashCachePostIdAndTitle(Post post, long expireTime) { }
时间: 2024-02-28 17:56:25 浏览: 77
业务方法补全如下:
```
@Autowired
private RedisTemplate redisTemplate;
/**
* 缓存文章的基本信息,以hash格式进行存储,key格式是rank:post:文章id,例如rank:post:1,
* hashkey格式分别为:post:id、post:title、post:commentCount、post:viewCount,value分别为对应值
* 要求:先根据key判断文章基本信息是否已缓存,如果没有缓存,就对应缓存其基本信息id、title、commentCount、viewCount
* 同时设置过期时间
*
* @param post
* @param expireTime
*/
public void hashCachePostIdAndTitle(Post post, long expireTime) {
String key = "rank:post:" + post.getId();
Boolean hasKey = redisTemplate.opsForHash().hasKey(key, "post:title");
if (!hasKey) {
Map<String, Object> map = new HashMap<>();
map.put("post:id", post.getId());
map.put("post:title", post.getTitle());
map.put("post:commentCount", post.getCommentCount());
map.put("post:viewCount", post.getViewCount());
redisTemplate.opsForHash().putAll(key, map);
redisTemplate.expire(key, expireTime, TimeUnit.SECONDS);
}
}
```
这个方法用于将文章的基本信息缓存到 Redis,以 hash 格式进行存储。在方法中,首先按照 key 的格式拼接出 key,然后使用 RedisTemplate 的 opsForHash() 方法,判断 key 是否已存在。如果 key 已存在,则说明文章基本信息已缓存,直接返回即可;如果 key 不存在,则说明文章基本信息未缓存,需要将 id、title、commentCount、viewCount 这些基本信息存储到 Redis 中,并设置过期时间。
阅读全文