Eu poderia encontrar a solução para excluir as chaves :phantom e :idx .
Na classe de configuração do Redis, deve-se colocar o seguinte:
@Configuration
@EnableRedisRepositories(enableKeyspaceEvents = EnableKeyspaceEvents.ON_STARTUP, basePackages = {
"com.aaaaa.bbbbb.persistence.model.repository" }, keyspaceNotificationsConfigParameter = "")
Quando você define o atributo "keyspaceNotificationsConfigParameter" para a string vazia, o comando CONFIG que não funciona no AWS Redis não é executado, mas dessa forma, o Expiration Event Listener é instanciado.
Este atributo traz um valor padrão (Ex), que faz com que o comando CONFIG seja executado.
Isso acontece pelo seguinte código de primavera:
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);
}
Como esta condição não é atendida
if (StringUtils.hasText(keyspaceNotificationsConfigParameter)) {
o comando CONFIG não é executado.
Acho que o Spring deveria melhorar isso, e não fazer esse fluxo, com base na configuração de um atributo com uma string vazia.
A única coisa que também é necessária é que no AWS ElastiCache (Redis) seja definido um valor para o parâmetro "notify-keyspace-events", como AKE, o que significa que todos os eventos serão notificados.