我有如下 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 2024-04-23 00:57:35 +08:00 用管道操作? |
![]() | 2 Red998 2024-04-23 18:03:56 +08:00 你这是把 redis 当成数据库了。。 管道可以实现、但是有缺点数据量大、占用内存就多、网络阻塞什么的。原子性可以保证、但不能回滚。 我的建议异步 mq 分批次 。起码 mq 可以根据你的消费速率、再不济就上 binlog 监听同步数据。 |
3 JasonLaw OP @chihiro2014 #1 现在选择这种方法,不过缺点就是要自己实现保存数据和索引。 |