php redis 的几种常见应用
一:缓存
缓存Mysql数据库,第一次把mysql数据提取到redis,并设置过期时间,如果redis数据不存在,则从mysql提取
<?php
date_default_timezone_set("PRC");
//实例化
$redis = new Redis();
$redis->connect('192.168.0.25',6379); //连接服务器 返回【true | false】
$redis->auth('123'); //登录验证密码,返回【true | false】
$redisCache = $redis->get('redisRow'); //获取Key为redisRow的value
if(empty($redisCache)){ //如果数据不存在,从数据库获取
$mysql = new PDO("mysql:host=localhost;dbname=g","root","123",array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
$rs = $mysql -> query("SELECT project_name,description FROM js_project LIMIT 5");
while($info = $rs->fetch()){
$att[] = $info;
}
$redisJson = json_encode($att,JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES); //转化数据
$redis->setex('redisRow',10,$redisJson);//把数据保存到redis,设置过期时间为10秒
$redisCache = $redisJson;
}else{ //如果redis数据存在,从redis取出数据
json_decode($redisCache,TRUE);
}
echo $redisCache;
二:简单队列
//实例化
$redis = new Redis();
$redis->connect('192.168.0.25',6379); //连接服务器 返回【true | false】
$redis->auth('123'); //登录验证密码,返回【true | false】
$nameList = 'nameList'; //队列名称
//进入4个队列
$redis->rpush($nameList, json_encode(['id' => 1,'name' => 'lijie']));
$redis->rpush($nameList, json_encode(['id' => 2,'name' => 'Job']));
$redis->rpush($nameList, json_encode(['id' => 3,'name' => 'Lilei']));
$redis->rpush($nameList, json_encode(['id' => 4,'name' => 'Chenk']));
$strCount = $redis->lrange($nameList, 0, -1); //0 -1表示查看所有队列
echo "当前队列数据为: ";
print_r($strCount);
$str = $redis->lpop($nameList); //出队列,rpush进队列,先进先出,$str为出去的队列
$strCount = $redis->lrange($nameList, 0, -1);
echo "当前队列数据为:
";
print_r($strCount);三:简单计算器
//实例化
$redis = new Redis();
$redis->connect('192.168.0.25',6379); //连接服务器 返回【true | false】
$redis->auth('123'); //登录验证密码,返回【true | false】
$incrKey = 'incrKey';
//设置初始值
//$redis->set($incrKey, 0);
$redis->incr($incrKey); //请求一次加1
$incrKeyCount = $redis->get($incrKey);
echo $incrKeyCount;