redis哪些數(shù)據(jù)類型要序列化?
(key,())
Redis方法支持多參數(shù),只要轉(zhuǎn)成數(shù)組就行了,前提是放入的單個(gè)對(duì)象也已經(jīng)序列化。
或者把整個(gè)數(shù)組先用json工具序列化成字符串存儲(chǔ)
Redis和Memcached各有什么優(yōu)缺點(diǎn)?主要的應(yīng)用場(chǎng)景是什么?
根據(jù)我的經(jīng)驗(yàn),在BAT里,redis已經(jīng)逐漸取代了memcached,成為分布式場(chǎng)景廣泛使用的緩存方案。接下來,我們就分析下,redis是如何取代memcached,成為開發(fā)者的寵兒的。
支持的存儲(chǔ)類型不同雖然都是內(nèi)存數(shù)據(jù)庫,memcached不僅能夠存儲(chǔ)string,還能夠存儲(chǔ)圖片,視頻等形式的文件。然而對(duì)于更多的使用內(nèi)存數(shù)據(jù)庫做緩存以及分布式方案的程序開發(fā)者來說,memcached提供的string格式存儲(chǔ),應(yīng)用場(chǎng)景有限,而存儲(chǔ)圖片視頻的功能又十分雞肋(主要是沒這方面需求)。相比之下,redis提供set,hash,list等多種類型的存儲(chǔ)結(jié)構(gòu),對(duì)于做分布式緩存實(shí)在是再適合不過了。
數(shù)據(jù)落盤雖然大多數(shù)人使用緩存以及分布式方案都不會(huì)要求數(shù)據(jù)持久化,但是誰也不能保證不出現(xiàn)萬一的情況。一旦發(fā)生穩(wěn)定性問題,memcached掛掉后,數(shù)據(jù)是不可恢復(fù)的,而redis除了支持在配置里打開數(shù)據(jù)落盤(RDB),還能通過aof來找回?cái)?shù)據(jù)。
內(nèi)存空間與數(shù)據(jù)量memcached可以修改最大內(nèi)存,使用的是LRU算法,而redis目前底層使用了自己的VM,引入了新的特性突破了物理內(nèi)存的限制。個(gè)人認(rèn)為在這方面依然是redis更加優(yōu)秀一些。
使用場(chǎng)景基于以上提到的特點(diǎn),基本我們就能分清redis與memcached的場(chǎng)景了。
如果對(duì)緩存數(shù)據(jù)類型超越了基本的數(shù)據(jù)結(jié)構(gòu),需要圖片或者視頻,多讀少寫,且數(shù)據(jù)量非常大的場(chǎng)景,那么一定要用memcached而不是redis了(比如微博大量查詢好友信息,微博信息等,但是不是說微博用的是memcached方案哦)。
但是如果是對(duì)緩存的數(shù)據(jù)格式有更多的要求,且對(duì)安全性也有很高的要求的話,建議還是使用redis,這也是redis目前正在逐漸代替memcached的根本原因。
以上是我的淺見,歡迎各位在下方評(píng)論區(qū)與我溝通。
我是蘇蘇思量,來自BAT的Java開發(fā)工程師,每天分享科技類見聞,歡迎關(guān)注我,與我共同進(jìn)步。
redis和memcache都是key-value型的緩存數(shù)據(jù)庫,如果只是用到快速緩存,將數(shù)據(jù)保存在內(nèi)存中快速調(diào)用,那么兩者性能上差不多。如果要有消息隊(duì)列的需求,那么redis更適合。redis可以當(dāng)成memcache的2.0