Redis
 sql >> Baza danych >  >> NoSQL >> Redis

Redis — wygasłe indeksy nie są usuwane

Mogę znaleźć rozwiązanie, jak usunąć klucze :phantom i :idx .

W klasie konfiguracyjnej Redis należy umieścić:

@Configuration
@EnableRedisRepositories(enableKeyspaceEvents = EnableKeyspaceEvents.ON_STARTUP, basePackages = {
    "com.aaaaa.bbbbb.persistence.model.repository" }, keyspaceNotificationsConfigParameter = "")

Po ustawieniu atrybutu „keyspaceNotificationsConfigParameter” na pusty ciąg, polecenie CONFIG, które nie działa w AWS Redis, nie jest wykonywane, ale w ten sposób powstaje instancja nasłuchiwania zdarzeń wygaśnięcia.

Ten atrybut zapewnia wartość domyślną (Ex), która powoduje wykonanie polecenia CONFIG.

Dzieje się to za pomocą następującego kodu wiosny:

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 ten warunek nie jest spełniony

if (StringUtils.hasText(keyspaceNotificationsConfigParameter)) {

polecenie CONFIG nie jest wykonywane.

Myślę, że Spring powinien to poprawić, a nie tworzyć ten przepływ, w oparciu o ustawienie atrybutu pustym ciągiem.

Jedyne, co jest również potrzebne, to to, że w AWS ElastiCache (Redis) wartość jest ustawiona na parametr „notify-keyspace-events”, taki jak AKE, co oznacza, że ​​wszystkie zdarzenia będą powiadamiane.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. phpMyAdmin odpowiednik MySQL dla Redis?

  2. Jak mogę ręcznie zainstalować bibliotekę Redis perl, tj. W trybie offline. I skąd mogę uzyskać wszystkie zależności do zainstalowania

  3. ServiceStack.Redis Nie można odczytać transportu — BasicRedisClientManager

  4. Nie udało się uruchomić redis.service:Jednostka redis-server.service jest zamaskowana

  5. Jak używać kluczy przestrzeni nazw na redis, aby uniknąć kolizji nazw?