Remote Dictionary Server の正式名である Redis は、Salvatore Sanfilippo によって開発されたオープンソースの高性能キー/値データベース ストレージ ソリューションであり、さまざまなデータ構造をサポートできます。文字列、リスト、ハッシュ テーブル、セット、ソートされたセットなど。インターネット分野では、大規模なトラフィックと大量の同時読み取り/書き込みリクエストに直面して、Redis は優れたパフォーマンスと柔軟な構成を備えた代表的なデータ ストレージ ソリューションとなっています。
Redis は、他の一般的なリレーショナル データベース (MySQL など) と比較して優れたパフォーマンスを発揮します。これは主に、データ ストレージと処理方法が異なるためです。 Redis はメモリを使用してデータを保存しますが、MySQL などのリレーショナル データベースはデータをハードディスクに保存します。メモリの読み取りおよび書き込み速度はハードディスク IO 操作よりもはるかに速いため、Redis は効率的な読み取りおよび書き込みパフォーマンスを提供できます。さらに、Redis は CPU のマルチコア機能を最大限に活用したマルチスレッド操作もサポートし、マスター/スレーブ レプリケーションと Sentinel メカニズムもサポートして、高いデータ可用性と自動フェイルオーバーを実現します。
以下では、Redis の 5 つのデータ構造とその特定のコード実装に焦点を当てます:
1. String
Redis では、文字列型が最も一般的に使用されます。は最も単純なデータ型で、挿入、削除、変更などの一般的な文字列操作をサポートします。文字列型は、ビット演算、増加、減少などの特殊な演算もサポートしています。カウンターを実装するコードは次のとおりです:
# 连接Redis import redis r = redis.Redis(host='localhost', port=6379, db=0) # 递增计数器 r.set('counter', 0) r.incr('counter') # 获取计数器的值 counter_val = r.get('counter') print(counter_val)
2. List
Redis のリスト タイプは、配列やリストなどの複数の値を格納するために使用できます。リストは、リストへの要素の追加と削除、リストの長さの取得など、要素に対する基本的な操作もサポートします。以下は簡単なリストの例です:
# 连接Redis import redis r = redis.Redis(host='localhost', port=6379, db=0) # 向列表中添加元素 r.lpush('mylist', 1) r.lpush('mylist', 2) r.lpush('mylist', 3) # 获取列表的所有元素 mylist_vals = r.lrange('mylist', 0, -1) print(mylist_vals)
3. ハッシュ テーブル
ハッシュ テーブル データ構造は、Redis で頻繁に使用されるデータ構造でもあります。ハッシュ テーブルに格納されるのは、データを格納するキーと値のペアのセットです。ハッシュ テーブルは、キーによる値の取得、値の変更、キーと値の削除などの基本的な操作もサポートします。ハッシュ テーブルの例を次に示します:
# 连接Redis import redis r = redis.Redis(host='localhost', port=6379, db=0) # 向哈希表中添加key-value r.hset('myhash', 'name', 'jack') r.hset('myhash', 'age', 20) r.hset('myhash', 'sex', 'male') # 获取哈希表的某个key-value name_val = r.hget('myhash', 'name') print(name_val) # 获取哈希表所有的key-value all_vals = r.hgetall('myhash') print(all_vals)
4. コレクション
Redis のコレクションは Python のコレクションに似ており、順序付けされていない複数の要素を格納できます。セットは、追加、削除、検索、およびセット要素の交差、和集合、差分などの操作をサポートします。以下はセットの例です:
# 连接Redis import redis r = redis.Redis(host='localhost', port=6379, db=0) # 向集合中添加元素 r.sadd('myset', 1) r.sadd('myset', 2) r.sadd('myset', 3) # 获取集合中所有元素 myset_vals = r.smembers('myset') print(myset_vals)
5. 順序付きセット
順序付きセットはセットに似ており、やはり複数の要素で構成されます。ただし、順序付きセットでは、各要素にスコアが関連付けられており、要素はスコアによって並べ替えることができます。ソートされたセットは、追加、削除、検索、および要素の交差、和集合、差分などの操作もサポートします。以下は順序付きセットの例です:
# 连接Redis import redis r = redis.Redis(host='localhost', port=6379, db=0) # 向有序集合中添加元素 r.zadd('mysortedset', {'a': 1, 'b': 2, 'c': 3}) # 按照元素分数的升序获取元素 all_vals = r.zrange('mysortedset', 0, -1) print(all_vals)
上記の 5 つのデータ構造は Redis で最も一般的に使用されるデータ構造であり、実際の開発で使用される可能性が非常に高いです。この記事のコードは次のとおりです。単なる例ですが、開発者は特定のアプリケーション シナリオに応じて柔軟に使用する必要があります。もちろん、上記の 5 つのデータ構造に加えて、Redis はビットマップ、HyperLogLog などの他のデータ構造もサポートしています。これらのデータ構造も、特定の特定の状況では非常に役立ちます。
つまり、Redis は、メモリを最大限に活用し、マルチスレッドの読み取りと書き込みをサポートし、さまざまなデータ構造と豊富なアプリケーション シナリオを提供することで、人気のある高性能データ ストレージ ソリューションになりました。
以上がRedis: 高性能データ ストレージ ソリューションの傑作の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。