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

Redis を使用したインメモリ キャッシュの習得:高速で信頼性の高いデータ取得

Redis を使用したインメモリ キャッシュの習得:高速で信頼性の高いデータ取得

迅速に応答する必要があるウェブ アプリや API を構築している場合、多くの場合、キャッシュが秘密のソースになります。

これがないと、サーバーはデータベース、サードパーティ API、または低速ストレージ システムから同じデータを何度も取得するために時間を無駄にする可能性があります。

しかし、そのデータをメモリに保存すると、同じ情報が数ミリ秒で提供されます。そこで Redis が登場します。

Redis は、データを RAM に保存し、即座に取得できる高速かつ柔軟なツールです。ダッシュボードの構築、ソーシャル メディアへの投稿の自動化、ユーザー セッションの管理のいずれの場合でも、Redis を使用するとシステムをより高速、より効率的に、拡張しやすくすることができます。

この記事では、メモリ内キャッシュの仕組みと、Redis が多くの開発者にとって頼りになる選択肢である理由について説明します。

目次

  • インメモリ キャッシュとは何ですか?

  • Redis とは何ですか?

  • Redis の使用方法

    • Redis のインストール

    • Redis データ型

    • Python を使用した Redis

  • 実際の使用例

  • 結論

メモリ内キャッシュとは何ですか?

インメモリ キャッシュは、必要になるたびにデータベースや外部ソースからデータを取得するのではなく、システムの RAM にデータを保存する方法です。

RAM はディスク ストレージに比べて信じられないほど高速であるため、キャッシュされたデータにほぼ瞬時にアクセスできます。このアプローチは、API 応答、ユーザー プロフィール、レンダリングされた HTML ページなど、あまり変更されない情報に最適です。

アプリは、同じクエリや API 呼び出しを繰り返し実行するのではなく、最初にキャッシュをチェックします。データが存在する場合は、すぐに使用されます。そうでない場合は、ソースから取得し、キャッシュに保存してから返します。

この手法により、バックエンドの負荷が軽減され、応答時間が短縮され、トラフィックが多い場合のアプリのパフォーマンスが大幅に向上します。

Redis とは

Redis は、開発者がデータをリアルタイムでキャッシュおよび管理するために使用するオープンソースのインメモリ データ ストアです。

従来のデータベースとは異なり、Redis はすべてをメモリに保存するため、データの取得が驚くほど高速になります。しかし、Redis は単なるキーと値のストアではありません。文字列やリストからセット、ハッシュ、ソートされたセットまで、幅広いデータ型を提供します。

Redis は、pub/sub メッセージング、ストリーム、地理空間クエリなどのより高度なタスクを処理することもできます。 Redis はその強力な機能にもかかわらず、軽量で簡単に始めることができます。

ローカル マシンで実行したり、サーバーにデプロイしたり、クラウド プロバイダーが提供するマネージド Redis サービスを使用したりすることもできます。大手企業から信頼されており、キャッシュやセッション ストレージからリアルタイム分析やジョブ キューに至るまで、あらゆる種類のアプリケーションで使用されています。

Redis の使用方法

Redis のインストール

Redis を立ち上げて実行するのは驚くほど簡単です。オペレーティング システムに基づいたインストール手順については、ドキュメントを参照してください。

Redis が動作していることを確認するには、次のコマンドを実行します。

redis-cli ping
# Should respond with "PONG"

Redis データ型

Redis には、柔軟な方法でデータを保存および管理できるいくつかの組み込み型が用意されています。

文字列 :単純なキー ↔ 値のペア。

SET username "Emily"
GET username

リスト :キューやタイムラインに最適な順序付きコレクション。

LPUSH tasks "task1"
RPUSH tasks "task2"
LRANGE tasks 0 -1

ハッシュ :JSON オブジェクトと同様、ユーザー プロファイルに最適です。

HSET user:1 name "Alice"
HSET user:1 email "alice@example.com"
HGETALL user:1

セット :順序付けされていないコレクション。タグやユニークなアイテムに最適です。

SADD tags "python"
SADD tags "redis"
SMEMBERS tags

ソートされたセット :スコア付きセット – リーダーボードに役立ちます。

ZADD leaderboard 100 "Bob"
ZADD leaderboard 200 "Carol"
ZRANGE leaderboard 0 -1 WITHSCORES

Redis はビットマップ、ハイパーログログ、ストリーム、地理空間インデックスもサポートしており、データ構造のサポートを拡大し続けています。

Python を使用した Redis

Python で作業している場合、Redis の使用も同様に簡単です。 redis をインストールした後 pip install redis を使用した Python ライブラリ を使用すると、Redis サーバーに接続して、すぐにキーの設定と取得を開始できます。

Redis で動作する簡単な Python コードをいくつか示します。

