2016-06-20 8 views
0

私はプロジェクトにSpring redisリポジトリを使用してPOJOをredisに保持しています。以下の例は私が達成しようとしていることを詳述しています。Spring Redisリポジトリを使用して格納されたPOJOのTTLを取得します。

@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は、有効期限を赤字に設定しても問題ありません。私のコードでは、私は= 1200のTimeToLiveの値を設定しようとしたコードは以下のようになり、私はRedisのからPOJOを取得しようとすると...

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

私の問題が開始されます。

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

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

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

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

ありがとうございます!

答えて

0

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

一方、値はRedisTemplate.getExpire(key, timeUnit)などで取得できます。 template.getExpire("Example:abc".getBytes(), TimeUnit.SECONDS)

+0

お返事ありがとうございます!これの背後に作成された問題を見るのは素晴らしいです!すぐにこの機能が追加されることを願っています! –

関連する問題