ホームページ  >  記事  >  バックエンド開発  >  Redis キャッシュが部分的なデータしか返さないのはなぜですか

Redis キャッシュが部分的なデータしか返さないのはなぜですか

王林
王林転載
2024-02-08 21:33:21999ブラウズ

Redis キャッシュが部分的なデータしか返さないのはなぜですか

php Editor Banana Redis キャッシュを使用すると、よくある問題が発生することがあります。なぜ Redis キャッシュはデータの一部しか返さないのですか?この問題には、不適切なキャッシュ設定、キャッシュ キー名の競合、キャッシュの有効期限など、複数の原因が考えられます。この問題を解決する前に、コードと構成を注意深くチェックして、キャッシュが適切に機能していることを確認する必要があります。この記事では、考えられる原因を分析し、この問題を解決して Redis キャッシュが完全なデータを確実に返すようにするための解決策を提供します。

質問内容

この機能はpostgresとredisキャッシュの実装をチェックします。 get リクエストを行うと、最初の結果はすべてのデータを返しますが、次の結果を行うと、データの一部のフィールドが欠落します

リーリー

これは私のユーザー構造です: type user struct { id uuid.uuid json:"id" 名前文字列 json:"first_name" 姓の文字列 json:"last_name" 他の名前文字列 json:"other_name" ユーザー名文字列 json:"user_name" パスワード文字列 json:"パスワード" メール文字列 json:"email" プロフィール画像文字列 json:"profile_image" ステータス文字列 json:"ステータス" isadmin bool json:"is_admin" ロール文字列 json:"role" 性別文字列 json:"性別" 電話番号文字列 json:"phone_number" createdat time.Time json:"created_at" updatedat time.Time json:"updated_at" }

解決策

役立つように、小さな例をまとめました。前提として、ここで重要なことを説明するために例を簡略化しました。プログラムの一部はまだ共有されていないため、いくつかの推測をする必要があります。この例が機能しない場合は、何が足りないのか教えてください。回答を更新します。まずは、docker を使用してローカルで postgres/redis を実行するコマンドから始めましょう。

###設定###

私が使用したコマンドは次のとおりです:

    docker run -d -p 54322:5432 -e postgres_password=postgres postgres
  1. docker run -d --name redis-stack -p 6379:6379 -p 8001:8001 redis/redis-stack:latest
  2. それではコードに移りましょう。
###プログラム### リーリー

各セクションを詳しく見てみましょう (番号付きのコメントで区切られています):

クライアントの初期化については、特に言うことはありません。ローカル インスタンスを指すクライアントを初期化しました

次に、ダミーデータを使用してデータベースをセットアップします
  1. Redis インスタンスからデータを取得しようとします。見つかった場合は、それを出力してプログラムを終了します
  2. データがキャッシュ内に見つからない場合は、データベースからデータを取得します
  3. 最後に、データベースからデータを取得している場合は、それらのデータもキャッシュに入れる必要があると考えて間違いありません
  4. どちらの場合も、同じフィールドを使用して同じ量のデータを取得します。したがって、この例に固執して、モデルとプロジェクトの種類 (私のプロジェクトは Web プロジェクトではありませんでした) に合わせて調整すれば、問題はないはずです。まだ問題がある場合はお知らせください。ありがとう!

以上がRedis キャッシュが部分的なデータしか返さないのはなぜですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。