1. 使用Redis有哪些好處卧蜓?
(1) 速度快酣胀,因?yàn)閿?shù)據(jù)存在內(nèi)存中功炮,類似于HashMap,HashMap的優(yōu)勢就是查找和操作的時(shí)間復(fù)雜度都是O(1)
(2) 支持豐富數(shù)據(jù)類型杭朱,支持string,list吹散,set弧械,sorted set,hash
(3) 支持事務(wù)空民,操作都是原子性刃唐,所謂的原子性就是對數(shù)據(jù)的更改要么全部執(zhí)行,要么全部不執(zhí)行
(4) 豐富的特性:可用于緩存界轩,消息画饥,按key設(shè)置過期時(shí)間,過期后將會自動刪除
2. redis相比memcached有哪些優(yōu)勢浊猾?
(1) memcached所有的值均是簡單的字符串抖甘,redis作為其替代者,支持更為豐富的數(shù)據(jù)類型
(2) redis的速度比memcached快很多
(3) redis可以持久化其數(shù)據(jù)
3. redis常見性能問題和解決方案:
(1) Master最好不要做任何持久化工作与殃,如RDB內(nèi)存快照和AOF日志文件
(2) 如果數(shù)據(jù)比較重要单山,某個(gè)Slave開啟AOF備份數(shù)據(jù)碍现,策略設(shè)置為每秒同步一次
(3) 為了主從復(fù)制的速度和連接的穩(wěn)定性幅疼,Master和Slave最好在同一個(gè)局域網(wǎng)內(nèi)
(4) 盡量避免在壓力很大的主庫上增加從庫
(5) 主從復(fù)制不要用圖狀結(jié)構(gòu),用單向鏈表結(jié)構(gòu)更為穩(wěn)定昼接,即:Master <- Slave1 <- Slave2 <- Slave3…
這樣的結(jié)構(gòu)方便解決單點(diǎn)故障問題爽篷,實(shí)現(xiàn)Slave對Master的替換。如果Master掛了慢睡,可以立刻啟用Slave1做Master逐工,其他不變。
1)漂辐、存儲方式
Memecache把數(shù)據(jù)全部存在內(nèi)存之中泪喊,斷電后會掛掉,數(shù)據(jù)不能超過內(nèi)存大小髓涯。
Redis有部份存在硬盤上袒啼,這樣能保證數(shù)據(jù)的持久性。
2)纬纪、數(shù)據(jù)支持類型
Memcache對數(shù)據(jù)類型支持相對簡單蚓再。
Redis有復(fù)雜的數(shù)據(jù)類型。
3)包各、使用底層模型不同
它們之間底層實(shí)現(xiàn)方式 以及與客戶端之間通信的應(yīng)用協(xié)議不一樣摘仅。
Redis直接自己構(gòu)建了VM 機(jī)制 ,因?yàn)橐话愕南到y(tǒng)調(diào)用系統(tǒng)函數(shù)的話问畅,會浪費(fèi)一定的時(shí)間去移動和請求娃属。
4)六荒,value大小
redis最大可以達(dá)到1GB,而memcache只有1MB