本文目錄一覽:
windows 7 php怎麼通過redis擴展使用redis
PHP 7安裝Redis擴展
1、php操作第一步就是要安裝對應的擴展。在Windows環境下則是對應的.dll文件。Windows環境下由於編譯環境不同,對應擴展在選擇的時候需要注意當前php的先關信息。可以通過phpinfo()查看。如果可以看到對應的環境,這在選擇擴展的時候有用
2、選擇對應PHP環境擴展
通過以上圖我們可以看到「VC14」和「ts」這樣的字樣,如果不明白的同學在找對應擴展的時候也一樣要找到這樣的字樣。
3、安裝PHP 7擴展
下載php_redis-20160319-ts-vc14-x64.zip之後解壓,將解壓後的php_redis.dll文件放到php\ext目錄下。然後在php.ini末尾添加extension=php_redis.dll。重啟Apache服務。再次通過phpinfo()查看,如圖表示安裝成功
測試例子
1、擴展安裝成功之後需要驗證下是否可以用。web伺服器目錄下創建文件輸入下面內容:
?php
$redis = new Redis();
$redis-connect(‘127.0.0.1’,6379);
$redis-set(‘test’,’hello redis’);
echo $redis-get(‘test’);
?
2、然後在網頁上訪問,如果有hello redis輸入則表示擴展安裝成功。
如何批量插入redis hash
使用Redis的腳本功能實現Redis中數據簡單查詢,有需要的朋友可以參考下。 在Redis的設計中,key是一切,對於Redis是可見的,而value對於Redis來說就是一個位元組數組,Redis並不知道你的value中存儲的是什麼
php redis如何使用
開始在
PHP
中使用
Redis
前,要確保已經安裝了
redis
服務及
PHP
redis
驅動,且你的機器上能正常使用
PHP。
PHP安裝redis擴展
/usr/local/php/bin/phpize
#php安裝後的路徑
./configure
–with-php-config=/usr/local/php/bin/php-config
make
make
install
修改php.ini文件
vi
/usr/local/php/lib/php.ini
增加如下內容:
extension_dir
=
“/usr/local/php/lib/php/extensions/no-debug-zts-20090626”
extension=redis.so
安裝完成後重啟php-fpm
或
apache。查看phpinfo信息,就能看到redis擴展。
連接到
redis
服務
?php
//連接本地的
Redis
服務
$redis
=
new
Redis();
$redis-connect(‘127.0.0.1’,
6379);
echo
“Connection
to
server
sucessfully”;
//查看服務是否運行
echo
“Server
is
running:
“
.
$redis-ping();
?
執行腳本,輸出結果為:
Connection
to
server
sucessfully
Server
is
running:
PONG
Redis
PHP
String(字元串)
實例
?php
//連接本地的
Redis
服務
$redis
=
new
Redis();
$redis-connect(‘127.0.0.1’,
6379);
echo
“Connection
to
server
sucessfully”;
//設置
redis
字元串數據
$redis-set(“tutorial-name”,
“Redis
tutorial”);
//
獲取存儲的數據並輸出
echo
“Stored
string
in
redis::
“
.
jedis.get(“tutorial-name”);
?
執行腳本,輸出結果為:
Connection
to
server
sucessfully
Stored
string
in
redis::
Redis
tutorial
Redis
PHP
List(列表)
實例
?php
//連接本地的
Redis
服務
$redis
=
new
Redis();
$redis-connect(‘127.0.0.1’,
6379);
echo
“Connection
to
server
sucessfully”;
//存儲數據到列表中
$redis-lpush(“tutorial-list”,
“Redis”);
$redis-lpush(“tutorial-list”,
“Mongodb”);
$redis-lpush(“tutorial-list”,
“Mysql”);
//
獲取存儲的數據並輸出
$arList
=
$redis-lrange(“tutorial-list”,
,5);
echo
“Stored
string
in
redis::
“
print_r($arList);
?
執行腳本,輸出結果為:
Connection
to
server
sucessfully
Stored
string
in
redis::
Redis
Mongodb
Mysql
Redis
PHP
Keys
實例
?php
//連接本地的
Redis
服務
$redis
=
new
Redis();
$redis-connect(‘127.0.0.1’,
6379);
echo
“Connection
to
server
sucessfully”;
//
獲取數據並輸出
$arList
=
$redis-keys(“*”);
echo
“Stored
keys
in
redis::
“
print_r($arList);
?
執行腳本,輸出結果為:
Connection
to
server
sucessfully
Stored
string
in
redis::
tutorial-name
tutorial-list
php怎麼將數據導入redis
對於大訪問量的站點使用默認的Session 並不合適,我們可以將其存入資料庫、或者使用Redis KEY-VALUE數據存儲方案
首先新建一個session表
CREATE TABLE `sessions` (
`sid` char(40) NOT NULL,
`updatetime` int(20) NOT NULL,
`data` varchar(200) NOT NULL,
UNIQUE KEY `sid` (`sid`) USING HASH
) ENGINE=MEMORY DEFAULT CHARSET=utf8;
Mysql 的memory引擎採用內存表,所有數據存儲在內存,操作速度快
複製代碼
?php
//引入資料庫文件
include “db.php”;
class MySessionHandler implements SessionHandlerInterface
{
private $savePath;
private $sessData;
public $expiretime; //設置過期時間
public $db; //資料庫
public function __construct($hanlder =”){
$this-db = Database::getInstance();
//獲取資料庫實力
///var_dump($this-db);
}
public function open($savePath, $sessionName)
{
return true;
}
public function close()
{
return true;
}
public function read($id)
{
$sql =”select * from sessions where sid =’$id'”;
$result = $this-db-execute($sql);
if(!empty($result)){
return $this-sessData = $result;
}
}
//函數的參數 $id – 當前會話ID
//數據DATA – 序列化之後的字元串
public function write($id, $data)
{
// echo $id;
// echo $data;
$now = time();
$newExp = $now+$this-expiretime; //總時間=當前時間 + 期限時間
$sql = “select * from sessions where sid =’$id'”;
$result = $this-db-getOne($sql);
//var_dump($result);
if($data==”||isset($data)){
$data = $this-sessData;
}
if($result){
//如果存在則更新
$sql =”update sessions set updatetime = ‘$newExp’,data =’$data’ where sid = ‘$id'”;
//echo $sql;
$update_data =$this-db-execute($sql);
if($update_data){
return true;
}
}else{
//不存在則生成生成
$sql = “insert into sessions(sid,updatetime,data) values(‘$id’,’$now’,’$data’)”;
$insert_data = $this-db-execute($sql);
if($insert_data){
return true;
}
}
return false;
}
public function destroy($id)
{ //銷毀
$sql = “delete from sessions where sid=”.”$id”;
$destory = $this-db-execute($sql);
if($destory){
return true;
}else{
return false;
}
}
public function gc($sessMaxLifeTime)
{
$t = time();
$sql =”delete from sessions where $t – ‘updatetime’${sessMaxLifeTime}”;
$data = $this-db-execute($this-tosql);
if($data){
return true;
}else{
return false;
}
return true;
}
}
複製代碼
實例化
此處 PHP 手冊可以有兩種方法
1,實現了SessionHandlerInterface借口的對象,自PHP5.4可以使用
2 ,直接使用 session_set_save_handler
複製代碼
//判斷PHP版本
if(version_compare(PHP_VERSION,5.4)==1){
session_set_save_handler($handler, true);
session_start();
}else{
ini_set(‘session.use_trans_sid’,0);
ini_set(‘session.use_cookies’,1);
ini_set(‘session.cookie_path’,’/’);
ini_set(‘session.save_handler’,’user’);
session_module_name(‘user’);
session_set_save_handler(array($session,”open”),array($session,”close”),array($session,”read”),array($session,”write”),array($session,”destory”),array($session,”gc”));
session_start();
}
$_SESSION[‘QQ’]=”QQ”;
echo $_SESSION[‘QQ’];
複製代碼
資料庫代碼 db.php
複製代碼
?php
class Database{
static $instance;
static $db;
static function getInstance(){
if(self::$instance){
return self::$instance;
}else{
return new Database();
}
}
public function __construct(){
self::$db = new PDO(‘mysql:host=localhost;dbname=session’, ‘root’,”);
}
public function getOne($sql){
$rs =self::$db-query($sql);
@$rs-setFetchMode(PDO::FETCH_ASSOC);//返回關聯數組
$result = $rs – fetch();
return $result;
}
public function execute($sql){
$rs = self::$db-exec($sql);
return $rs;
}
}
//$data = Database::getInstance();
//var_dump($data);
複製代碼
使用REDIS 存儲SESSION
複製代碼
?php
class SessionManager{
private $redis;
private $sessionSavePath;
private $sessionName;
private $sessionExpireTime = 30;
public function __construct(){
$this-redis = new Redis();
$this-redis-connect(‘127.0.0.1’,6379); //連接redis
$retval = session_set_save_handler(
array($this,”open”),
array($this,”close”),
array($this,”read”),
array($this,”write”),
array($this,”destory”),
array($this,”gc”)
);
session_start();
}
public function open($path,$name){
return true;
}
public function close(){
return true;
}
public function read($id){
$value = $this-redis-get($id);
if($value){
return $value;
}else{
return “”;
}
}
public function write($id,$data){
if($this-redis-set($id,$data)){
$this-redis-expire($id,$this-sessionExpireTime);
//設置過期時間
return true;
}
return false;
}
public function destory($id){
if($this-redis-delete($id)){
return true;
}
return false;
}
public function gc($maxlifetime){
return true;
}
//析構函數
public function __destruct(){
session_write_close();
}
}
$re = new SessionManager();
$_SESSION[‘name’] = “qq”;
echo $_SESSION[‘name’];
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/253941.html