目次
Redis の基本的なデータ構造と PHP の実装
ホームページ バックエンド開発 PHPチュートリアル PHP は Redis の基本データ構造を実装します

PHP は Redis の基本データ構造を実装します

Jul 04, 2018 pm 05:42 PM

この記事では、PHP で実装された Redis の基本的なデータ構造を中心に紹介します。参考になる価値があるので、皆さんに共有します。必要な友人は参考にしてください。

Redis の基本的なデータ構造と PHP の実装


  • Redis (REmote DIctionary Server) は、ANSI C 言語で書かれたオープン ソースのログ タイプで、BSD プロトコルに準拠し、ネットワークをサポートし、以下に基づいています。 Key-Value データベースと複数言語の API を提供

  • #Redis は、値 (value) が文字列 (String) になる可能性があるため、データ構造サーバーと呼ばれることがよくあります。ハッシュ (Map) )、リスト (list)、コレクション (Set)、および順序付きセット (ソートされたセット) およびその他のタイプ

##Redis の構成と接続

// Redis.php
return [
'host' => '127.0.0.1',
'port' => '6379'
];

// RedisTest.php
$redis = new redis();
$redisConf = include 'Redis.php';
$redis->connect($redisConf['host'], $redisConf['port']);
ログイン後にコピー

Redis キー (キー)

// redis key操作
$redis->exists($key); // 判断key值是否存在
$redis->expire($key, 10); // 设置key在10秒后过期
ログイン後にコピー

Redis 文字列 (文字列)

// redis string 字符串
$redis->set($key, $val);
$redis->incr($key); // key值+1,除非val是整数,否则函数执行失败
$redis->decr($key); // key值-1,同上
$redis->append($key, "ue"); // 追加key值内容
$redis->strlen($key); // 返回key值的长度
// 当第一次设置key值后,key值的数据类型就不能改变了。
$redis->del($key); // 删除key值
ログイン後にコピー

Redis ハッシュ (ハッシュ)

  • Redis ハッシュは文字列型 フィールドと値のマッピング テーブル、ハッシュは

    オブジェクトの保存に特に適しています

  • Redis の各ハッシュは 2^(32)-1(以上) を保存できます400 億) のキーと値のペア

//redis hash 哈希
$redis->hset($key, 'field1', 'val1'); // 设置一个key-value键值对
$redis->hmset($key, array('field2'=>'val2', 'field3'=>'val3')); // 设置多个k-v键值对
$redis->hget($key, 'field2'); // 获取hash其中的一个键值
$redis->hmget($key, array('field2', 'field1')); // 获取hash的多个键值
$redis->hgetall($key); // 获取hash中所有的键值对
$redis->hlen($key); // 获取hash中键值对的个数
$redis->hkeys($key); // 获取hash中所有的键
$redis->hvals($key); // 获取hash中所有的值
ログイン後にコピー
Redis list(List)

  • Redis リストは単純な文字列リストです。 ,

    挿入順に並べ替えます、要素リストの先頭 (左) または末尾 (右) を追加できます

  • Redis のリストには最大で 6 個のリストを保存できます。 2^( 32)-1 要素

// redis list 列表
$index = $start = 0;
$redis->lpush($key, 'val1', 'val2'); // 在list的开头添加多个值
$redis->lpop($key); // 移除并获取list的第一个元素
$redis->rpop($key); // 移除并获取list的最后一个元素 $stop = $redis->llen($key) - 1; // 获取list的长度
$redis->lindex($key, $index); // 通过索引获取list元素
$redis->lrange($key, $start, $stop); // 获取指定范围内的元素
ログイン後にコピー
Redis セット (セット)

  • Redis のセットのタイプ文字列シーケンスのコレクション。コレクションのメンバーは一意です。つまり、

    重複データがコレクションに現れることはできません

  • Redis のコレクションはハッシュ テーブルを通じて実装されるため、 の追加と削除により検索が複雑になります。 is O(1)

  • Redis のコレクションには最大 2^(32)-1 のメンバーを保存できます##
    // redis set 无序集合
    $redis->sadd($key, 'val1', 'val2'); // 向集合中添加多个元素
    $redis->scard($key); // 获取集合元素个数
    $redis->spop($key); // 移除并获取集合内随机一个元素
    $redis->srem($key, 'val1', 'val2'); // 移除集合的多个元素
    $redis->sismember($key, 'val1'); // 判断元素是否存在于集合内
    ログイン後にコピー

    Redis順序付きセット (ソート済みセット)

Redis 順序付きセットも、セットと同様に文字列型要素のコレクションであり、重複するメンバーは許可されません

