2

プロジェクトで Spring redis リポジトリを使用して、POJO を redis に永続化しています。次の例は、私が達成しようとしていることの詳細です。

@Data
@RedisHash("Example")
public class Example {
    @Id
    private String id;
    private String attributeA;
    private String attirbuteB;

    @TimeToLive(unit = TimeUnit.SECONDS)
    private Long timeToLive;
}

上記の POJO のリポジトリは次のようになります。

public interface ExampleRepository extends CrudRepository<Example, String> {

}

@TimeToLive は、有効期限を redis に設定する際にうまく機能します。私のコードでは、timeToLive = 1200 の値を設定しようとしました。コードは次のようになります...

Example example = new Example();
example.setId("abc");
example.setTimeToLive(1200L);
exampleRepository.save(example);

私の問題は、redis から POJO を取得しようとしたときに始まります。

Example example = exampleRepository.findOne(id);
System.out.println(example.getTimeToLive());

上記のコードは、出力として常に 1200 を出力します。CLI から、redis に存在するオブジェクトの TTL が時間の経過とともに減少していることを確認できます。それでも、取得しようとしている POJO に設定されていません。

この POJO インスタンスの redis に設定されている ttl の現在の値を取得できないのはなぜですか?

spring redis リポジトリを使用してこれを達成する別の方法はありますか?

前もって感謝します!

4

1 に答える 1

2

有効期限の値をドメイン オブジェクトに読み戻すことは、現在、直接サポートされていません。この問題を対象としたDATAREDIS-523があります。

その間、たとえば次の方法で値を取得できますRedisTemplate.getExpire(key, timeUnit)template.getExpire("Example:abc".getBytes(), TimeUnit.SECONDS).

于 2016-06-21T05:35:51.980 に答える