PHP Redis的运用篇(一)

PHP Redis的运用篇(一)

从开始使用数据库MySQL、Oracle、SqlServer、SQLite等,后面接触到了Redis、MongoDB等非结构数据库,最初从网络上查了很多的资料,但是大多都是理论知识,对于刚入门的我来说完全在看天书,后面去看了官网代码结合项目的开发慢慢的熟悉起来,今天我分享几个常用的操作
(一)set和get的使用,简单存储和取出操作,但是set存入数据作为缓存并且缓存数据可以进行标识查询的时候,通过键值可以进行复杂的数据存储,并且数据具有类别区分

简单使用:

<?php

//Redis初始化类
if(extension_loaded('redis')) {
    $redis = new \Redis();
    $redis->connect("127.0.0.1", "6379");
    $redis->auth("");

    //Rpush
    //首先先选择库,不选择默认db0库,一般Redis安装默认15个db库,
    //有一些特殊需求,配置有几百个db,我之前项目就遇到Redis有180个db库
    $redis->select(6); //选择 6号库

    $value = array(
        "id"  =>1,
        "name"=>"test",
        "age" =>15
    );
    $json  = json_encode($value, JSON_UNESCAPED_UNICODE);
    $redis->set("test_key", $json);
	//取出数据
    var_dump($redis->get("test_key"));
}else{
    echo "没有安装Redis扩展";
}

在这里插入图片描述

复杂使用:重点:注意set 的key值,采用的test🔑1 重点“:”这个英文下的冒号,这个冒号回把键值进行分类得到图上的数据分类,通过相应的分类我们进行数据筛选,这就实现了数据的缓存,这样就可以减少数据库的操作,解决大部分数据库大并发卡顿的问题

<?php

//Redis初始化类
if(extension_loaded('redis')) {
    $redis = new \Redis();
    $redis->connect("127.0.0.1", "6379");
    $redis->auth("");

    //Rpush
    //首先先选择库,不选择默认db0库,一般Redis安装默认15个db库,
    //有一些特殊需求,配置有几百个db,我之前项目就遇到Redis有180个db库
    $redis->select(6); //选择 6号库

    $value = array(
        "id"  =>1,
        "name"=>"test1",
        "age" =>15
    );
    $json  = json_encode($value, JSON_UNESCAPED_UNICODE);
    $redis->set("test:key:1", $json);

    $value = array(
        "id"  =>2,
        "name"=>"test2",
        "age" =>26
    );
    $json  = json_encode($value, JSON_UNESCAPED_UNICODE);
    $redis->set("test:key:2", $json);

    //取数据,重点:注意键值
    var_dump($redis->get("test:key:2"));
}else{
    echo "没有安装Redis扩展";
}

在这里插入图片描述

(二)Rpush存储数据: 将数据插入到列表的尾部, 我个人一般存入json格式的数据进去,取出来在做转换。

<?php
//Redis初始化类
if(extension_loaded('redis')) {
    $redis = new \Redis();
    $redis->connect("127.0.0.1", "6379");
    $redis->auth("");

    //Rpush
    //首先先选择库,不选择默认db0库,一般Redis安装默认15个db库,
    //有一些特殊需求,配置有几百个db,我之前项目就遇到Redis有180个db库
    $redis->select(5); //选择 5号库
    $value = array(
        "id"  =>1,
        "name"=>"test",
        "age" =>18
    );
    $json  = json_encode($value, JSON_UNESCAPED_UNICODE);
    $redis->rPush("test_key", $json); //RPUSH 键值

    echo "*******存入成功*********".PHP_EOL;
}else{
    echo "没有安装Redis扩展";
}

在这里插入图片描述

Lpop:取数据,配合Rpush使用,构成消息队列数据,取数据的规则,先存储的数据,先取出来(先进先出)并且移除取出的数据在Redis的存储(取出一条数据就删除这条的存储)

<?php

