Можех да намеря решението да изтрия ключовете :phantom и :idx .
В конфигурационния клас Redis трябва да се постави следното:
@Configuration
@EnableRedisRepositories(enableKeyspaceEvents = EnableKeyspaceEvents.ON_STARTUP, basePackages = {
"com.aaaaa.bbbbb.persistence.model.repository" }, keyspaceNotificationsConfigParameter = "")
Когато зададете атрибута "keyspaceNotificationsConfigParameter" на празен низ, командата CONFIG, която не работи в AWS Redis, не се изпълнява, но по този начин се инстанцира слушателят на изтичане на събития.
Този атрибут носи стойност по подразбиране (Ex), което води до изпълнение на командата CONFIG.
Това се случва чрез следния пружинен код:
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);
}
Как това условие не е изпълнено
if (StringUtils.hasText(keyspaceNotificationsConfigParameter)) {
командата CONFIG не се изпълнява.
Мисля, че Spring трябва да подобри това, а не да прави този поток въз основа на задаване на атрибут с празен низ.
Единственото нещо, което също е необходимо, е в AWS ElastiCache (Redis) да е зададена стойност на параметъра "notify-keyspace-events", като AKE, което означава, че всички събития ще бъдат уведомени.