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扩展";
}
今天先更新,后续更新二