一 運行redis服務端
?
出現上圖的圖形,就說明redis服務端開啟成功,并且開啟了密碼功能(如果不加載配置文件,連接redis是不需要密碼的,這樣,會給我們的程序帶來很大隱患)
密碼的設置: 在redis配置文件中,搜索requirepass ,后面設置密碼 ?比如 : requirepass G506myredis
則表示此redis服務端密碼是G506myredis
?
二 在php文件中操作redis
1. 查詢
根據sql語句到redis數據庫中查詢是否有相應的數據,如果有,則直接返回數據,如果沒有,則到數據庫查詢數據返回給瀏覽器,并且將數據緩存到redis服務器
代碼:
function inquiry_redis($sql)
{//實例化redis對象$redis = new Redis();//連接redis$redis->connect('localhost',6379);//分配下面的任務密碼權限$redis->auth('G506myredis');$key = md5($sql);$data = $redis->get($key);//如果有data,此時應該是一個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));//將從數據庫取到的數據轉化為json字符串(為了存儲到redis中)$redis->set($key,$data);}return json_decode($data);//返回數組格式的數據}$sql = 'select id,name,edu,city,salary from student';
var_dump(inquiry_redis($sql));
?
?
結果:
?
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)
第一次,從數據庫取數據,將結果返回給瀏覽器,并將數據緩存到redis中
?
第二次,直接從redis中取數據,返回該瀏覽器
?
2. 刪除
傳進來一個sql,我們根據sql刪除redis庫中對應的key的數據
function delete_redis($sql)
{//實例化redis對象$redis = new Redis();//連接redis$redis->connect('localhost',6379);//分配下面的任務密碼權限$redis->auth('G506myredis');$key = md5($sql);//刪除對應的緩存的sql數據$redis->del($key);}
?
?ps: 期待在這方面有豐富項目經驗的phper提出更多的優化意見,謝謝