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;