Redis在PHP项目中的应用
一 運(yùn)行redis服務(wù)端
?
出現(xiàn)上圖的圖形,就說明redis服務(wù)端開啟成功,并且開啟了密碼功能(如果不加載配置文件,連接redis是不需要密碼的,這樣,會(huì)給我們的程序帶來很大隱患)
密碼的設(shè)置: 在redis配置文件中,搜索requirepass ,后面設(shè)置密碼 ?比如 : requirepass G506myredis
則表示此redis服務(wù)端密碼是G506myredis
?
二 在php文件中操作redis
1. 查詢
根據(jù)sql語句到redis數(shù)據(jù)庫中查詢是否有相應(yīng)的數(shù)據(jù),如果有,則直接返回?cái)?shù)據(jù),如果沒有,則到數(shù)據(jù)庫查詢數(shù)據(jù)返回給瀏覽器,并且將數(shù)據(jù)緩存到redis服務(wù)器
代碼:
function inquiry_redis($sql) {//實(shí)例化redis對象$redis = new Redis();//連接redis$redis->connect('localhost',6379);//分配下面的任務(wù)密碼權(quán)限$redis->auth('G506myredis');$key = md5($sql);$data = $redis->get($key);//如果有data,此時(shí)應(yīng)該是一個(gè)json字符串if(!$data){try{$pdo = new PDO('mysql:dbname=test;host=localhost','root','root');}catch(PDOException $e){die("pdo連接失敗:".$e->getMessage());}$stmt = $pdo->prepare($sql);$stmt->execute();$data = json_encode($stmt->fetchAll(2));//將從數(shù)據(jù)庫取到的數(shù)據(jù)轉(zhuǎn)化為json字符串(為了存儲(chǔ)到redis中)$redis->set($key,$data);}return json_decode($data);//返回?cái)?shù)組格式的數(shù)據(jù)}$sql = 'select id,name,edu,city,salary from student'; var_dump(inquiry_redis($sql));?
?
結(jié)果:
?
array (size=39)0 => object(stdClass)[2]public 'id' => '1' (length=1)public 'name' => '周更生' (length=9)public 'edu' => '大專' (length=6)public 'city' => '山東省' (length=9)public 'salary' => '5000.00' (length=7)1 => object(stdClass)[3]public 'id' => '2' (length=1)public 'name' => '王小平' (length=9)public 'edu' => '大專' (length=6)public 'city' => '陜西省' (length=9)public 'salary' => '500.00' (length=6)2 => object(stdClass)[4]public 'id' => '3' (length=1)public 'name' => '周改娟' (length=9)public 'edu' => '大專' (length=6)public 'city' => '上海市' (length=9)public 'salary' => '8000.00' (length=7)3 => object(stdClass)[5]public 'id' => '4' (length=1)public 'name' => '高舸' (length=6)public 'edu' => '高中' (length=6)public 'city' => '山西省' (length=9) (size=39)0 => object(stdClass)[2]public 'id' => '1' (length=1)public 'name' => '周更生' (length=9)public 'edu' => '大專' (length=6)public 'city' => '山東省' (length=9)public 'salary' => '5000.00' (length=7)1 => object(stdClass)[3]public 'id' => '2' (length=1)public 'name' => '王小平' (length=9)public 'edu' => '大專' (length=6)public 'city' => '陜西省' (length=9)public 'salary' => '500.00' (length=6)2 => object(stdClass)[4]public 'id' => '3' (length=1)public 'name' => '周改娟' (length=9)public 'edu' => '大專' (length=6)public 'city' => '上海市' (length=9)public 'salary' => '8000.00' (length=7)3 => object(stdClass)[5]public 'id' => '4' (length=1)public 'name' => '高舸' (length=6)public 'edu' => '高中' (length=6)public 'city' => '山西省' (length=9)第一次,從數(shù)據(jù)庫取數(shù)據(jù),將結(jié)果返回給瀏覽器,并將數(shù)據(jù)緩存到redis中
?
第二次,直接從redis中取數(shù)據(jù),返回該瀏覽器
?
2. 刪除
傳進(jìn)來一個(gè)sql,我們根據(jù)sql刪除redis庫中對應(yīng)的key的數(shù)據(jù)
function delete_redis($sql) {//實(shí)例化redis對象$redis = new Redis();//連接redis$redis->connect('localhost',6379);//分配下面的任務(wù)密碼權(quán)限$redis->auth('G506myredis');$key = md5($sql);//刪除對應(yīng)的緩存的sql數(shù)據(jù)$redis->del($key);}?
?ps: 期待在這方面有豐富項(xiàng)目經(jīng)驗(yàn)的phper提出更多的優(yōu)化意見,謝謝
總結(jié)
以上是生活随笔為你收集整理的Redis在PHP项目中的应用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: memcache在项目中的应用
- 下一篇: thinkphp出现Call to un