//Redis初始化类
if(extension_loaded('redis')) {
    $redis = new \Redis();
    $redis->connect("127.0.0.1", "6379");
    $redis->auth("");

    //Rpush
    //首先先选择库,不选择默认db0库,一般Redis安装默认15个db库,
    //有一些特殊需求,配置有几百个db,我之前项目就遇到Redis有180个db库
    $redis->select(5); //选择 5号库
    $value = array(
        "id"  =>2,
        "name"=>"test",
        "age" =>22
    );
    $json  = json_encode($value, JSON_UNESCAPED_UNICODE);
    $redis->rPush("test_key", $json); //RPUSH 键值

    echo "*******存入成功*********".PHP_EOL;

    //lPop取出数据
    var_dump($redis->lPop("test_key"));
}else{
    echo "没有安装Redis扩展";
}

在这里插入图片描述

Rpop 取数据,和Lpop取数据相反,后面存进去的数据先取出来(先进后出),从列表数据的尾部开始取数据,并且删除取出存入尾部的数据

<?php

//Redis初始化类
if(extension_loaded('redis')) {
    $redis = new \Redis();
    $redis->connect("127.0.0.1", "6379");
    $redis->auth("");

    //Rpush
    //首先先选择库,不选择默认db0库,一般Redis安装默认15个db库,
    //有一些特殊需求,配置有几百个db,我之前项目就遇到Redis有180个db库
    $redis->select(5); //选择 5号库
    $value = array(
        "id"  =>1,
        "name"=>"test",
        "age" =>11
    );
    $json  = json_encode($value, JSON_UNESCAPED_UNICODE);
    $redis->rPush("test_key", $json); //RPUSH 键值

    echo "*******存入成功*********".PHP_EOL;

    //rPop取出数据
    var_dump($redis->rPop("test_key"));
}else{
    echo "没有安装Redis扩展";
}

在这里插入图片描述

(三)Lpush:将数据插入到列表的头部,就是把数据插入到列表的第一列,和Rpush的存储数据插入数据位置相反,但是使用都是一样,取数据还是使用Lpop、Rpop来操作,就不介绍了

<?php

//Redis初始化类
if(extension_loaded('redis')) {
    $redis = new \Redis();
    $redis->connect("127.0.0.1", "6379");
    $redis->auth("");

    //Rpush
    //首先先选择库,不选择默认db0库,一般Redis安装默认15个db库,
    //有一些特殊需求,配置有几百个db,我之前项目就遇到Redis有180个db库
    $redis->select(6); //选择 5号库
    $value = array(
        "id"  =>3,
        "name"=>"test",
        "age" =>14
    );
    $json  = json_encode($value, JSON_UNESCAPED_UNICODE);
    $redis->lPush("test_key", $json); //RPUSH 键值

    echo "*******存入成功*********".PHP_EOL;

    //rPop取出数据
    //var_dump($redis->rPop("test_key"));
}else{
    echo "没有安装Redis扩展";
}

在这里插入图片描述

(四)Keys: 获取指定db库里面键值,传入“*”获取指定库里面的所有键值,或者传入指定键值,判断是否存在

<?php

//Redis初始化类
if(extension_loaded('redis')) {
    $redis = new \Redis();
    $redis->connect("127.0.0.1", "6379");
    $redis->auth("");

    //Rpush
    //首先先选择库,不选择默认db0库,一般Redis安装默认15个db库,
    //有一些特殊需求,配置有几百个db,我之前项目就遇到Redis有180个db库
    $redis->select(6); //选择 6号库

    var_dump($redis->keys("*"));
}else{
    echo "没有安装Redis扩展";
}

在这里插入图片描述

(五)del: 删除键值,之前使用过delete,但是后面由于PHP版本,Redis版本等情况,导致有点问题,后续就没有使用了

<?php

//Redis初始化类
if(extension_loaded('redis')) {
    $redis = new \Redis();
    $redis->connect("127.0.0.1", "6379");
    $redis->auth("");

    //Rpush
    //首先先选择库,不选择默认db0库,一般Redis安装默认15个db库,
    //有一些特殊需求,配置有几百个db,我之前项目就遇到Redis有180个db库
    $redis->select(6); //选择 6号库

    $value = array(
        "id"  =>1,
        "name"=>"test1",
        "age" =>15
    );
    $json  = json_encode($value, JSON_UNESCAPED_UNICODE);
    $redis->set("test_key", $json);

    //删除
    $redis->del("test_key");

    //查询键值是否存在
    var_dump($redis->keys("test_key"));
}else{
    echo "没有安装Redis扩展";
}

在这里插入图片描述

今天先更新,后续更新二

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

尹雪峰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值