Redis の種類とエンコーディングの原則と使用法は何ですか?
摘要
Redis是一款开源的高性能key-value数据库,广泛应用于各种场景。在Redis中,数据类型(type)和编码(encoding) 是非常重要的概念。本篇博客将详细介绍Redis支持的数据类型以及相应的编码方式和底层实现原理。
要查看Redis某个key的内部编码,可以使用Redis命令OBJECT ENCODING key
。其中,key
是你想要查询的键名。例如,如果你想要查询名为mykey
的键的内部编码,可以执行以下命令:
1 |
|
redisObject
在 Redis 中,redisObject 是 Redis 中最基本的数据结构之一。redisObject 用于表示 Redis 中的键值对中的值,它可以是字符串、整数、列表、哈希表等任意一种 Redis 数据类型。
redisObject 的定义如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
type:表示 redisObject 的类型。
encoding:表示 redisObject 的编码方式。
refcount:表示当前 redisObject 被引用的次数。
ptr: ptr字段则是一个指针,指向实际的 Redis 对象。
Redis源码encoding取值有如下几种:
1 2 3 4 5 6 7 8 9 10 |
|
类型与编码介绍
Redis支持五种主要的数据类型:字符串(string)、列表(list)、集合(set)、有序集合(sorted set)和哈希(hash)。每种数据类型都有对应的编码方式。
数据类型与编码方式总览如下:
数据类型 | 编码方式 |
---|---|
字符串 | int、embstr、raw |
哈希表 | ziplist、hashtable |
列表 | ziplist、linkedlist、quicklist |
集合 | intset、hashtable |
有序集合 | ziplist、skiplist |
String
String は Redis の最も基本的なデータ型で、通常はテキストまたはバイナリ データを保存するために使用されます。 Redis は 2 つのエンコード方式をサポートしています。
Redis では、文字列が整数として表現できる場合、文字列は整数に変換され、int エンコードを使用して保存されます。 int エンコードの利点は、ストレージ容量が小さく、操作効率が高いことです。欠点は、整数のみを保存でき、文字列操作をサポートしていないことです。
embstr(embstr-encoded string): 44 バイト未満の長さの文字列を保存します。文字列が比較的短い場合は、このエンコード方法を使用して保存します。メモリ使用量を削減します。
- raw(生エンコードされた文字列):
44 バイトを超える文字列を保存する. 文字列が比較的長い場合、このエンコード方法を使用して文字列が保存されます。
- ziplist: Redis3.2 バージョンより前、
List 内の各文字列の長さが 64 バイト未満であり、リスト内の文字列の長さが 64 バイト未満の場合要素数が 512 未満の場合、List オブジェクトは ziplist エンコードを使用し、それ以外の場合はリンクリスト エンコードが使用されます。 ziplist は、メモリを節約するコンパクトな圧縮リスト構造です。小さなリストに適しています。
- Linkedlist は、リンク リスト構造を通じてあらゆるサイズのリストをサポートするデータ構造の一種です。ただし、リストの長さが増加するにつれて、そのメモリ使用量も増加します。
- クイックリスト:
Redis 3.2 バージョン で導入されたクイックリストは、複数のジップリストで構成されるリスト構造であり、パフォーマンスを確保するだけでなく、メモリも節約できます。大規模なリストに適しています。
- intset:
コレクション内の要素がすべて整数の場合、Redis は intset エンコードを使用して を格納します。 intset エンコーディングの利点は、ストレージ容量が小さく、操作効率が高いことです。
- ハッシュテーブル:
コレクション内の要素に文字列が含まれている場合、Redis はハッシュテーブル エンコーディングを使用して を保存します。ハッシュテーブル エンコーディングの利点は、あらゆるタイプの要素を格納でき、文字列操作をサポートしていることです。欠点は、保管スペースが比較的大きく、作業効率が比較的低いことです。
- ziplist:
保存する要素は 128 未満で、すべての要素のサイズは 64 バイト未満です。ziplist エンコードを使用します。、ziplist は順序付けられた小規模なコレクションに適した、コンパクトな圧縮リスト構造。
- skiplist: Skiplist は、高速なクエリと並べ替えをサポートするスキップ リスト構造です。大規模な注文コレクションに適しています。
- ziplist:
ハッシュ オブジェクトに格納されるすべてのキー値の文字列長は 64 バイト未満であり、キーと値のペアの数はが 512 未満の場合、Redis は ziplist エンコーディングを使用して保存します。ジップリスト エンコード方式の利点は、保存スペースが小さく、操作効率が高いことです。欠点は、高速キー検索操作がサポートされていないことです。
- 上記の条件に加えて、Redis はハッシュ テーブル エンコーディングを使用して保存します。ハッシュテーブル エンコーディングの利点は、高速なキー検索操作をサポートしていることです。欠点は、保管スペースが比較的大きく、作業効率が比較的低いことです。
以上がRedis の種類とエンコーディングの原則と使用法は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











