Rumah  >  Artikel  >  pangkalan data  >  Cara menggunakan redis dalam ThinkPHP5

Cara menggunakan redis dalam ThinkPHP5

王林
王林ke hadapan
2023-06-02 18:25:311661semak imbas

    Premis: Oleh kerana artikel ini tertumpu terutamanya pada penggunaan redis dalam thinkPHP5, tiada penjelasan khusus mengenai pemasangan redis, tetapi di sini ada sedikit peringatan, selepas memasang redis Be pastikan anda mendayakan sambungan php.ini kemudian, jika tidak, anda masih tidak boleh menggunakan redis.

    Konfigurasi

    1. Pelajar yang boleh menggunakan ThinkPHP5 tahu bahawa TinkPHP5 merangkum kelas cache Kami hanya perlu mengisi item konfigurasi cache dalam cache dalam /application/congfig.php Ia sudah sedia untuk digunakan (ditunjukkan di bawah).

    Cara menggunakan redis dalam ThinkPHP5

    2 Dari fail /thinkphp/library/think/cache/driver/Redis.php kita dapat melihat bahawa cache redis yang terkandung di sini hanya boleh menggunakan jenis asas rentetan daripada redis. Jika anda mahu Ini tidak akan berfungsi jika anda menggunakan jenis data komposit seperti cincang atau baris gilir.

    Melihat kelas cache/thinkphp/library/think/cache/Driver.php, anda akan mendapati bahawa kaedah pengendali akan mengembalikan pemegang, jadi kami boleh menggunakan semua jenis data redis selagi kami memperoleh pemegang ini di mana kami menggunakan redis , jadi anda boleh menambah kaedah get handle getHandler

    	/**
         * 返回句柄对象,可执行其它高级方法
         *
         * @access public
         * @return object
         */
        public function handler()
        {
            return $this->handler;
        }
    	/*
        *  获取句柄
        * @param  
        */
        public static function getHandler()
        {
            return self::init();
        }

    Cara menggunakan redis dalam ThinkPHP5

    redis menggunakan

    rentetan (rentetan)

    Jenis asas, satu kunci sepadan dengan satu nilai.

    Nilai jenis rentetan boleh menyimpan sehingga 512MB

    Ilustrasi:

    Cara menggunakan redis dalam ThinkPHP5

    // 创建数据
    $redis->set('key', 'value');// 获取数据
    $value = $redis->get('key');
    echo $value . PHP_EOL;// 修改数据,与创建数据一致,即覆盖数据
    $redis->set('key', 'value2');
    echo $redis->get('key') . PHP_EOL;// 追加数据
    $redis->append('key', '_value2');
    echo $redis->get('key') . PHP_EOL;// 删除数据
    $redis->del('key');
    // $redis->delete('key');
    var_dump($redis->get('key'));// 创建数据,带有效期
    $redis->set('timeout_key', 'timeout_value', 5);
    $redis->setex('timeout_key', 5, 'timeout_value');
    // 获取数据的有效期
    echo $redis->ttl('timeout_key') . PHP_EOL;// 判断是否已经写入,未写入则写入
    $redis->set('unique_key', 'unique_value');
    if (!$redis->setnx('unique_key', 'unique_value')) {
    	echo $redis->get('unique_key') . PHP_EOL;
    }// 批量创建
    $multi = ['key1' => 'value1', 'key2' => 'value2', 'key3' => 'value3'];
    $redis->mset($multi);// 批量获取
    $result = $redis->mget(array_keys($multi));
    var_dump($result);

    Hash (Hash)

    Hash ialah koleksi pasangan nilai kunci (kunci=>nilai) ia adalah jadual pemetaan medan jenis rentetan dan nilai sangat sesuai untuk menyimpan objek.

    Setiap cincang boleh menyimpan 2^32 -1 pasangan nilai kunci (lebih daripada 4 bilion)

    Ilustrasi:

    Cara menggunakan redis dalam ThinkPHP5

    // 创建 hash 表
    // 向名字叫 'hash' 的 hash表 中添加元素 ['key1' => 'val1']
    $redis->hSet('hash', 'key1', 'val1');// 获取 hash表 中键名是 key1 的值
    echo $redis->hGet('hash', 'key1') . PHP_EOL;// 获取 hash表的元素个数
    echo $redis->hLen('hash') . PHP_EOL;// 获取 hash表 中所有的键
    $keys = $redis->hKeys('hash');
    var_dump($keys);// 获取 hash表 中所有的值
    $vals = $redis->hVals('hash');
    var_dump($vals);// 获取 hash表 中所有的键值对
    // 不推荐使用这种方法获取全部数据,会导致服务器执行超时,推荐方法后边会详细介绍
    // $all = $redis->hGetAll('hash');
    // var_dump($all);// 判断 hash 表中是否存在键名是 key2 的元素
    $bool = $redis->hExists('hash', 'key2');
    echo $bool ? '存在' : '不存在' . PHP_EOL;// 批量添加元素
    $redis->hMset('hash', ['key2' => 'val2', 'key3' => 'val3']);// 批量获取元素
    $hashes = $redis->hMGet('hash', ['key1', 'key2', 'key3']);
    var_dump($hashes);// 删除 hash表
    $redis->del('hash');

    Senarai ( Senarai)

    Senarai ialah senarai ringkas rentetan, diisih mengikut tertib sisipan. Anda boleh menambah elemen pada kepala (kiri) atau ekor (kanan) senarai. Jenis senarai biasanya digunakan dalam perkhidmatan baris gilir pemesejan untuk memudahkan pertukaran mesej antara berbilang program. Setiap senarai boleh menyimpan sehingga kira-kira 4 bilion elemen, atau 2^32-1 elemen.

    Ilustrasi:

    Cara menggunakan redis dalam ThinkPHP5

    // 向队列左侧加入元素
    $redis->lPush('lists', 'X');
    $redis->lPush('lists', 'X');
    // 向队列右侧加入元素
    $redis->rPush('lists', 'Z');// 将索引为1的数据修改为 Y
    $redis->lSet('lists', 1, 'Y');// 获取 list 长度
    $length = $redis->lLen('lists');
    echo $length;// 遍历 list
    $lists = $redis->lRange('lists', 0, $length - 1);
    dump($lists);// 从左侧出队一个元素(获取并删除)
    $x = $redis->lPop('lists');
    echo $x . PHP_EOL;
    // 从右侧出队一个元素(获取并删除)
    $z = $redis->rPop('lists');
    echo $z . PHP_EOL;// 获取左侧第一个元素
    $y = $redis->lIndex('lists', 0);
    echo $y . PHP_EOL;// 删除队列
    $redis->del('lists');

    Set (set)

    Set Redis ialah koleksi jenis rentetan yang tidak tertib.

    Senarai suka, ia sangat cekap apabila melakukan pemasukan dan pemadaman serta menentukan sama ada unsur wujud.

    Kelebihan terbesar set ialah ia boleh melakukan operasi persilangan, penyatuan dan perbezaan.

    Bilangan maksimum unsur yang boleh terkandung dalam Set ialah 4294967295 (lebih daripada 4 bilion).

    Koleksi dilaksanakan melalui jadual cincang, jadi kerumitan menambah, memadam dan mencari ialah O(1).

    Ilustrasi:

    Cara menggunakan redis dalam ThinkPHP5

    // 创建集合
    $redis->sAdd('sets', 'value1', 'value2');
    // 以数组形式创建集合
    $redis->sAddArray('sets2', ['value1', 'value2', 'value3']);// 取两个集合的并集
    $union = $redis->sUnion('sets', 'sets2');
    // 取两个集合的差集
    $diff = $redis->sDiff('sets', 'sets2');
    // 取两个集合的交集
    $inter = $redis->sInter('sets', 'sets2');var_dump($union, $diff, $inter);// 获取集合数量
    $card = $redis->sCard('sets');
    echo $card . PHP_EOL;// 获取集合中全部元素
    // 不推荐使用这种方法获取全部数据,会导致服务器执行超时,推荐方法后边会详细介绍
    $sets = $redis->sMembers('sets');
    var_dump($sets);// 判断元素是否是集合中的成员
    $isMember = $redis->sIsMember('sets', 'value2');
    var_dump($isMember);// 删除集合中的元素
    $redis->sRem('sets', 'value2');
    var_dump($redis->sMembers('sets'));// 随机获取一个元素
    echo $redis->sRandMember('sets');// 随机获取一个元素并从集合中删除
    echo $redis->sPop('sets');// 删除集合
    $redis->del('sets', 'sets2');

    zset (set tersusun)

    Redis zset juga merupakan koleksi elemen jenis rentetan seperti set, dan tidak tidak Ahli pendua dibenarkan.

    Perbezaannya ialah setiap elemen dikaitkan dengan skor jenis berganda.

    Redis menggunakan markah untuk mengisih ahli set daripada kecil kepada besar.

    rreeee

    Atas ialah kandungan terperinci Cara menggunakan redis dalam ThinkPHP5. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

    Kenyataan:
    Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam