sql >> Databasteknik >  >> NoSQL >> Redis

Redis - Utgångna index tas inte bort

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.




  1. Introduktion till HDFS Federation &Architecture

  2. Hur man bygger en URL Shortener med Node.js och MongoDB

  3. Hur utesluter man ett visst fält från en samling i Mongoose?

  4. Överväganden för att administrera MongoDB