Jag kunde hitta lösningen för att ta bort nycklarna :phantom och :idx .
I Redis-konfigurationsklassen ska följande sättas:
@Configuration
@EnableRedisRepositories(enableKeyspaceEvents = EnableKeyspaceEvents.ON_STARTUP, basePackages = {
"com.aaaaa.bbbbb.persistence.model.repository" }, keyspaceNotificationsConfigParameter = "")
När du ställer in attributet "keyspaceNotificationsConfigParameter" till den tomma strängen, exekveras inte CONFIG-kommandot som inte fungerar i AWS Redis, men på detta sätt instansieras Expiration Event Listener.
Detta attribut ger ett standardvärde (Ex), vilket gör att CONFIG-kommandot körs.
Detta sker med följande vårkod:
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);
}
Hur detta villkor inte är uppfyllt
if (StringUtils.hasText(keyspaceNotificationsConfigParameter)) {
kommandot CONFIG körs inte.
Jag tycker att Spring borde förbättra detta, och inte få det att flyta, baserat på att ställa in ett attribut med en tom sträng.
Det enda som också behövs är att i AWS ElastiCache (Redis) sätts ett värde till parametern "notify-keyspace-events", såsom AKE, vilket innebär att alla händelser kommer att meddelas.