ホームページ > バックエンド開発 > PHPチュートリアル > PHP は Redis の例を使用して説明します

PHP は Redis の例を使用して説明します

小云云
リリース: 2023-03-20 14:14:02
オリジナル
12713 人が閲覧しました


Redis は、ANSI C 言語で書かれたオープンソースのログタイプの Key-Value データベースで、ネットワークをサポートし、メモリベースで永続化でき、複数の言語で API を提供します。 Redis でサポートされるデータ型は、String (文字列)、List (リスト)、Hash (辞書)、Set (コレクション)、Sorted Set (順序付きセット) です。Redis のデフォルト ポートは 6379 です。

1. 接続

$redis = new Redis();  // 实例化$redis->connect('127.0.0.1', 6379);  // 连接$redis->auth('redis密码');   // 没密码的redis可忽略此步骤
ログイン後にコピー

2. データ型

2-1 string string

// 存储或更改$redis->set('test', 'aaa');// 获取值$redis->get('test');   // aaa
ログイン後にコピー

2-2 list list

方法中的l代表list操作
ログイン後にコピー
  1. ストレージ

    $redis->lpush('list', 'a');    // 从左边加入$redis->lpush('list', 'b');$redis->lpush('list', 'c');        
    
    $redis->rpush('list', 'd');    // 从右边加入$redis->lset('list', 2, 'e');// 设置或更改列表指定位置的值,成功返回1,失败返回错误信息
    ログイン後にコピー
  2. delete

    $redis->lpop('list');      // 删除左边第一个$redis->rpop('list');      // 删除右边第一个// $redis->lrem('list名', '值', num); // 根据值删除元素,第二个参数是要删除的值(值为这个值的元素要被删除),// 第三个参数 num 表示:从哪开始删、删几个,
        //num>0 从表头往表尾删,删除num个结束;
        //num<0 从表尾往表头删,删除 |num| 个;
        //num=0 移除表中所有值为&#39;b&#39;的元素
        $redis->lrem(&#39;list&#39;, &#39;b&#39;, 2);
    ログイン後にコピー
  3. 配列

    $redis->lrange(&#39;list&#39;, 0, -1);  // 返回一个数组。存储在key中的列表里指定范围的元素, 
        // 第一个参数是列表名
        // 第二个参数是起始位下标,
        // 第三个是结束位下标(包含结束位元素)。
        // 负数代表倒数,-1代表倒数第一个;
        // 如果起始大于结束返回空,结束大于实际长度,返回至最后一个元素。$redis->lgetrange(&#39;list&#39;, 0, 2);// 获取列表指定区间的值,同上$redis->ltrim(&#39;list&#39;, 0, 3);   // 截取并保留列表指定区间的值,其余值删除。
        // 成功返回1,失败返回错误信息。负数代表倒数$redis->lsize(&#39;list&#39;);         // 获取列表的长度$redis->lget(&#39;list&#39;, 2)        // 获取列表指定位置的值$redis->lindex(&#39;list&#39;, 2);     // 获取列表指定位置的值
    ログイン後にコピー

2-3ハッシュ辞書

一个string类型的field和value的映射表,特别适合用于存储对象。每个 hash 可以存储 2的32次方 - 1 键值对(40多亿)
hash表相当于 redis存储 key => value  中的key, 表内容相当于 value
方法中h代表hash操作
ログイン後にコピー
  1. ストレージ

    // $redis->hset(&#39;hash表&#39;, key, value);  
        // 如果hash表不存在,创建一个该hash表,如果不存在该key则设置成功,返回true,
        // 如果存在,则替换掉原来的值,返回false,失败返回false
        // 第一个参数是字典名
        $redis->hset(&#39;hashtest&#39;, &#39;a&#39;, &#39;aaa&#39;);   // 返回true
        $redis->hset(&#39;hashtest&#39;, &#39;a&#39;, &#39;bbb&#39;);  // 返回false,a的值改为bbb
        $redis->hset(&#39;hashtest&#39;, &#39;b&#39;, &#39;bbb&#39;);  // 返回true,增加b,值为bb$redis->hmset(&#39;hashtest&#39;, [1 => 1, 2 => 2, 3 => 3]);   // 批量赋值,       $redis->hincrby(&#39;hashtest&#39;, &#39;1&#39;, 1);   // hash表中的key对应的值自增1(整数),
        // 第一个参数字典名
        // 第二个参数是key名,
        // 第三个参数是自增的幅度。如果表中不存在该key,则自动添加该key,并设置值为自增幅度$redis->hincrbyfloat(&#39;hashtest&#39;, &#39;2&#39;, 1.5);        // hash表中key自增
    ログイン後にコピー
  2. get

    $redis->hget(&#39;hash表&#39;, key);        // 获取某个key对应的值
        $redis->hget(&#39;hashtest&#39;, &#39;a&#39;); // 获取hashtest中a的值$redis->hkeys(&#39;hashtest&#39;);     // 获取hash表中的所有的keys(键名),返回一个数组   $redis->hvals(&#39;hashtest&#39;); // 获取hash表中的所有的values(值),顺序随机,返回一个数组$redis->hgetall(&#39;hashtest&#39;);   // 获取hash表中所有的键值对,顺序随机,返回一个数组$redis->hlen(&#39;hashtest&#39;);      // 获取hash表中key的数量   $redis->hmget(&#39;hashtest&#39;, [1, 2, 3]); // 批量获取多个key对应的value,第二个参数是keyArr
    
    $redis->hexists(&#39;hashtest&#39;, &#39;b&#39;);      // 判断hash表中是否存在该key
    ログイン後にコピー
  3. 削除

    $redis->hdel(&#39;hashtest&#39;, &#39;a&#39;); 
        // 删除hash表中的一个key,成功返回true,
        // 如果表不存在或key不存在返回false
    ログイン後にコピー

2-4セットコレクション

Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。
集合中最大的成员数为 2的32次方 - 1 (4294967295, 每个集合可存储40多亿个成员)。
方法中的s代表set操作
ログイン後にコピー
  1. 追加

    rreee
  2. Get

    rreee
  3. 削除

    // $redis->sadd(&#39;set集合&#39;, &#39;值&#39;); // 往settest中加入一个值,成功,返回添加的个数,失败返回0。// 第一个参数是set集合名// 第二个参数是往该集合插入新值,即:往value中插入新值
        $redis->sadd(&#39;settest&#39;, &#39;a&#39;);  // 1
        $redis->sadd(&#39;settest&#39;, &#39;b&#39;);  // 1
        $redis->sadd(&#39;settest&#39;, &#39;a&#39;);  // 0$redis->sadd(&#39;settest&#39;, [&#39;c&#39;, &#39;d&#39;, &#39;e&#39;]);  // 一次添加多个值
    ログイン後にコピー

2-5. ソートセットソートセット

$redis->smembers(&#39;settest&#39;);   // 获取集合中所有的元素$redis->sismember(&#39;settest&#39;, &#39;b&#39;); // 判断元素是否是set成员$redis->scard(&#39;settest&#39;);      // 查看集合中元素的数量$redis->sinter(&#39;settest&#39;, &#39;settest2&#39;); // 返回两个集合的交集$redis->sinterstore(&#39;settest3&#39;, &#39;settest&#39;, &#39;settest2&#39;);    // 将settest和settest2的交集放到集合settest3中$redis->sunion(&#39;settest&#39;, &#39;settest2&#39;); // 返回两个集合的并集$redis->sunionstore(&#39;settest4&#39;, &#39;settest&#39;, &#39;settest2&#39;);    // 将settest和settest2的并集放到集合settest4中$redis->sdiff(&#39;settest&#39;, &#39;settest2&#39;);  // 返回两个集合的差集$redis->sdiffstore(&#39;settest5&#39;, &#39;settest&#39;, &#39;settest2&#39;); // 将settest和settest2的差集放到集合settest5中
ログイン後にコピー
  1. 追加または更新

    $redis->srem(&#39;settest&#39;, &#39;a&#39;);  // 删除集合中的某个值,$redis->srem(&#39;settest&#39;, &#39;a&#39;, &#39;b&#39;); // 删除多个值    $redis->spop(&#39;settest&#39;);       // 移除集合中一个随机的元素,并返回该元素
    ログイン後にコピー
  2. get

    Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。
    不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
    有序集合的成员是唯一的,但分数(score)却可以重复。
    集合中最大的成员数为 2的32次方 - 1 (4294967295, 每个集合可存储40多亿个成员)。
    方法中的z代表有序集合操作
    ログイン後にコピー
  3. 削除

    // $redis->zadd(&#39;有序集合名&#39;, 分数, 值);   // 向有序集合ztest中一个值,分数值可以是整数值或双精度浮点数。// 执行zadd时,如果不存在,则创建一个新的有序集合;// 如果ztest存在但不是有序集类型时,返回一个错误。
        $redis->zadd(&#39;ztest&#39;, 1, &#39;a&#39;); 
        $redis->zadd(&#39;ztest&#39;, 2, &#39;a&#39;); 
            // 当某元素存在时,更新这个元素的分数,并重新插入该元素,保证元素在正确的位置。
            // 但不算新添加的$redis->zadd(&#39;ztest&#39;, 分数1, 值1, 分数2, 值2);   // 向有序集合插入多个值
        $redis->zadd(&#39;ztest&#39;, 2, &#39;b&#39;, 3, &#39;c&#39;, 4, &#39;d&#39;); 
    
    $redis->zincrby(&#39;set&#39;, 2, &#39;c&#39;);  // 指定的值 c 增加 2
    ログイン後にコピー

    3. その他の一般的な方法

    +

    Redisインスタンスを使用したPHPの詳細な説明

    1. phpはRedisを使用して、大規模な同時実行下での二次書き込みを防ぐメソッドを実装します

    以上がPHP は Redis の例を使用して説明しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート