本文目錄一覽:
- 1、php怎樣使用redis緩存數據
- 2、Redis等緩存數據庫為什麼訪問會比較快
- 3、在php中 為什麼不能使用redis類
- 4、PHP實現負載均衡session共享redis緩存操作示例
- 5、redis使用php怎麼進行更新
php怎樣使用redis緩存數據
?php
/**
* Redis緩存操作
* @author hxm
* @version 1.0
* @since 2015.05.04
*/
class RCache extends Object implements CacheFace
{
private $redis = null; //redis對象
private $sId = 1; //servier服務ID
private $con = null;//鏈接資源
/**
* 初始化Redis
*
* @return Object
*/
public function __construct()
{
if ( !class_exists(‘Redis’) )
{
throw new QException(‘PHP extension does not exist: Redis’);
}
$this-redis = new Redis();
}
/**
* 鏈接memcahce服務
*
* @access private
* @param string $key 關鍵字
* @param string $value 緩存內容
* @return array
*/
private function connect( $sid )
{
$file = $this-CacheFile();
require $file;
if(! isset($cache) )
{
throw new QException(‘緩存配置文件不存在’.$file);
}
$server = $cache[$this-cacheId];
$sid = isset($sid) == 0 ? $this-sId : $sid;//memcache服務選擇
if ( ! $server[$sid])
{
throw new QException(‘當前操作的緩存服務器配置文件不存在’);
}希望能幫到你,我還在後盾網學習呢,有不會的可以問我,一會有空回答你。( ^ω^)
Redis等緩存數據庫為什麼訪問會比較快
對於變化頻率非常快的數據來說,如果還選擇傳統的靜態緩存方式(Memocached、File System等)展示數據,可能在緩存的存取上會有很大的開銷,並不能很好的滿足需要,而Redis這樣基於內存的NoSQL數據庫,就非常適合擔任實時數據的容器。
但是往往又有數據可靠性的需求,採用MySQL作為數據存儲,不會因為內存問題而引起數據丟失,同時也可以利用關係數據庫的特性實現很多功能。
所以就會很自然的想到是否可以採用MySQL作為數據存儲引擎,Redis則作為Cache。而這種需求目前還沒有看到有特別成熟的解決方案或工具,因此採用Gearman+PHP+MySQL UDF的組合異步實現MySQL到Redis的數據複製。
MySQL到Redis數據複製方案
無論MySQL還是Redis,自身都帶有數據同步的機制,比較常用的MySQL的Master/Slave模式,就是由Slave端分析Master的binlog來實現的,這樣的數據複製其實還是一個異步過程,只不過當服務器都在同一內網時,異步的延遲幾乎可以忽略。
那麼理論上也可以用同樣方式,分析MySQL的binlog文件並將數據插入Redis。但是這需要對binlog文件以及MySQL有非常深入的理解,同時由於binlog存在Statement/Row/Mixedlevel多種形式,分析binlog實現同步的工作量是非常大的。
因此這裡選擇了一種開發成本更加低廉的方式,借用已經比較成熟的MySQL UDF,將MySQL數據首先放入Gearman中,然後通過一個自己編寫的PHP Gearman Worker,將數據同步到Redis。比分析binlog的方式增加了不少流程,但是實現成本更低,更容易操作。
在php中 為什麼不能使用redis類
redis是一個key-value存儲系統。和Memcached類似,它支持存儲的value類型相對更多,包括string(字符串)、list(鏈表)、set(集合)和zset(有序集合)。這些數據類型都支持push/pop、add/remove及取交集並集和差集及更豐富的操作,而且這些操作都是原子性的。在此基礎上,redis支持各種不同方式的排序。與memcached一樣,為了保證效率,數據都是緩存在內存中。區別的是redis會周期性的把更新的數據寫入磁盤或者把修改操作寫入追加的記錄文件,並且在此基礎上實現了master-slave(主從)同步。
Redis 是一個高性能的key-value數據庫。redis的出現,很大程度補償了memcached這類keyvalue存儲的不足,在部 分場合可以對關係數據庫起到很好的補充作用。它提供了Python,Ruby,Erlang,PHP客戶端,使用很方便。
若想在PHP中使用redis,首先要先安裝redis。然後在PHP中配置擴展。
安裝redis。
首先下載好redis安裝文件,解壓到D盤或其他盤。
然後通過Dos命令行進行安裝。
把這個文件夾複製到其它地方,比如D:\redis 目錄下。
打開一個cmd窗口 使用cd命令切換目錄到D:\redis 運行 redis-server.exe redis.conf
如果想方便的話,可以把redis的路徑加到系統的環境變量里,這樣就省得再輸路徑了,後面的那個redis.conf可以省略,如果省略,會啟用默認的。
這時候另啟一個cmd窗口,原來的不要關閉,不然就無法訪問服務端了
切換到redis目錄下運行 redis-cli.exe -h 127.0.0.1 -p 6379
這時候,就已經完成配置了。
完成了配置之後,要在PHP中添加redis的擴展,之後才可以用PHP靈活的使用它。
在windows下安裝php的redis擴展非常簡單,下載一個.dll擴展包放到php的ext目錄下,在php.ini裡邊添加一行配置就可以了。
php代碼測試
redis=newRedis();redis-connect(『127.0.0.1′,6379);
redis−set(『test′,′helloworld!′);echoredis-get(『test』);
輸出hello world!
PHP實現負載均衡session共享redis緩存操作示例
本文實例講述了PHP實現負載均衡session共享redis緩存操作。分享給大家供大家參考,具體如下:
1、首先先創建html表單頁面
meta
chatset=’utf-8′
center
form
action=”se.php”
method=”post”
table
tr
td帳號:/td
tdinput
type=”text”
name=”username”/td
/tr
tr
td密碼:/td
tdinput
type=”password”
name=”pwd”/td
/tr
tr
td/td
tdinput
type=”submit”
value=”登錄”/td
/tr
/table
/form
/center
2、創建接受表單的文件
?php
header(‘content-type:text/html;charset=utf-8’);
set_time_limit(10);
ini_set(“session.save_handler”,’redis’);//開啟php.ini中的redis配置
ini_set(“session.save_path”,”tcp://192.168.1.70:6379″);//第一台服務器的redis
session_start();//開啟session
$username
=
$_POST[‘username’];
$_SESSION[‘username’]
=
$username;
echo
“scriptalert(‘登錄成功!’);location.href=’from.php’/script”;//登錄成功後跳轉到歡迎登錄頁面
?
3、跳轉到from.php去判斷第一台服務器的redis中的session是否存到了本台服務器的session中
?php
header(‘content-type:text/html;charset=utf-8’);
set_time_limit(10);
ini_set(“session.save_handler”,’redis’);//開啟php.ini中的redis配置
ini_set(“session.save_path”,”tcp://192.168.1.70:6379″);//第一台服務器的redis
session_start();//開啟session
$username
=
isset($_SESSION[‘username’])
?
$_SESSION[‘username’]
:
”;//判斷當前是否存在session
//$id
=
$_SESSION[‘PHPSESSID’];
//echo
$id;
if(empty($username)){
echo
“scriptalert(‘請重新登錄!’);location.href=’index.php’/script”;
}else{
echo
“歡迎”.$username.”登錄”;
}
?
這樣就簡單了實現了redis
session共享的功能,要測試的話需要兩台服務器,建議使用linux
比較好用
linux上安裝redis可參考《Linux平台安裝redis及redis擴展的方法》
更多關於PHP相關內容感興趣的讀者可查看本站專題:《php緩存技術總結》、《PHP數組(Array)操作技巧大全》、《php字符串(string)用法總結》、《PHP錯誤與異常處理方法總結》、《php面向對象程序設計入門教程》、《php+mysql數據庫操作入門教程》及《php常見數據庫操作技巧匯總》
希望本文所述對大家PHP程序設計有所幫助。
您可能感興趣的文章:Nginx
安裝筆記(含PHP支持、虛擬主機、反向代理負載均衡)PHP開發負載均衡指南PHP實現負載均衡下的session共用功能Thinkphp結合AJAX長輪詢實現PC與APP推送詳解PHP經典算法集錦【經典收藏】php
分庫分表hash算法php的hash算法介紹PHP中對各種加密算法、Hash算法的速度測試對比代碼PHP實現的一致性Hash算法詳解【分佈式算法】PHP實現負載均衡的加權輪詢方法分析
redis使用php怎麼進行更新
php/redis 更新緩存的問題 [ 2.0 版本 ]
if(!$redis-exists(‘cache’))
{
echo ‘寫入緩存br’;
$sql = “select * from user limit 0,3”;
$rs = mysqli_query($connect,$sql) or die(‘db conn error’);
while( $result = mysqli_fetch_assoc($rs) )
{
array_push($results,$result);
}
$cache = json_encode($results);
echo $cache;
$redis-set(‘cache’,$cache,1200);
}
else
{
echo ‘讀取緩存br’;
echo $redis-get(‘cache’);
}
後台進行add/update/delete時,自動讓緩存失效。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/186576.html