redis入门-php拓展二

接着上一篇,上次在mac本地安装了redis,其实还没完成,接下来是安装redis 的php扩展

1.1 安装phpize

yum install php-devel

1.2 下载扩展源码包,直接用wget

#wget下载github上的文件  
wget https://github.com/nicolasff/phpredis/archive/master.zip

1.3 如果没装unzip,需要先安装unzip

yum install unzip

1.4 解压master.zip

unzip master.zip

1.5 解压目录为phpredis-master,进入该文件夹,开始编译php扩展

phpize

1.6 配置环境

./configure

1.7 编译

make && make install

编译完成后显示:

Build complete.  
Don't forget to run 'make test'.  
Installing shared extensions:     /usr/lib64/php/modules/

进入/usr/lib64/php/modules/文件夹,发现redis.so的扩展

1.8 修改/etc/php.ini,添加下面的扩展

extension=redis.so

1.9 重启服务器

service httpd restart

最后查看phpinfo,显示有redis,代表安装成功;

接下来是在tp5项目中->测试redis:
tp5已经给我封装好了redis类,位置在think/cache/driver下,我们只需要在配置文件修改:
'cache'                  => [
    // 驱动方式
    'type'   => 'redis',
    'host'       => '127.0.0.1', // 指定redis的地址
],
然后在需要的地方就可以用啦:
set('adamlu','joy');
      echo ($redis->get('adamlu'));exit;
      
    }
}

访问该地址,页面出现:joy,就代表成功了,可以通过下图判断是否真的写入成功,好了,到这里redis就入门了,接着就是如何在需要的时候使用它啦!

redis入门-php拓展二_第1张图片

下面是redis的基本操作,我简单的整理在一个方法里:

//测试redis-成功
    public function redis()
    {
//        $redis = new Redis();//这里是使用的是tp自带的Redis
        $redis = new \Redis();
        $redis->connect('127.0.0.1', 6379);
        $redis->auth('password'); // Redis 没设置密码则不需要这行代码

 //       ----------------------string使用------------------
        $redis->set('myname', 'joy');
      echo ($redis->get('adamlu'));exit;
        $redis->del('myname');# 返回 TRUE(1),删除
      var_dump($redis->get('myname')); # 返回 bool(false)

//         ------------------列表使用-------------------------
        $redis->lPush('lists', 'X'); // 向队列左侧加入元素
        $redis->lPush('lists', 'X');
        $redis->rPush('lists', 'Z');// 向队列右侧加入元素
        $redis->lSet('lists', 1, 'Y'); // 将索引为1的数据修改为 Y
        $length = $redis->lLen('lists'); // 获取 list 长度
        echo $length;exit;
        $lists = $redis->lRange('lists', 0, $length - 1);//遍历 list
        dump($lists);exit;

        $x = $redis->lPop('lists');//从左侧出队一个元素(获取并删除)
        echo $x . PHP_EOL;
        $z = $redis->rPop('lists');//从右侧出队一个元素(获取并删除)
        echo $z . PHP_EOL;
        $y = $redis->lGet('lists', 0);//获取左侧第一个元素
        echo $y . PHP_EOL;
        $redis->del('lists');// 删除队列

//        ------------------集合使用-------------------------
        $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);exit;
        $card = $redis->sCard('sets');//获取集合数量
        echo $card . PHP_EOL;exit;

        $sets = $redis->sMembers('sets');//获取集合中全部元素--不推荐使用,推荐方法后边会详细介绍
        var_dump($sets);exit;
        $isMember = $redis->sIsMember('sets', 'value2');//判断元素是否是集合中的成员
        var_dump($isMember);exit;
        $redis->sRem('sets', 'value2');//删除集合中的元素
        var_dump($redis->sMembers('sets'));exit;
        echo $redis->sRandMember('sets2');exit;//随机获取一个元素
        echo $redis->sPop('sets2');exit;//随机获取一个元素并从集合中删除
        $redis->del('sets', 'sets2');exit;//删除集合

//    ------------------有序集合使用-------------------------
    $redis->zAdd('zset', 95, '小明'); // 添加成员
    $redis->zAdd('zset', 99, '小刚');
    $redis->zAdd('zset', 100, '小红');
    echo $redis->zCard('zset') . PHP_EOL;// 统计成员个数
    $score = $redis->zScore('zset', '小明');// 获取某个成员的分数
    echo $score . PHP_EOL;
    $rank = $redis->zRank('zset', '小明'); // 获取某个成员的排名,从低到高排序的名次
    $revRank = $redis->zRevRank('zset', '小明'); // 从高到低排序的名次
    echo $rank . PHP_EOL;
    echo $revRank . PHP_EOL;exit;

    $redis->zIncrBy('zset', 1, '小明'); // 给指定成员增加分数 给小明加一分
  //  返回指定排名范围的成员
    $range = $redis->zRange('zset', 0, 9, true); // 返回分数从低到高排序的前10名及分数
    $revRange = $redis-> zRevRange('zset', 0, 9, true); // 返回分数从高到低排序的前10名及分数
    var_dump($range);
    var_dump($revRange);exit;
    $redis->zRem('zet', '小明');// 删除成员
 //    返回指定分数范围的成员
    $rangeByScore = $redis->zRangeByScore('zet', 98, 100); // 返回指定分数范围内从低到高排序的成员
    $revRangeByScore = $redis->zRevRangeByScore('zet', 98, 100); // 返回指定分数范围内从高到低排序的成员
    var_dump($rangeByScore);
    var_dump($revRangeByScore);

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

}

你可能感兴趣的:(php)