国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁 php框架 YII Yii框架如何正確使用MemCache緩存

Yii框架如何正確使用MemCache緩存

Nov 18, 2020 pm 03:29 PM
memcache yii 框架 緩存

Yii框架如何正確使用MemCache緩存

具體操作如下所示:

(圖文教程推薦:yii

一、配置memcache server 服務(wù)器

1、下載memcached軟件包,下載地址:

http://pan.baidu.com/s/1boAnghp

解壓,把memcached.exe放到隨意一個(gè)地方,比如:d:/memcached/下(我解壓到了我的wampserver的bin目錄下與php目錄同級(jí))。

2、windows+R快捷鍵輸入cmd, 在命令行中輸入一下代碼,切換到memcache.exe的目錄下:

1d6798e555534f1b653a66e5b3f6efa.png

3、輸入如下代碼安裝memcache.exe: memcached.exe -d install

299809c8d8fcd8f751db5324b0d88b1.png

4、輸入memcached.exe -d start啟動(dòng)

d4af9fc5457f4f38cc02105f2e0bdee.png

配置成功

//memcache常用的函數(shù):
Memcache::add   //添加一個(gè)值,如果已經(jīng)存在,則返回false
Memcache::addServer  // 添加一個(gè)可供使用的服務(wù)器地址
Memcache::close   //關(guān)閉一個(gè)Memcache對(duì)象
Memcache::connect  // 創(chuàng)建一個(gè)Memcache對(duì)象
memcache_debug  // 控制調(diào)試功能
Memcache::decrement  // 對(duì)保存的某個(gè)key中的值進(jìn)行減法操作
Memcache::delete   //刪除一個(gè)key值
Memcache::flush  // 清除所有緩存的數(shù)據(jù)
Memcache::get   //獲取一個(gè)key值
Memcache::getExtendedStats   //獲取進(jìn)程池中所有進(jìn)程的運(yùn)行系統(tǒng)統(tǒng)計(jì)
Memcache::getServerStatus// 獲取運(yùn)行服務(wù)器的參數(shù)
Memcache::getStats   //返回服務(wù)器的一些運(yùn)行統(tǒng)計(jì)信息
Memcache::getVersion   //返回運(yùn)行的Memcache的版本信息
Memcache::increment   //對(duì)保存的某個(gè)key中的值進(jìn)行加法操作
Memcache::pconnect  // 創(chuàng)建一個(gè)Memcache的持久連接對(duì)象
Memcache::replace   //對(duì)一個(gè)已有的key進(jìn)行覆寫操作
Memcache::set   //添加一個(gè)值,如果已經(jīng)存在,則覆寫
Memcache::setCompressThreshold   //對(duì)大于某一大小的數(shù)據(jù)進(jìn)行壓縮
Memcache::setServerParams   //在運(yùn)行時(shí)修改服務(wù)器的參數(shù)

二、安裝php_memcache.dll擴(kuò)展

1、首先下載符合你的php版本的php_memcache.dll擴(kuò)展

地址:

http://pan.baidu.com/s/1skJnZIl

2、復(fù)制張貼在你的php/ext文件夾里

3、在php.ini里面添加如下代碼,導(dǎo)入擴(kuò)展:

extension=php_memcache.dll

三、yii里面的配置

1.如果你用的是基礎(chǔ)框架:打開config/web.php

如果你用的是高級(jí)框架:打開config/main.php

添加如下代碼:

'cache' => [
    'class' => 'yii\caching\MemCache',
    'servers' => [
        [
            'host' => 'localhost',
            'port' => 11211,
            'weight' => 100,
        ],
        [
            'host' => 'localhost',
            'port' => 11211,
            'weight' => 50,
        ],
    ],
],

現(xiàn)在就可以在你的控制器的action方法中使用如下代碼了:

//緩存MemCache
 
$key='key';
$value='this is the value';
<pre name="code" class="php">Yii::$app->cache->set($key,$value);
echo "lixian";
echo Yii::$app->cache->get($key);
exit();

但是當(dāng)你使用過期時(shí)間時(shí)即:

Yii::$app->cache->set($key,$value,6);//過期時(shí)間為6s
echo "lixian";
echo Yii::$app->cache->get($key);
exit();

就輸出不了了,這是該框架自身的一個(gè)bug,解決辦法如下:

在yii2使用memcache前根據(jù)文檔配置好相應(yīng)的參數(shù),在使用memcache(非memcached)過程中會(huì)發(fā)現(xiàn) Yii::$app->cache->set('key','value'); 當(dāng)這句話沒有設(shè)置有效時(shí)間為多少秒時(shí),可以正常獲取到緩存中鍵為key的值,但表示此key不過期。

當(dāng)設(shè)置了有效時(shí)間時(shí), Yii::$app->cache->set('key','value',60); 比如60秒,就會(huì)出現(xiàn)取不到key對(duì)應(yīng)的value值,網(wǎng)上和論壇里搜了搜,沒有找到解決辦法,也有很多phper遇到這類似的問題。所以特意去看了看底層代碼,引用的memcache類為Yii2自帶的yii\caching\MemCache, Yii::$app->cache->set('key','value') 這句代碼會(huì)自動(dòng)調(diào)用memcache類下的setValue方法來設(shè)置緩存,所以問題也許就出現(xiàn)在這兒了。

后面經(jīng)過測(cè)試,發(fā)現(xiàn)這個(gè)方法最后一句 return $this->useMemcached ? $this->_cache->set($key, $value, $expire) : $this->_cache->set($key, $value, 0, $expire) 的問題,將這句代碼改為 return $this->useMemcached ? $this->_cache->set($key, $value, $expire) : $this->_cache->set($key, $value, 0, $duration) 后,再測(cè)試發(fā)現(xiàn)問題已經(jīng)解決。

原因則是這句return代碼里使用memcache時(shí)調(diào)用的 $this->_cache->set($key, $value, 0, $expire) ,相當(dāng)于 $mem = new Memcache();$mem->set($key,$value,0,$expire); 這里最關(guān)鍵的一點(diǎn)是:memcache要設(shè)置的時(shí)間的含義是有效時(shí)間為多少秒,memcached要設(shè)置的時(shí)間的含義是在哪一秒到期(等效于time()+$duration),所以發(fā)現(xiàn)問題所在之后將原來代碼里的第二個(gè)$expire改成$duration問題就解決了。

以上是Yii框架如何正確使用MemCache緩存的詳細(xì)內(nèi)容。更多信息請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請(qǐng)聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅(qū)動(dòng)的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機(jī)

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強(qiáng)大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)代碼編輯軟件(SublimeText3)

