Spring Data RedisのRedis Repositoriesの制約
Redis Repositoriesとは
Working with Redis Repositories lets you seamlessly convert and store domain objects in Redis Hashes, apply custom mapping strategies, and use secondary indexes.
Working with Redis Repositories lets you seamlessly convert and store domain objects in Redis Hashes, apply custom mapping strategies, and use secondary indexes.
Sprint Data Redisの機能の1つで、JavaオブジェクトとRedis Hashをシームレスに出し入れ出来るのと、インデックスの管理をやってくれる便利なものです。
制約
保存するときにトランザクション無しにdelete & insertするので(上書き保存しないので)、タイミングによってキーが無いように見えます。保存と読み込みを高頻度でやると再現します。
ソースの該当箇所
L234-236
boolean isNew = connection.del(objectKey) == 0;
connection.hMSet(objectKey, rdo.getBucket().rawMap());
結論
上記の制約を理解して使うか、Redis Repositoriesを使わないのいずれかと思います。
追記
13.9. Persisting Partial Updates
https://docs.spring.io/spring-data/data-redis/docs/current/reference/html/#redis.repositories.partial-updates
を使うといいよ、というアドバイスをいただいた。
https://jira.spring.io/browse/DATAREDIS-1253
”JavaオブジェクトとRedis Hashをシームレスに出し入れ”とは言えないが、インデックスは更新されるので、INSERTはsave、UPDATEはpartial updatesのように使い分けるといいかも知れない。
同じ問題でハマっている人を見つけて、同じアドバイスをもらってた。
https://stackoverflow.com/questions/48116466/update-entity-in-redis-with-spring-data-redis
Author And Source
この問題について(Spring Data RedisのRedis Repositoriesの制約), 我々は、より多くの情報をここで見つけました https://qiita.com/taka_22/items/4f618837dc10822ca1b6著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .