国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

PHP面試常考內容之Memcache和Redis(2)

sewerganger / 1446人閱讀

摘要:繼周一發布的面試常考內容之和后,這是第二篇,感謝你的支持和閱讀。預告面試常考內容之和將于本周五更新。以上內容摘自程序員面試筆試寶典書籍,該書已在天貓京東當當等電商平臺銷售。

你好,是我琉憶。
繼周一(2019.2-18)發布的“PHP面試常考內容之Memcache和Redis(1)”后,這是第二篇,感謝你的支持和閱讀。
本周(2019.2-18至2-22)的文章內容點為以下幾點,更新時間為每周一三五,可以關注本欄持續關注,感謝你的支持。

一、什么是Memcache?
二、Memcache有什么特征?
三、Memcache的內存管理機制是什么樣的?
四、Memcache和Memcached有什么區別?
五、如何操作Memcache?
六、如何使用Memcache做Session共享?
七、什么是Redis?
八、如何使用Redis?
九、使用Redis需要注意哪些問題?
十、新增:Redis和Memcache有什么不同?
十一、新增:Redis如何實現持久化?
十二、Memcache和Redis常考的面試題

本章節的內容將會被分為三篇文章進行講解完整塊內容,第一篇主要講解一到六,第二篇主要講解七到十一(新增了十和十一),第三篇圍繞第十二點。

以下正文的部分內容來自《PHP程序員面試筆試寶典》書籍,如果轉載請保留出處:


七、什么是Redis?

Redis是一個key-value存儲系統。和Memcached類似,它支持存儲的value類型相對更多,包括string(字符串)、list(鏈表)、set(集合)、zset(sorted set,有序集合)和hash(哈希類型)。這些數據類型都支持push/pop、add/remove及取交集、并集和差集及更豐富的操作,而且這些操作都是原子性的。在此基礎上,Redis支持各種不同方式的排序。與Memcached一樣,為了保證效率,數據都是緩存在內存中。區別是Redis會周期性地把更新的數據寫入磁盤或者把修改操作寫入追加的記錄文件,并且在此基礎上實現了master-slave(主從)同步。

Redis的出現,很大程度上彌補了Memcached這類key/value存儲的不足,在部分場合可以對關系數據庫起到很好的補充作用。它提供了Java、C/C++、C#、PHP、JavaScript、Perl、Object-C、Python、Ruby、Erlang等客戶端,使用起來很方便。

Redis支持主從同步。數據可以從主服務器向任意數量的從服務器上同步,從服務器可以是關聯其他從服務器的主服務器。這使得Redis可執行單層樹復制。存盤可以有意無意地對數據進行寫操作。由于完全實現了發布/訂閱機制,使得從數據庫在任何地方同步樹時,可訂閱一個頻道并接收主服務器完整的消息發布記錄。同步對讀取操作的可擴展性和數據冗余很有幫助。


八、如何使用Redis?

set方法的使用示例:

connect("127.0.0.1", 6378);  
    $res = $Redis->set(aaa,"bbbb");  
    var_dump($res); //結果:bool(true)                                                                                                   
?>

以下僅羅列各使用方法的匯總,具體使用方法可以參考示例和PHP的寫法進行使用:

1、字符串類型的使用方法

2、Hash類型使用方法

3、List類型使用方法

4、Set類型使用方法

5、Sorted set類型使用方法


九、使用Redis需要注意哪些問題?

與MySQL一樣,Redis在使用過程中,也會碰到很多的問題,適當的技巧和優化將大大提高Redis的使用性能,提高服務的質量。現將常見的一些問題總結如下:

1.停止使用keys *操作

keys*操作執行速度將會變慢。因為keys命令的時間復雜度是O(n),其中n是要返回的keys的個數,由此可見這個命令的復雜度就取決于數據量的大小了。當數據量比較大時,在這個操作執行期間,其他任何命令在實例中都無法執行,嚴重影響了性能。
可以使用scan命令來代替,scan命令通過增量迭代的方式來掃描數據庫。

2.定位Redis速度降低的原因

使用INFO commandstats命令來查看所有命令的統計情況,如命令執行了多少次,執行命令所耗費的毫秒數等信息。

