sql >> データベース >  >> NoSQL >> Redis

Redis-期限切れのインデックスは削除されません

    キーを削除する解決策を見つけることができました:phantom および:idx

    Redis構成クラスには、次のように配置する必要があります。

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

    「keyspaceNotificationsConfigParameter」属性を空の文字列に設定すると、AWS Redisで機能しないCONFIGコマンドは実行されませんが、このようにして、有効期限イベントリスナーがインスタンス化されます。

    この属性はデフォルト値(Ex)をもたらし、CONFIGコマンドが実行されます。

    これは、次のスプリングコードによって発生します:

    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);
    }
    

    この条件が満たされない方法

    if (StringUtils.hasText(keyspaceNotificationsConfigParameter)) {
    

    CONFIGコマンドは実行されません。

    空の文字列で属性を設定することに基づいて、Springはこれを改善する必要があり、そのフローを作成するべきではないと思います。

    また必要なのは、AWS ElastiCache(Redis)で、値がAKEなどの「notify-keyspace-events」パラメーターに設定されていることです。これは、すべてのイベントが通知されることを意味します。




    1. DeprecationWarning:collection.findAndModifyは非推奨です。代わりに、findOneAndUpdate、findOneAndReplace、またはfindOneAndDeleteを使用しますか?

    2. MongoDBでのJavaScriptNoSQLインジェクション防止

    3. Windows 7マシン上のMongoDB:接続できませんでした

    4. mongoに認証できません、認証は失敗します