Redis
 Computer >> コンピューター >  >> プログラミング >> Redis

地理ベースのコンテンツ コントロール用の Next.js ミドルウェアでのエッジ フラグの実装

Edge-Flags を使用すると、サーバーレス アプリケーションの機能フラグを簡単に管理できます。これは、強力な地理位置情報ルールを備えた Upstash Redis の上に構築されています。今日は、Next.js ミドルウェアで Edge-Flags を使用して、ユーザーの位置に基づいてリクエストを書き換える方法の非常に簡単な例を示します。

フラグを作成する

このサンプル アプリでは、EU 内のユーザーのみがコンテンツを利用できるようにしたいため、新しい Redis データベースを作成して、エッジ フラグ ページに移動します。作成したデータベースと production を選択します。 環境。

次に、eu-countries という名前の新しいフラグを作成します。 EU 内のすべての国を追加します。

地理ベースのコンテンツ コントロール用の Next.js ミドルウェアでのエッジ フラグの実装

パッケージのセットアップとインストール

<オル>
  • 既存の Next.js アプリがない場合は、npx create-next-app を使用して作成できます。 @upstash/edge-flags をインストールします と @upstash/redis パッケージ:
  • $ npm install @upstash/edge-flags @upstash/redis
    <オル>
  • 新しいファイル middleware.ts を作成します プロジェクトのルートに次のコードを追加します。
  • /middleware.ts
    import { NextRequest, NextResponse } from "next/server";
     
    import { Client as EdgeFlags } from "@upstash/edge-flags";
    import { Redis } from "@upstash/redis";
     
    const edgeFlags = new EdgeFlags({ redis: Redis.fromEnv() });
    export default async function middleware(
     req: NextRequest,
    ): Promise<NextResponse> {
     const enabled = await edgeFlags
     .getFlag("eu-countries", req.geo ?? {})
     .catch((err) => {
     console.error(err);
     return false;
     });
     
     if (!enabled) {
     const url = new URL(req.url);
     url.pathname = "/blocked";
     return NextResponse.rewrite(url);
     }
     
     return NextResponse.next();
    }
     
    export const config = {
     matcher: "/",
    };
    <オル>
  • 非常に洗練された /blocked を作成します。 ページ
  • app/blocked/page.tsx
    export default function Page() {
     return <div> You are not in the EU</div>;
    }

    あとは、プロジェクトを Vercel にデプロイするだけです。

    $ npx vercel

    Upstash コンソールから環境変数をコピーするか、Upstash 統合を使用して、必ず環境変数を Vercel に追加してください。

    地理ベースのコンテンツ コントロール用の Next.js ミドルウェアでのエッジ フラグの実装

    試してみる

    地理位置情報は開発中

    ローカルで開発する場合、地理位置情報データは利用できません。アプリを実際に Vercel にデプロイしてテストする必要があります。

    これで、アプリのインデックス ページにアクセスしてテストできるようになりました。 EU 内にいる場合はコンテンツが表示されます。それ以外の場合は /blocked にリダイレクトされます。 ページ。

    リンク

    • エッジフラグ
    • コード例
    • サンプルアプリ

    1. LangChain と Upstash Redis を使用したチャット履歴の永続化

      LangChain は、人間と AI の間で会話を行うためのシンプルなインターフェイスを提供します。 BufferMemory を使用するように簡単に設定できます。 、会話履歴をメモリに保存できるようになります。一部のユースケースではこれで十分かもしれませんが、アプリではチャット履歴の長期保持が必要な場合もあります。幸いなことに、これを Upstash Redis インスタンスに交換することも同様に簡単です。 LangChain は、ioredis などの Redis 用の複数の統合を提供します 、node-redis そしてUpstash Redis。 Upstash Redis クライア

    2. Redisキー–1つ以上のキーをredisデータストアに保存する方法

      このチュートリアルでは、コマンド-redis-cliのキーを使用してredisデータストアに保存されている1つ以上のキーを取得する方法について学習します。 このコマンドは、指定されたパターンに一致する1つ以上のキーを返すために使用されます。パターンはglobスタイルで指定されます。 グロブスタイルパターン:- *ワイルドカード:- スペースを含む0個以上の文字に一致します。たとえば、foo *はfooccc、foo、fooqに一致します。 ?ワイルドカード:- スペースを含む任意の文字の1つと正確に一致します。たとえば、f?0はfao、fbo、fcoと一致します。 [list