3.盡量使用hash的存儲方式

Hash的存儲方式會大大提高操作效率。

4.設置key值的存活時間

無論什么時候,只要有可能就利用key超時的優勢。一個很好的例子就是存儲一些諸如臨時認證key之類的東西。當你去查找一個授權key時——以OAUTH為例——通常會得到一個超時時間。這樣在設置key的時候,設成同樣的超時時間,Redis就會自動為你清除!而不再需要使用KEYS *來遍歷所有的key了。

5.對于很重要的數據,請使用異常處理機制

如果必須確保關鍵性的數據可以被放入Redis的實例中,那么請使用異常處理機制。幾乎所有的Redis客戶端采用的都是“發送即忘”策略,因此經常需要考慮一個 key 是否真正被放到Redis數據庫中了。加入異常處理機制是程序健壯性保障的前提。

6.多實例應用

無論什么時候,只要有可能就分散多Redis實例的工作量。Redis集群允許基于key范圍分離出部分包含主/從模式的key。多實例是保證集群資源最大利用,集群穩定的重要保障。


自己整理了一篇“Redis如何實現集群?”的文章,關注公眾號:“琉憶編程庫”,回復:“redis”,我發給你。

十、Redis和Memcache有什么不同?

(1)數據結構:Memcache只支持key value存儲方式,Redis支持更多的數據類型,比如Key value、hash、list、set、zset;
(2)多線程:Memcache支持多線程,Redis支持單線程;CPU利用方面Memcache優于Redis;
(3)持久化:Memcache不支持持久化,Redis支持持久化;
(4)內存利用率:Memcache高,Redis低(采用壓縮的情況下比Memcache高);
(5)過期策略:Memcache過期后,不刪除緩存,會導致下次取數據數據的問題,Redis有專門線程,清除緩存數據;

十一、Redis如何實現持久化?

Redis是一個支持數據持久化的內存數據庫,可以對Redis設置,讓Redis周期性的把更新的數據同步到磁盤中保證數據持久化。
Redis支持的持久化策略有兩種,分別是:RDB和AOF。

1、RDB持久化

RDB持久化的意思是:指定的時間間隔內保存數據快照。Redis默認的持久化方式就是RDB。

RDB的工作原理為當 Redis 需要做持久化時,Redis 會 fork 一個子進程,子進程將數據寫到磁盤上一個臨時 RDB 文件中。當子進程完成寫臨時文件后,將原來的 RDB 替換掉,這樣的好處就是可以 copy-on-write。

在Redis.conf 文件中RDB持久化的默認設置為:

save 300 10  #300秒內,如果超過10個key被修改,則發起快照保存;
RDB的優點:

因為RDB的持久化方式是可以在時間間隔內進行數據快照,所以RDB非常適合用于災難恢復。例如設置每小時備份一次,或每天備份一次總的,從而方便數據的追溯和還原到不同版本。

RDB的缺點:

(1)特定時間下才進行一次持久化,所以易丟失數據;例如你設置30分鐘備份一次數據,但是如果Redis服務器發生故障,那么就可能丟失好幾分鐘的數據沒能備份。
(2)龐大數據時,保存時會出現性能問題。

2、AOF持久化

AOF:先把命令追加到操作日志的尾部,保存所有歷史操作。

AOF的工作原理是,每一個寫命令都通過write函數追加到 appendonly.aof 中,當Redis出現故障重啟時,將會讀取 AOF 文件進行“重放”以恢復到 Redis 關閉前的狀態。

Redis.conf 對AOF持久化的設置:

Redis.conf appendonly yes  #開啟全程持久化
appendfsync always     #每次有數據修改發生時都會寫入AOF文件。
appendfsync everysec     #每秒鐘同步一次,該策略為AOF的缺省策略。
AOF的優點:

(1)數據非常完整,故障恢復丟失數據少;
(2)可對歷史操作進行處理。

AOF的缺點:

(1)在備份相同的數據集時,AOF的文件體積大于RDB的文件體積;
(2)AOF使用fsync策略的話,AOF的速度可能會慢于RDB。

3、選擇哪一種Redis做持久化策略更好?

