首页 新闻 会员 周边 捐助

用哪个redis数据结构存储博文与分类的多对多映射关系

0
悬赏园豆:30 [已解决问题] 解决于 2025-04-20 21:14

在优化园子的博客系统时,想实现访问一个博客时,将这个博客的所有分类与博文的映射关系都缓存到redis中,请问用哪个redis数据结构比较好?

dudu的主页 dudu | 高人七级 | 园豆:25268
提问于:2025-04-19 15:40
< >
分享
最佳答案
0

set。求交集,并集。可?

收获园豆:30
快乐的欧阳天美1114 | 老鸟四级 |园豆:4091 | 2025-04-19 22:24

的确用 Set 就可以,开始时想复杂了

public async Task<int[]> GetCachedPostIds(int blogId, int categoryId)
{
    var cacheKey = CacheKeyManager.PostToCategoryMap(blogId, categoryId);

    if (await _redis.ExistsAsync(cacheKey))
    {
        return await _redis.SetMembersAsync<int>(cacheKey);
    }

    return await GetPostIds(blogId, categoryId);
}

private async Task<int[]> GetPostIds(int blogId, int categoryId)
{
    var cacheKey = CacheKeyManager.PostToCategoryMap(blogId, categoryId);
    var postIds = (await GetPostToCategoryIds(blogId, categoryId, false)).ToArray();
    await _redis.SetAddAllAsync(cacheKey, CommandFlags.None, postIds);
    await _redis.UpdateExpiryAsync(cacheKey, TimeSpan.FromHours(3));
    return postIds;
}
dudu | 园豆:25268 (高人七级) | 2025-04-20 21:14
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册