違いは、各要素が
    double 型スコア
  • に関連付けられることです。 Redis はスコアを使用してセットのメンバーを小さいものから大きいものに並べ替えます

  • #順序付けられたセットのメンバーは一意ですが、スコアは繰り返すことができます
  • コレクションはハッシュ テーブルを通じて実装されるため、追加、削除、検索の複雑さは O(1) です。コレクション内のメンバーの最大数は 2^(32)-1

  • // redis sorted set 有序集合
    // 有序集合里的元素都和一个分数score关联,就靠这个分数score对元素进行排序
    $redis->zadd($key, $score1, $val1, $score2, $val2); // 向集合内添加多个元素
    $redis->zcard($key); // 获取集合内元素总数
    $redis->zcount($key, $minScore, $maxScore); // 获取集合内分类范围内的元素
    $redis->zrem($key, $member1, $member2); // 移除集合内多个元素
    ログイン後にコピー

    Redis HyperLogLog
  • Redis HyperLogLog はい カーディナリティ統計を行うために使用されるアルゴリズム (
データ セット内の非反復要素の数の計算
) HyperLogLog の利点は、入力要素の数または量が非常に大きい場合に、カーディナリティの計算に必要なスペースは常に固定で非常に小さいです。

    Redis では、約 2^(64) 個の異なる要素のカーディナリティを計算するのに各 HyperLogLog キーに必要なメモリは 12 KB だけです。 。これは、要素が多いほどカーディナリティの計算時に消費されるメモリが増えるコレクションとは対照的です。
  • HyperLogLog は入力要素に基づいてカーディナリティのみを計算するため、入力要素自体を保存しないため、HyperLogLog は各入力要素をコレクションのように返すことはできません。

  • $redis->pfAdd('key1', array('elem1', 'elem2'));// 添加指定元素到HyperLogLog中
    $redis->pfAdd('key2', array('elem3', 'elem2'));// 将多个HyperLogLog合并为一个HyperLogLog
    $redis->pfMerge('key3', array('key1', 'key2'));
    $redis->pfCount('key3'); // 返回HyperLogLog的基数估计值: int(3)
    ログイン後にコピー
    以上がこの記事の全内容です。皆様の学習に役立ちます。関連コンテンツにもご注目ください。PHP 中国語 Web サイト!
  • 関連する推奨事項:

  • PHP の Define と Const の違い


    PHP と Web ページ間の相互作用


    PHP

    での ob_start 使用状況分析

    以上がPHP は Redis の基本データ構造を実装しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Windows 11 10.0.22000.100 のインストール時の 0x80242008 エラーの解決策 Windows 11 10.0.22000.100 のインストール時の 0x80242008 エラーの解決策 May 08, 2024 pm 03:50 PM

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

Golang API のキャッシュ戦略と最適化 Golang API のキャッシュ戦略と最適化 May 07, 2024 pm 02:12 PM

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

PHP 開発におけるキャッシュ メカニズムとアプリケーションの実践 PHP 開発におけるキャッシュ メカニズムとアプリケーションの実践 May 09, 2024 pm 01:30 PM

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

Win11 英語 21996 を簡体字中国語 22000 にアップグレードする方法_Win11 英語 21996 を簡体字中国語 22000 にアップグレードする方法 Win11 英語 21996 を簡体字中国語 22000 にアップグレードする方法_Win11 英語 21996 を簡体字中国語 22000 にアップグレードする方法 May 08, 2024 pm 05:10 PM

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

Javaのデータ構造とアルゴリズム: 詳細な説明 Javaのデータ構造とアルゴリズム: 詳細な説明 May 08, 2024 pm 10:12 PM

データ構造とアルゴリズムは Java 開発の基礎です。この記事では、Java の主要なデータ構造 (配列、リンク リスト、ツリーなど) とアルゴリズム (並べ替え、検索、グラフ アルゴリズムなど) について詳しく説明します。これらの構造は、スコアを保存するための配列、買い物リストを管理するためのリンク リスト、再帰を実装するためのスタック、スレッドを同期するためのキュー、高速検索と認証のためのツリーとハッシュ テーブルの使用など、実際の例を通じて説明されています。これらの概念を理解すると、効率的で保守しやすい Java コードを作成できるようになります。

Win11でダウンロードしたアップデートファイルの探し方_Win11でダウンロードしたアップデートファイルの場所を共有する Win11でダウンロードしたアップデートファイルの探し方_Win11でダウンロードしたアップデートファイルの場所を共有する May 08, 2024 am 10:34 AM

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

PHP データ構造: AVL ツリーのバランス、効率的で秩序あるデータ構造の維持 PHP データ構造: AVL ツリーのバランス、効率的で秩序あるデータ構造の維持 Jun 03, 2024 am 09:58 AM

AVL ツリーは、高速かつ効率的なデータ操作を保証するバランスのとれた二分探索ツリーです。バランスを達成するために、左回転と右回転の操作を実行し、バランスに反するサブツリーを調整します。 AVL ツリーは高さバランシングを利用して、ツリーの高さがノード数に対して常に小さくなるようにすることで、対数時間計算量 (O(logn)) の検索操作を実現し、大規模なデータ セットでもデータ構造の効率を維持します。

Nexo Exchangeはどこからですか? Nexo Exchangeはどこからですか? Mar 05, 2025 pm 05:09 PM

Nexo Exchange:Swiss Cryptocurrency Lending Platform詳細な分析Nexoは、暗号通貨貸付サービスを提供するプラットフォームであり、40を超える暗号資産、Fiat通貨、Stablecoinsの住宅ローンと融資をサポートしています。ヨーロッパとアメリカの市場を支配しており、プラットフォームの効率、セキュリティ、コンプライアンスの改善に取り組んでいます。多くの投資家は、Nexo Exchangeが登録されている場所を知りたいと思っています。答えはスイスです。 Nexoは2018年にSwiss Fintech Company Credissimoによって設立されました。 Nexo Exchangeの地理的位置と規制:Nexoは、有名な暗号通貨に優しい地域であるスイスのZugに本社を置いています。このプラットフォームは、さまざまな政府の監督と積極的に協力しており、米国金融犯罪法執行ネットワーク(FINCEN)およびカナダの財務に携わっています

See all articles