Redis 幾種應用場景
字符串緩存
<?php$redis = new Redis();$redis->connect('127.0.0.1',6379);$strKey = 'test';$strKey1 ='test1';//set$arrCache = ['name'=>'mysteryH','sex'=>'男','age'=>22];$redis->set($strKey,json_encode($arrCache));$redis->expire($strKey,300);//設置過期時間$json_data = $redis->get($strKey);$data = json_decode($json_data);print_r($data->name);//hset$arrWeb =['google'=>['google.com','google.com.hk']];$redis->hSet($strKey1,'google',json_encode($arrWeb['google']));$json_data = $redis->hGet($strKey1,'google');$data = json_decode($json_data);print_r($data);
簡單消息隊列
<?php$redis = new Redis();$redis->connect('127.0.0.1',6379);$strKey = 'queue';//進隊$redis->rPush($strKey,json_encode(['id'=>1,'name'=>'name1']));$redis->rPush($strKey,json_encode(['id'=>2,'name'=>'name2']));$redis->rPush($strKey,json_encode(['id'=>3,'name'=>'name3']));$redis->rPush($strKey,json_encode(['id'=>4,'name'=>'name4']));echo "---進隊成功---<br>";//查看隊列$strCount = $redis->lRange($strKey,0,-1);echo "當前數據:";print_r($strCount);//出隊$info = $redis->lPop($strKey);echo "<br>---".$info."---出隊成功<br>";//查看隊列$strCount = $redis->lRange($strKey,0,-1);echo "當前數據:";print_r($strCount);
發布訂閱
發布:
<?phpini_set('default_socket_timeout',-1);$redis = new Redis();$redis->connect('127.0.0.1',6379);$strChannel = 'channel';$redis->publish($strChannel,"來自{$strChannel}的推送");echo "-------{$strChannel}-------消息推送成功";
訂閱:
<?phpini_set('default_socket_timeout',-1);$redis = new Redis();$redis->connect('127.0.0.1',6379);$strChannel = 'channel';//訂閱echo "等待-------{$strChannel}-------消息推送";$redis->subscribe([$strChannel],'callback');function callback($instance, $channelName, $message){echo $message;}
排行榜
<?php$redis = new Redis();$redis->connect('127.0.0.1',6379);$strKey = 'rank';$redis->zAdd($strKey,'50',json_encode(['name'=>'name1']));$redis->zAdd($strKey,'100',json_encode(['name'=>'name2']));$redis->zAdd($strKey,'20',json_encode(['name'=>'name3']));$redis->zAdd($strKey,'60',json_encode(['name'=>'name4']));$redis->zAdd($strKey,'40',json_encode(['name'=>'name5']));$redis->zAdd($strKey,'80',json_encode(['name'=>'name6']));$data1 = $redis->zRevRange($strKey,0,-1,true);echo "從大到小排序:<br>";print_r($data1);$data2 = $redis->zRange($strKey,0,-1,true);echo "從小到大排序:<br>";print_r($data2);