GeminiDB の新機能: Redis の広告頻度制御では止められない exHASH

この記事は、Huawei クラウド コミュニティ「GeminiDB の新機能: Redis 広告頻度制御を中毒にする exHASH」 (著者: GeminiDB-Redis Blog) から共有されたものです。

exHash タイプは、フィールドの有効期限をサポートする新しいデータ タイプです。元のハッシュ タイプを拡張したものです。ハッシュ タイプの一般的な機能のサポートに加えて、exHash タイプは、フィールドの有効期限とバージョンの設定もサポートします。データ構造と柔軟性により、多くの複雑なシナリオにおけるビジネス開発作業が簡素化されます。

この記事では、GeminiDB Redis インターフェイスの exHash クラス コマンドを使用して複雑なサービスを実装し、開発の困難さを簡素化する 2 つの一般的なシナリオ (頻度制御シナリオとショッピング カート) を例として取り上げます。

exHash コマンドの使い方の概要

アプリケーションシナリオ

周波数制御シナリオ

頻度制御とは、ユーザーが一定期間(1 日、1 週間、1 か月など)内に特定の操作を実行できる回数を制限することを指し、特定の広告や情報が表示される回数を制御できます。特定のプラットフォームを一定期間内に使用することで露出の過剰や広告疲れを回避しながら、広告効果とユーザーエクスペリエンスを最適化し、広告の場合は広告効果とコンバージョン率も向上させることができます。さらに、頻度制御により、トラフィックのブラッシング、コメントのブラッシング、「いいね!」のブラッシングなどの悪意のある行為も回避できます。

頻度制御の3つの要素はユーザーID、広告ID、トリガー数であり、ユーザーIDがキー、広告IDがフィールド、指定時間内のトリガー数が値となり、まさにこの3つを構成します。周波数制御の要素。まず、各アドバタイズメントに対して指定された頻度制御戦略を構成します。次の図に示すように、頻度制御は次の方法で実現できます。

  • 一番左はハッシュ タイプで実装されています。User_1 の有効期限は、expired コマンドによって 1 日に設定されています。各プッシュは、hincrby を通じて指定されたアドバタイズメントのプッシュ数を増やすために使用されます。各プッシュの前の 1 日のプッシュ数hgetにより指定した広告のpushを取得できるため、手動でクリーニングしなくても1日で自動的にユーザーデータが期限切れになると判断されるため、頻度制御が容易に実現できます。ただし、このソリューションの欠点は、各ユーザー (つまり各キー) に設定できる有効期限は 1 つだけであり、指定された期間内で柔軟な頻度制御戦略 (8 年に 3 回など) を実装することができないことです。時間。
  • アドバタイズメントごとに指定した期間内で柔軟な頻度制御を構成するには、中図に示すように、ハッシュ型を使用して値にタイムスタンプを結合することで実装できますが、このソリューションではビジネス面が増大することは間違いありません。仕事量。
  • 一番右の図に示すように、フィールドの有効期限の設定をサポートする exHash タイプは、頻度制御シナリオにおける Hash タイプの欠点を完全に解決できます。Field は有効期限の設定をサポートしているため、このシナリオでは、プラットフォームは異なる期間の各アドバタイズメントの頻度要件を構成できます。この時点で AD_2 に構成されている頻度制御ポリシーが 8 時間以内に 2 回であると仮定すると、図に示すようになります。次回 AD_2 広告を User_1 にプッシュする準備をする前に、まず exhget User_1 AD_2 コマンドを使用して、値がすでに 2 であることを取得します。その後、プラットフォームのフリークエンシー制御戦略に従って、AD_2 広告を次の時点で User_1 にプッシュすべきではないと判断できます。この時。8 時間が経過し、User_1 の AD_2 フィールドの有効期限が切れると、exhget はこのフィールドの情報を取得できなくなり、AD_2 広告を User_1 にプッシュし続けることができます。

ショッピングカートのシーン

最近のダブル イレブン期間中、多くの学生のショッピング カートは、空にしたいあらゆる種類の宝物でいっぱいだったと思います。ここでは、ショッピング カートのシナリオを例として、このシナリオのいくつかの異なる Redis タイプの実装を紹介します。これらの実装を比較し、スキームの長所と短所を示します。

1.文字列を基にしたショッピングカート機能を実装する

図に示すように、各ユーザーのショッピング カート機能は文字列に基づいて簡単に実装できます。このソリューションでは、User_1#Earphones_1 のように、ユーザー ID とプロダクト ID をキーとして結合する必要があります。キーに対応する値は数量です。一部の製品は期間限定の特別購入であるため、キーに対応する有効期限が設定されています。

