鍍金池/ 問答/人工智能  PHP  網(wǎng)絡(luò)安全/ php變量與緩存的區(qū)別

php變量與緩存的區(qū)別

最近看了一些關(guān)于緩存方面的教程:
Memcache將數(shù)據(jù)存儲為key->value結(jié)構(gòu)的hash表;
redis可以支持五種數(shù)據(jù)類型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)
明顯redis比Memcache功能強大,那么Memcache還有使用的必要?它實現(xiàn)簡單緩存相比輕量化點?
還有根據(jù)以前看的PHP的底層實現(xiàn)的講解:
php變量是zval結(jié)構(gòu)體實現(xiàn)的,并在符號(hash)表內(nèi)存儲了該zval結(jié)構(gòu)體地址,
全局變量就是存儲在symbol_table全局符號表里, 那么疑問:
1.php變量和Memcache緩存都是在內(nèi)存存儲,變量存取速度應(yīng)該比緩存還要快,想跨頁面調(diào)用可以定義全局變量,PHP7的字符串變量也沒有限制大小,那還用緩存干什么?
2.php變量zval結(jié)構(gòu)體使用5種數(shù)據(jù)類型實現(xiàn)存儲8種PHP數(shù)據(jù)類型,這和redis實現(xiàn)的5種數(shù)據(jù)類型也差不多?
php數(shù)組也是類hash結(jié)構(gòu),配合數(shù)組函數(shù)也可以實現(xiàn)redis集合,列表的功能,也可以排序,選擇存取,那么存儲數(shù)據(jù)有什么本質(zhì)的差別嗎?

回答
編輯回答
毀了心

變量是零時存儲到內(nèi)存中,腳本執(zhí)行完畢變量就不存在了,緩存是存在文件或者內(nèi)存中,緩存有效期內(nèi)是有效的,內(nèi)存緩存當(dāng)重啟后也就不存在了!

2018年2月17日 02:07
編輯回答
笨笨噠

樓主懂得很多,甚至連php底層的東西都知道。
我不知道 php 底層是怎樣實現(xiàn)的,但我覺得樓主可以去了解一下“變量的生命周期”。

redis 與 memcache 有不同的應(yīng)用場景,不能直接比較優(yōu)劣,網(wǎng)上很容易找到比較它們的文章。

2017年1月21日 05:38
編輯回答
孤影

概念性的問題,
全局變量你的跨只是文件
緩存可以跨請求

2018年6月23日 11:16