如何評(píng)估Java框架商業(yè)支持的性價(jià)比 如何評(píng)估Java框架商業(yè)支持的性價(jià)比 Jun 05, 2024 pm 05:25 PM

評(píng)估Java框架商業(yè)支持的性價(jià)比涉及以下步驟:確定所需的保障級(jí)別和服務(wù)水平協(xié)議(SLA)保證。研究支持團(tuán)隊(duì)的經(jīng)驗(yàn)和專業(yè)知識(shí)。考慮附加服務(wù),如升級(jí)、故障排除和性能優(yōu)化。權(quán)衡商業(yè)支持成本與風(fēng)險(xiǎn)緩解和提高效率。

PHP 框架的學(xué)習(xí)曲線與其他語言框架相比如何? PHP 框架的學(xué)習(xí)曲線與其他語言框架相比如何? Jun 06, 2024 pm 12:41 PM

PHP框架的學(xué)習(xí)曲線取決于語言熟練度、框架復(fù)雜性、文檔質(zhì)量和社區(qū)支持。與Python框架相比,PHP框架的學(xué)習(xí)曲線更高,而與Ruby框架相比,則較低。與Java框架相比,PHP框架的學(xué)習(xí)曲線中等,但入門時(shí)間較短。

PHP 框架的輕量級(jí)選項(xiàng)如何影響應(yīng)用程序性能? PHP 框架的輕量級(jí)選項(xiàng)如何影響應(yīng)用程序性能? Jun 06, 2024 am 10:53 AM