関連するコマンドは次のとおりです。

この解決策には次の問題があります。

  • 追加のスプライシングにより、エンコードおよびデコード開発の作業負荷が増加します
  • ユーザーがショッピング カート リストを取得するときは、scan コマンドのプレフィックス マッチングを通じてすべてのキーをスキャンし、get コマンドを通じて対応する値を取得する必要もあります。
  • リストの長さを直接取得したい場合でも、プレフィックス キーの数全体を走査する必要があり、これは複雑な方法です。
  • 重複したユーザー名プレフィックスが多数存在し、ストレージ領域を無駄にしています。

2. ハッシュに基づいたショッピングカート機能の実装

ショッピングカートの管理は、図のようにユーザーIDをキー、商品IDをフィールド、値をショッピングカート内の該当商品の数とするHash型で実装できます。一部の期間限定特別購入商品については、フィールドに対応する値に有効期限をつなぎ合わせて代入します。

関連するコマンドは次のとおりです。

このソリューションには、文字列型のソリューションと比較して多くの最適化が行われています。

  • ユーザーのショッピング カート内のすべての製品のリストを取得するには、1 つの hgetall コマンドのみが必要です
  • 特定のユーザーのリストの長さを取得する場合は、hlen から直接取得します。
  • ユーザー名プレフィックスが多数重複しても問題はありません

ただし、このソリューションには依然として明らかな欠点があります。つまり、一部の期間限定の特別製品の処理が複雑です。User_1 の Keyboard_1 製品の場合、別の数量を追加したい場合、hincrby を直接使用することはできませんが、hget を取得する必要があります。 Keyboard_1 の積の値を最初にデコードし、指定された数値を加えて hset に対応する値をエンコードします。

3. exHashをベースにしたショッピングカート機能の実装

ショッピングカートの管理は図のようにexHash型で実装されており、Hash型と同様にユーザーIDをキー、商品IDをフィールド、値は該当する商品の数となります。ショッピングカート。一部の期間限定特別アイテムについては、exHash 型でフィールドの有効期限を設定できるため、hset コマンドで直接有効期限を設定できます。

関連するコマンドは次のとおりです。

ハッシュ タイプと比較したこのソリューションの最適化は、有効期限をフィールドごとに直接設定できるため、ビジネス側での使用が簡単かつ効率的になるという事実に主に反映されています。exHash 型に関するコマンドは Hash 型と同様であり、利用時の学習コストが非常に低く、ビジネス側での変換コストも比較的低いことがわかります。

図 1.1 Huawei Mall のショッピング カートでのユーザー ID、製品 ID、製品数量、および排出タイプのコマンドの使用。

要約する

この記事では、GeminiDB Redis インターフェイスの exHash タイプの特徴、使用法、および適用シナリオを紹介します。ネイティブ Redis ハッシュ タイプに似た構文を持つ exHash タイプを顧客に提供し、ハッシュ タイプの使用から分離し、さまざまな複雑なシナリオのソリューションとしてフィールドの有効期限とバージョンを個別に設定することをサポートします。将来的には、GeminiDB Redis インターフェイスは、顧客が簡単に運用、保守、効率的に開発できるよう、より便利なエンタープライズ レベルの機能を開発し続けます。

ビジネスで安定した信頼性の高い KV データベースが必要な場合は、GeminiDB Redis インターフェイスを試すことができます。

チームの以前のテクノロジー共有ディレクトリ: http://3ms.huawei.com/km/blogs/details/13802925コミュニケーション グループに参加することもできます。

クリックしてフォローし、できるだけ早くHuawei Cloudの新しいテクノロジーについて学びましょう~

OpenAI が ChatGPT Voice Vite 5 をすべてのユーザーに無料で公開、正式にリリース オペレーターの魔法の操作: バックグラウンドでネットワークを切断、ブロードバンド アカウントを非アクティブ化、ユーザーに光モデムの変更を強制 Microsoft オープン ソースの ターミナル チャット プログラマーが ETC 残高を改ざんし、年間 260 万元以上を横領 Redis の父が使用する Pure C 言語コードは、Telegram Bot フレームワークを実装しています あなたがオープンソース プロジェクトのメンテナである場合、この種の返答にどこまで耐えることができますか? Microsoft Copilot Web AI は 12 月 1 日に正式にリリースされ、中国の OpenAI をサポートします 元 CEO 兼社長の Sam Altman 氏と Greg Brockman 氏が Microsoft に加わりました Broadcom は VMware の買収に成功したと発表しました
{{名前}}
{{名前}}

おすすめ

転載: my.oschina.net/u/4526289/blog/10150733
おすすめ