Rumah  >  Artikel  >  pangkalan data  >  Apakah kaedah untuk menggunakan Redis dalam rangka kerja ThinkPHP di Pagoda?

Apakah kaedah untuk menggunakan Redis dalam rangka kerja ThinkPHP di Pagoda?

王林
王林ke hadapan
2023-06-02 20:31:01989semak imbas

Redis ialah pangkalan data bukan perhubungan yang biasa digunakan, terutamanya digunakan untuk caching data Data disimpan dalam bentuk nilai kunci, dan nilai kunci dipetakan antara satu sama lain. Penyimpanan datanya berbeza daripada MySQL Datanya disimpan dalam ingatan, jadi bacaan data agak pantas, yang sangat baik untuk keselarasan tinggi.

Mengenai pemasangan redis, pasang panel pagoda pada pelayan atau mesin maya untuk memasang redis Sangat mudah untuk menggunakan redis. Ingat untuk tidak hanya memasang perisian redis, tetapi juga memasukkan php yang digunakan dalam projek. Pasang sambungan redis dalam versi, dan kemudian buka perisian redis

1. Mula-mula, cari redis dalam panel pemasangan pagoda dan klik untuk memasang.

Apakah kaedah untuk menggunakan Redis dalam rangka kerja ThinkPHP di Pagoda?

2 Selepas memasang redis, klik Tetapan dan tetapkan kata laluan

Persekitaran 3.php untuk memasang sambungan redis

Pastikan ke Dalam versi PHP yang digunakan oleh tapak web, pasang sambungan redis.

Buat pemalam

Buat fail RedisPackage.php dalam folder lanjutan direktori akar ThinkPHP Kandungannya adalah seperti berikut:

<?php
 
class RedisPackage
{
    protected static $handler = null;
    protected $options = [
        &#39;host&#39; => &#39;127.0.0.1&#39;,
        &#39;port&#39; => 6379,
        &#39;password&#39; => &#39;这是你是之前设置的redis密码&#39;,
        &#39;select&#39; => 0,
        &#39;timeout&#39; => 20,//关闭时间 0:代表不关闭
        &#39;expire&#39; => 0,
        &#39;persistent&#39; => false,
        &#39;prefix&#39; => &#39;&#39;,
    ];
 
    public function __construct($options = [])
    {
        if (!extension_loaded(&#39;redis&#39;)) {   //判断是否有扩展(如果你的apache没reids扩展就会抛出这个异常)
            throw new \BadFunctionCallException(&#39;not support: redis&#39;);
        }
        if (!empty($options)) {
            $this->options = array_merge($this->options, $options);
        }
        $func = $this->options[&#39;persistent&#39;] ? &#39;pconnect&#39; : &#39;connect&#39;;     //判断是否长连接
        self::$handler = new \Redis;
        self::$handler->$func($this->options[&#39;host&#39;], $this->options[&#39;port&#39;], $this->options[&#39;timeout&#39;]);
 
        if (&#39;&#39; != $this->options[&#39;password&#39;]) {
            self::$handler->auth($this->options[&#39;password&#39;]);
        }
 
        if (0 != $this->options[&#39;select&#39;]) {
            self::$handler->select($this->options[&#39;select&#39;]);
        }
    }
 
    /**
     * 写入缓存
     * @param string $key 键名
     * @param string $value 键值
     * @param int $exprie 过期时间 0:永不过期
     * @return bool
     */
    public static function set($key, $value, $exprie = 0)
    {
        if ($exprie == 0) {
            $set = self::$handler->set($key, $value);
        } else {
            $set = self::$handler->setex($key, $exprie, $value);
        }
        return $set;
    }
 
    /**
     * 读取缓存
     * @param string $key 键值
     * @return mixed
     */
    public static function get($key)
    {
        $fun = is_array($key) ? &#39;Mget&#39; : &#39;get&#39;;
        return self::$handler->{$fun}($key);
    }
 
    /**
     * 获取值长度
     * @param string $key
     * @return int
     */
    public static function lLen($key)
    {
        return self::$handler->lLen($key);
    }
 
    /**
     * 将一个或多个值插入到列表头部
     * @param $key
     * @param $value
     * @return int
     */
    public static function LPush($key, $value, $value2 = null, $valueN = null)
    {
        return self::$handler->lPush($key, $value, $value2, $valueN);
    }
 
    /**
     * 移出并获取列表的第一个元素
     * @param string $key
     * @return string
     */
    public static function lPop($key)
    {
        return self::$handler->lPop($key);
    }
 
 
}

Tatasusunan definisi $ pilihan dalam kelas RedisPackage mempunyai kunci Nama ialah kata laluan, isikan kata laluan redis yang ditetapkan di atas di sini

Dalam Pengawal untuk menggunakan Redis, perkenalkan fail

import(&#39;RedisPackage&#39;, EXTEND_PATH);

Hanya gunakan Redis

#设置
\RedisPackage::set(&#39;要设置的key&#39;,&#39;这是value&#39;);
 
#获取
$key = \RedisPackage::get(&#39;已设置的key&#39;));

Sambungan Redis

Sambung ke redis

$redis = new \Redis(); 
//创建一个redis对象,下面可以直接使用$redis访问到redis对象

$redis->connect(&#39;127.0.0.1&#39;, 6379);
//连接redis数据库,127.0.0.1表示本地(如果线上redis和php目录在同一个IP,则一样使用127.0.0.1),6379为redis端口号,若线上没有修改则默认是这个

Sahkan sama ada sambungan berjaya (boleh ditulis atau tidak, hanya untuk pengesahan)

$redis ->set( "test" , "redis 连接成功");
echo $redis ->get( "test");

wujud() menentukan sama ada kunci itu wujud, parameter ialah nama kunci

$redis->exists(&#39;active_worker_list&#39;)

set()

set() menyimpan nilai kunci Parameter pertama ialah nama kunci yang ditakrifkan oleh anda sendiri, dan parameter kedua ialah data yang akan disimpan. Melalui kaedah ini, data boleh dinamakan dan disimpan dalam cache

$result = $redis->set(&#39;active_worker_list&#39;,$r)

Banyak kali kami menyimpan data jenis tatasusunan, tetapi redis tidak menyokong tatasusunan membaca dan menulis, jadi kami perlu. tukar tatasusunan ke dalam format json

$result = $redis->set(&#39;active_worker_list&#39;,json_encode($r,true))

get()

get() mendapat nilai kunci, parameter ialah nama kunci, melalui kaedah ini anda boleh mendapatkan nilai yang disimpan dalam kunci yang sepadan

$result = $redis->get(&#39;active_worker_list&#39;)

Sama seperti yang ditetapkan, banyak kali kita memerlukan data jenis tatasusunan, jadi kita perlu Menukar data format json kepada tatasusunan

$result = json_decode($redis->get(&#39;active_worker_list&#39;),true);

del()

Kadang-kadang atas sebab tertentu ( mungkin tugasan itu salah apabila hanya memberikan nilai...) kita perlu memadamkan nilai Kunci, jadi kita perlu menggunakan del(), parameter ialah nama kunci

$redis->del(&#39;active_worker_list&#39;);

Atas ialah kandungan terperinci Apakah kaedah untuk menggunakan Redis dalam rangka kerja ThinkPHP di Pagoda?. 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