1. [スタート]メニューを起動し、[cmd]と入力し、[コマンドプロンプト]を右クリックし、[管理者として実行]を選択します。 2. 次のコマンドを順番に入力します (注意してコピーして貼り付けてください): SCconfigwuauservstart=auto、Enter キーを押す SCconfigbitsstart=auto、Enter キーを押す SCconfigcryptsvcstart=auto、Enter キーを押す SCconfigtrustedinstallerstart=auto、Enter キーを押す SCconfigwuauservtype=share、Enter キーを押す netstopwuauserv 、enter netstopcryptS を押す

GolangAPI のキャッシュ戦略により、パフォーマンスが向上し、サーバーの負荷が軽減されます。一般的に使用される戦略は、LRU、LFU、FIFO、TTL です。最適化手法には、適切なキャッシュ ストレージの選択、階層型キャッシュ、無効化管理、監視とチューニングが含まれます。実際には、データベースからユーザー情報を取得する API を最適化するために LRU キャッシュが使用されます。それ以外の場合は、データベースからデータを取得した後にキャッシュを更新できます。

PHP 開発では、キャッシュ メカニズムにより、頻繁にアクセスされるデータがメモリまたはディスクに一時的に保存され、データベース アクセスの数が削減され、パフォーマンスが向上します。キャッシュの種類には主にメモリ、ファイル、データベース キャッシュが含まれます。キャッシュは、組み込み関数またはサードパーティのライブラリ (cache_get() や Memcache など) を使用して PHP に実装できます。一般的な実用的なアプリケーションには、データベース クエリ結果をキャッシュしてクエリ パフォーマンスを最適化したり、ページ出力をキャッシュしてレンダリングを高速化したりすることが含まれます。キャッシュ メカニズムにより、Web サイトの応答速度が効果的に向上し、ユーザー エクスペリエンスが向上し、サーバーの負荷が軽減されます。

Redis キャッシュを使用すると、PHP 配列ページングのパフォーマンスを大幅に最適化できます。これは、次の手順で実現できます。 Redis クライアントをインストールします。 Redisサーバーに接続します。キャッシュ データを作成し、データの各ページをキー「page:{page_number}」を持つ Redis ハッシュに保存します。キャッシュからデータを取得し、大規模な配列での高コストの操作を回避します。

まず、システム言語を簡体字中国語表示に設定して再起動する必要があります。もちろん、以前に表示言語を簡体字中国語に変更したことがある場合は、この手順をスキップできます。次に、レジストリ regedit.exe の操作を開始し、左側のナビゲーション バーまたは上部のアドレス バーで HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlNlsLanguage に直接移動し、InstallLanguage キーの値と Default キーの値を 0804 に変更します (英語に変更する場合)。まずシステムの表示言語を en-us に設定し、システムを再起動してから、すべてを 0409 に変更します) この時点でシステムを再起動する必要があります。

1. まず、デスクトップ上の[このPC]アイコンをダブルクリックして開きます。 2. 次に、マウスの左ボタンをダブルクリックして [C ドライブ] に入ります。システム ファイルは通常、自動的に C ドライブに保存されます。 3. 次に、C ドライブで [windows] フォルダーを見つけ、ダブルクリックしてに入ります。 4. [windows]フォルダーに入ったら、[SoftwareDistribution]フォルダーを見つけます。 5. 入力後、win11 のダウンロード ファイルとアップデート ファイルがすべて含まれている [ダウンロード] フォルダーを見つけます。 6. これらのファイルを削除したい場合は、このフォルダー内で直接削除してください。

Redis は、高性能のキー/値キャッシュです。 PHPRedis 拡張機能は、Redis サーバーと対話するための API を提供します。 Redis に接続し、データを保存および取得するには、次の手順を使用します。 接続: Redis クラスを使用してサーバーに接続します。ストレージ: set メソッドを使用してキーと値のペアを設定します。取得: get メソッドを使用してキーの値を取得します。

さまざまな PHP バージョンで関数のパフォーマンスを最適化する方法には、分析ツールを使用して関数のボトルネックを特定すること、オペコード キャッシュを有効にするか外部キャッシュ システムを使用すること、型アノテーションを追加してパフォーマンスを向上させること、および PHP バージョンに応じて適切な文字列連結およびソート アルゴリズムを選択することなどが含まれます。
