PHP Redis的运用篇(一)
PHP Redis的运用篇(一)
从开始使用数据库MySQL、Oracle、SqlServer、SQLite等,后面接触到了Redis、MongoDB等非结构数据库,最初从网络上查了很多的资料,但是大多都是理论知识,对于刚入门的我来说完全在看天书,后面去看了官网代码结合项目的开发慢慢的熟悉起来,今天我分享几个常用的操作
(一)set和get的使用,简单存储和取出操作,但是set存入数据作为缓存并且缓存数据可以进行标识查询的时候,通过键值可以进行复杂的数据存储,并且数据具有类别区分
简单使用:
//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 重点“:”这个英文下的冒号,这个冒号回把键值进行分类得到图上的数据分类,通过相应的分类我们进行数据筛选,这就实现了数据的缓存,这样就可以减少数据库的操作,解决大部分数据库大并发卡顿的问题
//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格式的数据进去,取出来在做转换。
//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的存储(取出一条数据就删除这条的存储)
//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取数据相反,后面存进去的数据先取出来(先进后出),从列表数据的尾部开始取数据,并且删除取出存入尾部的数据
//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来操作,就不介绍了
//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库里面键值,传入“*”获取指定库里面的所有键值,或者传入指定键值,判断是否存在
//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版本等情况,导致有点问题,后续就没有使用了
//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扩展";}
今天先更新,后续更新二
来源地址:https://blog.csdn.net/qq_22183039/article/details/128789868
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341