springboot - Spring Boot RedisはカスタムIDを使用してハッシュオブジェクトを保存する問題
阿神
阿神 2017-05-16 13:20:12
0
1
1700
  1. 使用スプリングブーツ関連情報

現在使用されている Spring Boot のバージョンは1.5.2.RELEASE, 数据库操作使用的是spring-boot-starter-data-jpa,redis使用的是spring-boot-starter-data-redis

データベース操作にはSpring Bootが提供するJPAリポジトリを使用し、redisはRedisリポジトリを使用します。

一般的なシナリオは、JPA を通じてデータを mysql に保存し、成功した後に Redis のハッシュ オブジェクトを更新することです。

Spring Data Redis リポジトリの公式ドキュメントの紹介によると、エンティティを構成する必要があります。

2.関連コード

例として注文を保存すると、DTO を渡し、jpa メソッドを呼び出してデータベースに書き込み、成功後にキャッシュに書き込みます。
メインコードは次のとおりです:

メインファイルでキャッシュを有効にするために使用します
@EnableRedisRepositories(basePackages = {"com.test"})
@EnableCaching

リーリー

RedisConfig はいくつかのキャッシュ関数を書き換えます

リーリー

OrderService は、save メソッドを呼び出してデータをデータベースに保存します。このフォームはここで使用されます@CachePut注解,生成的key的主键是order:100。 リーリー

エンティティの設定は次のとおりです。ここでは JPA 構成と Redis 構成の両方が使用されます。これは少し曖昧で、正しいかどうかはわかりません。

リーリー

私が今抱えている主な問題は:

1)

.Order实体配置中,如果我在Id上配置了 redis 的 ID 注解@org.springframework.data.annotation.Id, 生成的redis key类似这样order:1222702657038933405, 我想要的效果是生成的key直接使用订单id,类似这样order:100

サービス

に設定がありますが、有効になりません。@CachePut(value = "order", key = "#order.id")

2) デバッグ時に、生成されたオブジェクトに ID がある場合でも、式の id 属性が存在しないことが報告されることがわかりました

リーリー

3) redis によって作成されたキーが間違っているという問題はさておき、redis オブジェクトは正常に保存できますが、データベース レコードが正常に作成されていないことがわかりました。 Order エンティティの

注釈を削除すると、データベース レコードは正常に作成できますが、キャッシュは正常に作成できません。@RedisHash(value = "order")

阿神
阿神

闭关修行中......

全員に返信 (1)
给我你的怀抱

まず第一に、キーは属性名である必要があります

リーリー

次に、@RedisHash はオブジェクトを Redis に永続化するために使用されます。ここで使用したいのは永続化ではなく Redis キャッシュであるため、RedisHash とは関係ありません。

いいねを押す+0
    最新のダウンロード
    詳細>
    ウェブエフェクト
    公式サイト
    サイト素材
    フロントエンドテンプレート
    私たちについて 免責事項 Sitemap
    PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!