Mogę znaleźć rozwiązanie, jak usunąć klucze :phantom i :idx .
W klasie konfiguracyjnej Redis należy umieścić:
@Configuration
@EnableRedisRepositories(enableKeyspaceEvents = EnableKeyspaceEvents.ON_STARTUP, basePackages = {
"com.aaaaa.bbbbb.persistence.model.repository" }, keyspaceNotificationsConfigParameter = "")
Po ustawieniu atrybutu „keyspaceNotificationsConfigParameter” na pusty ciąg, polecenie CONFIG, które nie działa w AWS Redis, nie jest wykonywane, ale w ten sposób powstaje instancja nasłuchiwania zdarzeń wygaśnięcia.
Ten atrybut zapewnia wartość domyślną (Ex), która powoduje wykonanie polecenia CONFIG.
Dzieje się to za pomocą następującego kodu wiosny:
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);
}
Jak ten warunek nie jest spełniony
if (StringUtils.hasText(keyspaceNotificationsConfigParameter)) {
polecenie CONFIG nie jest wykonywane.
Myślę, że Spring powinien to poprawić, a nie tworzyć ten przepływ, w oparciu o ustawienie atrybutu pustym ciągiem.
Jedyne, co jest również potrzebne, to to, że w AWS ElastiCache (Redis) wartość jest ustawiona na parametr „notify-keyspace-events”, taki jak AKE, co oznacza, że wszystkie zdarzenia będą powiadamiane.