Tôi có thể tìm thấy giải pháp để xóa các khóa :phantom và :idx .
Trong lớp cấu hình Redis, nên đặt như sau:
@Configuration
@EnableRedisRepositories(enableKeyspaceEvents = EnableKeyspaceEvents.ON_STARTUP, basePackages = {
"com.aaaaa.bbbbb.persistence.model.repository" }, keyspaceNotificationsConfigParameter = "")
Khi bạn đặt thuộc tính "keyspaceNotificationsConfigParameter" thành chuỗi trống, lệnh CONFIG không hoạt động trong AWS Redis sẽ không được thực thi, nhưng theo cách này, Trình xử lý sự kiện hết hạn sẽ được khởi tạo.
Thuộc tính này mang lại một giá trị mặc định (Ví dụ), làm cho lệnh CONFIG được thực thi.
Điều này xảy ra bởi mã mùa xuân sau:
public void init() {
if (StringUtils.hasText(keyspaceNotificationsConfigParameter)) {
RedisConnection connection = listenerContainer.getConnectionFactory().getConnection();
try {
Properties config = connection.getConfig("notify-keyspace-events");
if (!StringUtils.hasText(config.getProperty("notify-keyspace-events"))) {
connection.setConfig("notify-keyspace-events", keyspaceNotificationsConfigParameter);
}
} finally {
connection.close();
}
}
doRegister(listenerContainer);
}
Điều kiện này không được đáp ứng như thế nào
if (StringUtils.hasText(keyspaceNotificationsConfigParameter)) {
lệnh CONFIG không được thực thi.
Tôi nghĩ Spring nên cải thiện điều này và không làm cho dòng chảy đó xảy ra, dựa trên việc đặt một thuộc tính bằng một chuỗi trống.
Điều duy nhất cũng cần thiết là trong AWS ElastiCache (Redis), một giá trị được đặt thành tham số "thông báo-keyspace-sự kiện", chẳng hạn như AKE, có nghĩa là tất cả các sự kiện sẽ được thông báo.