Mohl jsem najít řešení, jak odstranit klíče :phantom a :idx .
Do konfigurační třídy Redis by se mělo vložit následující:
@Configuration
@EnableRedisRepositories(enableKeyspaceEvents = EnableKeyspaceEvents.ON_STARTUP, basePackages = {
"com.aaaaa.bbbbb.persistence.model.repository" }, keyspaceNotificationsConfigParameter = "")
Když nastavíte atribut "keyspaceNotificationsConfigParameter" na prázdný řetězec, příkaz CONFIG, který nefunguje v AWS Redis, nebude proveden, ale tímto způsobem se vytvoří instance Expiration Event Listener.
Tento atribut přináší výchozí hodnotu (Ex), která způsobí provedení příkazu CONFIG.
To se děje pomocí následujícího jarního kódu:
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 tato podmínka není splněna
if (StringUtils.hasText(keyspaceNotificationsConfigParameter)) {
příkaz CONFIG se neprovede.
Myslím si, že Spring by to měl zlepšit, a ne dělat tok, na základě nastavení atributu s prázdným řetězcem.
Jediné, co je také potřeba, je, že v AWS ElastiCache (Redis) je nastavena hodnota parametru "notify-keyspace-events", jako je AKE, což znamená, že všechny události budou upozorněny.