【发布时间】:2021-07-25 03:47:43
【问题描述】:
我从未在 Redis 和 Spring boot 上工作过。我想用 Redis 作为缓存。
我一直在使用hashOperations 进行获取/设置操作。我已经配置了 RedisTemplate 来阻止奇怪的哈希值被添加到键中。
我有一个名为Post 的类,我正在缓存它。一个用户可以创建多个帖子。密钥生成如下:userId::postId 并且帖子数据被缓存。
如何使用 RedisTemplate 的scan 方法获取特定用户的所有帖子?我试过ScanOptions 和* 模式,但我肯定做错了,因为我没有得到任何数据。 scan 和 ScanOptions 上的链接或 youtube 视频并不多,所以我发现很难实现。
这是我为获取用户的所有帖子而写的:
public List<Post> getPostsByUid(String uid) {
String key = uid + "::";
ScanOptions scanOptions = ScanOptions.scanOptions().match("*").count(20).build();
Cursor cursor = hashOperations.scan(key, scanOptions);
List<Post> posts = new ArrayList<>();
while(cursor.hasNext()) {
posts.add((Post)cursor.next());
}
return posts;
}
这是savePost 方法
public Post savePost(Post post) {
String key = post.getUid() + "::" + post.getPostid();
hashOperations.put(key, "", post);
return post;
}
感谢您的帮助!
【问题讨论】:
标签: java spring-boot redis spring-data-redis