sql >> Databáze >  >> NoSQL >> Redis

Redis - Indexy s prošlou platností se nesmažou

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.




  1. Začínáme s nerelačními databázemi pomocí Mongodb 🍃

  2. Spark-on-HBase:Konektor HBase založený na DataFrame

  3. MongoDB SSL s certifikáty s vlastním podpisem v C#

  4. Jak používat novou adresu URL z mongodb 3.6 pro připojení z golang