我有如下 class Student 。
@RedisHash("Student")
public class Student {
@Id
private String id;
@Indexed
private String name;
@Indexed
private int age;
// Getters and Setters (omitted for brevity)
}
然后我使用 Spring Data Redis saveAll 来保存多个 Students 。
public interface StudentRepository extends CrudRepository<Student, String> {
}
public void saveAllStudents(List<Student> students) {
studentRepository.saveAll(students);
}
但是如果 students 数量很大的话,studentRepository.saveAll(students)
很慢,因为它是一个一个遍历然后执行 save 的。有什么办法可以优化吗?
1
chihiro2014 232 天前
用管道操作?
|
2
Red998 231 天前
你这是把 redis 当成数据库了。。 管道可以实现、但是有缺点数据量大、占用内存就多、网络阻塞什么的。原子性可以保证、但不能回滚。 我的建议异步 mq 分批次 。起码 mq 可以根据你的消费速率、再不济就上 binlog 监听同步数据。
|
3
JasonLaw OP @chihiro2014 #1 现在选择这种方法,不过缺点就是要自己实现保存数据和索引。🤕
|