因為Redis是支持同時開啟RDB和AOF持久化策略的,所以數據備份安全性考慮的話兩者都可以設置,當Redis重啟后會優先使用AOF恢復數據,保證丟失的數據最少。

如果要二選一的話,可以根據自己的業務進行選擇:

(1)如果對數據的丟失要求很高,可以選擇AOF持久化策略;
(2)AOF對Redis執行的每一條命令都會追加到磁盤中,會降低Redis的性能,如果對Redis的性能有所考慮,可以選擇RDB持久化策略;
(3)考慮數據災難恢復的情況,可以選擇RDB持久化策略。


這里還有一個常考的Redis相關的問題:Redis如何實現緩存集群?

關注公眾號:“琉憶編程庫”,回復:“redis”,我發給你。

預告:PHP面試常考內容之Memcache和Redis(3)將于本周五(2019.2-22)更新。

以上內容摘自《PHP程序員面試筆試寶典》書籍,該書已在天貓、京東、當當等電商平臺銷售。

更多PHP相關的面試知識、考題可以關注公眾號獲取:琉憶編程庫

對本文有什么問題或建議都可以進行留言,我將不斷完善追求極致,感謝你們的支持。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/61748.html

相關文章

  • PHP面試常考內容MemcacheRedis(3)

    摘要:自己整理了一篇不同等級面試都問什么的文章,關注公眾號琉憶編程庫,回復等級,我發給你。 你好,是我琉憶。今天是周五了,再上一天班就周末了,提前祝大家周末愉快。嘿嘿。這篇文章是本周Memcache和Redis內存數據庫常考的專題。本周一和周三更新的文章路徑:PHP面試常考內容之Memcache和Redis(1)PHP面試常考內容之Memcache和Redis(2)本周(2019.2-18至...

    Lionad-Morotar 評論0 收藏0
  • PHP面試常考內容MemcacheRedis(3)

    摘要:自己整理了一篇不同等級面試都問什么的文章,關注公眾號琉憶編程庫,回復等級,我發給你。 你好,是我琉憶。今天是周五了,再上一天班就周末了,提前祝大家周末愉快。嘿嘿。這篇文章是本周Memcache和Redis內存數據庫常考的專題。本周一和周三更新的文章路徑:PHP面試常考內容之Memcache和Redis(1)PHP面試常考內容之Memcache和Redis(2)本周(2019.2-18至...

    zhaochunqi 評論0 收藏0
  • PHP面試常考內容MemcacheRedis(1)

    摘要:以下正文的部分內容來自程序員面試筆試寶典書籍,如果轉載請保留出處一什么是是一個開源免費高性能的分布式對象緩存系統,它基于一個存儲鍵值對的來存儲數據到內存中。預告面試常考內容之和將于本周三更新。 你好,是我琉憶。繼上周(2019.2-11至2-15)發布的PHP面試常考內容之面向對象專題后,發布的第二個專題,感謝你的閱讀。本周(2019.2-18至2-22)的文章內容點為以下幾點,更新時...

    wenyiweb 評論0 收藏0
  • PHP面試常考內容MemcacheRedis(1)

    摘要:以下正文的部分內容來自程序員面試筆試寶典書籍,如果轉載請保留出處一什么是是一個開源免費高性能的分布式對象緩存系統,它基于一個存儲鍵值對的來存儲數據到內存中。預告面試常考內容之和將于本周三更新。 你好,是我琉憶。繼上周(2019.2-11至2-15)發布的PHP面試常考內容之面向對象專題后,發布的第二個專題,感謝你的閱讀。本周(2019.2-18至2-22)的文章內容點為以下幾點,更新時...

    nanfeiyan 評論0 收藏0
  • PHP面試常考內容MemcacheRedis2

    摘要:繼周一發布的面試常考內容之和后,這是第二篇,感謝你的支持和閱讀。預告面試常考內容之和將于本周五更新。以上內容摘自程序員面試筆試寶典書籍,該書已在天貓京東當當等電商平臺銷售。 你好,是我琉憶。繼周一(2019.2-18)發布的PHP面試常考內容之Memcache和Redis(1)后,這是第二篇,感謝你的支持和閱讀。本周(2019.2-18至2-22)的文章內容點為以下幾點,更新時間為每周...

    Eric 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<