import redis
# Connect to the local Redis server on default port 6379 and use database 0
r = redis.Redis(host='localhost', port=6379, db=0)
# --- Basic String Example ---
# Set a key called 'welcome' with a string value
r.set('welcome', 'Hello, Redis!')
# Get the value of the key 'welcome'
# Output will be a byte string: b'Hello, Redis!'
print(r.get('welcome'))
# --- Hash Example (like a Python dict) ---
# Create a Redis hash under the key 'user:1'
# This hash stores fields 'name' and 'email' for a user
r.hset('user:1', mapping={
 'name': 'Alice',
 'email': 'alice@example.com'
})
# Get all fields and values in the hash as a dictionary of byte strings
# Output: {b'name': b'Alice', b'email': b'alice@example.com'}
print(r.hgetall('user:1'))
# --- List Example (acts like a queue or stack) ---
# Push 'Task A' to the left of the list 'tasks'
r.lpush('tasks', 'Task A')
# Push 'Task B' to the left of the list 'tasks' (it becomes the first item)
r.lpush('tasks', 'Task B')
# Retrieve all elements from the list 'tasks' (from index 0 to -1, meaning the full list)
# Output: [b'Task B', b'Task A']
print(r.lrange('tasks', 0, -1))

ユーザーのセッション データを保存したり、バックグラウンド タスクをキューに保存したり、レンダリングされた HTML ページをキャッシュしたりすることもできます。 Redis コマンドは高速かつアトミックであるため、高トラフィック環境でのデータの衝突や不整合を心配する必要はありません。

Redis の最も便利な機能の 1 つはキーの有効期限です。一定期間後にキーを自動的に削除するように Redis に指示できます。これは、セッション データや一時キャッシュの場合に特に便利です。

キーに有効期間 (TTL) を設定できるため、Redis はキーを自動的に削除します。

SET session:1234 "some data" EX 3600 # Expires in 1 hour

Redis は永続性もサポートしているため、メモリ内ストアであっても、データは再起動後も保持されます。

Redis は小規模なアプリに限定されません。レプリケーション、クラスタリング、センチネルを通じて簡単に拡張できます。

レプリケーションを使用すると、データの読み取り専用コピーを作成できるため、負荷の分散に役立ちます。クラスタリングでは、データがチャンクに分割され、複数のサーバーに分散されます。また、Sentinel は自動フェイルオーバーを処理して、1 台のサーバーがダウンした場合でもシステムを稼働し続けます。

実際の使用例

Redis の最も一般的な用途の 1 つは、API レスポンスのキャッシュです。

気象データを表示するアプリがあるとします。ユーザーがページを読み込むたびに天気予報 API を呼び出すのではなく、各都市の応答を Redis に 5 分から 10 分間キャッシュできます。こうすることで、新しいデータを時々フェッチするだけになり、アプリの実行速度が大幅に向上し、コストも安くなります。

もう 1 つの強力な使用例はセッション管理です。 Web アプリケーションでは、ログインしたすべてのユーザーは、自分が誰で、何をしているのかを追跡するセッションを持ちます。 Redis は高速で一時的なため、このセッション データを保存するのに最適な場所です。

セッション ID をキーとして保存し、ユーザーの情報をハッシュとして保存できます。有効期限を追加すると、自動セッション タイムアウトが組み込まれます。Redis は非常に高速で、高い同時アクセスをサポートしているため、数千のユーザーが同時にログインするアプリケーションに最適です。

結論

インメモリ キャッシュは、アプリを高速化するための最もシンプルかつ効果的な方法の 1 つであり、Redis を使用すると、これを驚くほど簡単に実装できます。これは単なるキャッシュではなく、高速でスケーラブルなリアルタイム システムを構築するためのツールキットです。いくつかのページまたは API 応答をキャッシュすることから小規模に始めることができ、ニーズが増大するにつれて、Redis も成長していきます。

始めたばかりの場合は、Redis をローカルで実行し、さまざまなデータ型を試してみてください。文字列を保存したり、リストを使用して単純なタスク キューを構築したり、ソート セットを使用してユーザー スコアを追跡したりできます。調べれば調べるほど、Redis がアプリケーションの高速、スマート、効率的な実行にどのように役立つかがわかります。

この記事は気に入りましたか? Linkedin で私とつながりましょう。別のトピックでお会いしましょう。

無料でコーディングを学びましょう。 freeCodeCamp のオープンソース カリキュラムは、40,000 人以上の人々が開発者としての職に就くのに役立ちました。始めましょう


  1. Redis を使用して超高速パフォーマンスを実現する ASP.NET Core のマスター分散キャッシュ

    はじめに ASP.NET Core アプリケーションを構築する場合、最大の課題の 1 つはパフォーマンスです。アプリケーションが成長し、より多くのユーザーがそれを使用し始めると、データベースは同じデータに対して何度もヒットします。これにより、アプリケーションの速度が低下し、サーバーの負荷が増加します。 ここで、Redis による分散キャッシュが役立ちます。 毎回データベースを呼び出すのではなく、頻繁に使用するデータを Redis のような高速なインメモリ システムに保存します。次回誰かが同じデータをリクエストすると、そのデータはデータベースではなくキャッシュから即座に返されます。 この

  2. Redis PERSIST –Redisでキーの有効期限を削除する方法

    このチュートリアルでは、コマンド– PERSIST を使用して、redisデータストアに保存されているキーの有効期限(タイムアウト)を削除する方法について学習します。 redis-cliで。 EXPIRE/PEXPIREまたはEXPIREAT/PEXPIREATを使用してキーに有効期限を設定すると、その状態は揮発性になります。 (有効期限が設定されたキー)。 PERSISTコマンドは、その状態を永続化に変更します それに関連付けられた有効期限を削除することによって状態。 redis PERSISTコマンドの構文は次のとおりです:- 構文:- redis host:post> PER