輕量級(jí)PHP框架通過小體積和低資源消耗提升應(yīng)用程序性能。其特點(diǎn)包括:體積小,啟動(dòng)快,內(nèi)存占用低提升響應(yīng)速度和吞吐量,降低資源消耗實(shí)戰(zhàn)案例:SlimFramework創(chuàng)建RESTAPI,僅500KB,高響應(yīng)性、高吞吐量

php框架laravel和yii區(qū)別是什么 php框架laravel和yii區(qū)別是什么 Apr 30, 2025 pm 02:24 PM

Laravel和Yii的主要區(qū)別在于設(shè)計(jì)理念、功能特性和使用場(chǎng)景。1.Laravel注重開發(fā)的簡潔和愉悅,提供豐富的功能如EloquentORM和Artisan工具,適合快速開發(fā)和初學(xué)者。2.Yii強(qiáng)調(diào)性能和效率,適用于高負(fù)載應(yīng)用,提供高效的ActiveRecord和緩存系統(tǒng),但學(xué)習(xí)曲線較陡。

yii與Docker:容器化和部署您的應(yīng)用程序 yii與Docker:容器化和部署您的應(yīng)用程序 Apr 02, 2025 pm 02:13 PM

使用Docker容器化和部署Yii應(yīng)用的步驟包括:1.創(chuàng)建Dockerfile,定義鏡像構(gòu)建過程;2.使用DockerCompose啟動(dòng)Yii應(yīng)用和MySQL數(shù)據(jù)庫;3.優(yōu)化鏡像大小和性能。這不僅涉及到具體的技術(shù)操作,還包括理解Dockerfile的工作原理和最佳實(shí)踐,以確保高效、可靠的部署。

Java框架學(xué)習(xí)路線圖:不同領(lǐng)域中的最佳實(shí)踐 Java框架學(xué)習(xí)路線圖:不同領(lǐng)域中的最佳實(shí)踐 Jun 05, 2024 pm 08:53 PM

針對(duì)不同領(lǐng)域的Java框架學(xué)習(xí)路線圖:Web開發(fā):SpringBoot和PlayFramework。持久層:Hibernate和JPA。服務(wù)端響應(yīng)式編程:ReactorCore和SpringWebFlux。實(shí)時(shí)計(jì)算:ApacheStorm和ApacheSpark。云計(jì)算:AWSSDKforJava和GoogleCloudJava。

Golang框架學(xué)習(xí)過程中常見的誤區(qū)有哪些? Golang框架學(xué)習(xí)過程中常見的誤區(qū)有哪些? Jun 05, 2024 pm 09:59 PM

Go框架學(xué)習(xí)的誤區(qū)有以下5種:過度依賴框架,限制靈活性。不遵循框架約定,代碼難維護(hù)。使用過時(shí)庫,帶來安全和兼容性問題。過度使用包,混淆代碼結(jié)構(gòu)。忽視錯(cuò)誤處理,導(dǎo)致意外行為和崩潰。

揭秘Java框架的常見故障疑慮 揭秘Java框架的常見故障疑慮 Jun 05, 2024 pm 09:37 PM

常見Java框架故障疑慮:連接池故障:增加連接池大小或使用監(jiān)視工具解決連接池耗盡問題。Hibernate惰性加載異常:在使用惰性加載實(shí)體前明確初始化它們。JSON映射錯(cuò)誤:驗(yàn)證數(shù)據(jù)類型和JSON格式的正確性。過濾器和攔截器配置問題:仔細(xì)檢查配置,確保預(yù)期工作方式。

See all articles