1.使用Redis有什麽好處?
(1)很快,因為數據存在於內存中。和HashMap類似,HashMap的優點是搜索和操作的時間復雜度為O(1)。
(2)支持豐富的數據類型,字符串、列表、集合、有序集合和哈希。
(3)支持事務,所有操作都是原子的。所謂原子性,就是對數據的所有更改都執行或者不執行。
(4)功能豐富:可用於緩存消息。按鍵設置到期時間,到期後自動刪除。
2.Redis比memcached有什麽優勢?
(1)memcached的所有值都是簡單的字符串,redis作為它的替代品,支持更豐富的數據類型。
(2) redis比memcached快很多。
(3) redis可以持久化其數據。
3.Redis常見性能問題及解決方案:
(1) Master最好不要做任何持久化的工作,比如RDB內存快照和AOF日誌文件。
(2)如果數據很重要,從機啟動AOF備份數據,策略設置為每秒同步壹次。
(3)為了主從復制的速度和連接的穩定性,主從應該在同壹個局域網內。
(4)盡量避免在壓力大的主庫上增加從庫。
(5)主從復制不使用圖形結構,而是單向鏈表結構更穩定,即主
這種結構便於解決單點故障問題,實現主從替代。如果主設備掛起,可以立即啟用Slave1作為主設備,其余保持不變。
4.MySQL有2000w數據,redis只有20w數據。如何保證redis中的數據是熱點數據?
相關知識:當redis內存的數據集大小上升到壹定大小時,就會實施數據消除策略。Redis提供了六種數據消除策略:
Voltile-lru:從數據集中選擇最近最少使用的數據(server.db[i])。過期)進行消除。
Volatile-ttl:從數據集中選擇要過期的數據(server.db[i])。過期)進行消除。
Volatile-random:從數據集中選擇數據(server.db[i])。過期)和設置的過期時間。
Allkeys-lru:從數據集中選擇最近最少使用的數據(server.db[i])。dict)進行淘汰。
Allkeys-random:從數據集中選擇數據(server.db[i])。dict)隨意消除。
禁止驅逐數據。
相關推薦:Python視頻教程
5.MemCache和Redis有什麽區別?
1),存儲模式
Memecache將所有數據存儲在內存中,斷電後會掛起,數據不能超過內存大小。
Redis部分存儲在硬盤上,可以保證數據的持久性。
2)、數據支持類型
Memcache對數據類型的支持相對簡單。
Redis有復雜的數據類型。
3)、價值大小
Redis最大可達1GB,而memcache只有1MB。
6.Redis有哪些常見的性能問題?怎麽解決?
1).Master寫內存快照,save命令調度rdbSave函數,會阻塞主線程的工作。當快照很大時,會對性能產生很大影響,會間歇性暫停服務,所以主最好不要寫內存快照。
2).主控AOF持久化,如果不重寫AOF文件,這種持久化方法對性能的影響最小,但是AOF文件會繼續增長,AOF文件過多會影響主控重啟的恢復速度。Master最好不要做任何持久化的工作,包括內存快照和AOF日誌文件,尤其是不要為了持久化而啟用內存快照。如果數據是關鍵的,從站將打開AOF來備份數據,策略是每秒同步壹次。
3).Master調用BGREWRITEAOF重寫AOF文件,重寫時會占用大量CPU和內存資源,導致服務負載高,服務暫停時間短。
4).Redis主從復制的性能問題,為了主從復制的速度和連接的穩定性,主從最好在同壹個局域網內。
7.最適合Redis的場景
Redis最適合所有的數據存儲場景。Redis雖然也提供持久化功能,但實際上是壹個磁盤備份的功能,與傳統的持久化有很大的不同。那麽可能大家都會有疑問。看起來Redis更像是Memcached的加強版,那麽什麽時候用Memcached,什麽時候用Redis呢?
如果單純比較Redis和Memcached的區別,大多數人會得到以下看法:
1.Redis不僅支持簡單的k/v數據,還提供了list、set、zset、hash等數據結構的存儲。
2.Redis支持數據備份,即主從模式的數據備份。
3.Redis支持數據的持久化,可以將內存中的數據保存在磁盤中,重啟時可以再次加載使用。
(1)會話緩存
使用Redis最常用的場景之壹是會話緩存。與其他存儲(如Memcached)相比,使用Redis緩存會話的優勢在於Redis提供了持久性。在維護壹個不嚴格壹致的緩存時,如果用戶的購物車信息全部丟失,大多數人都會不高興。現在,他們還會這樣嗎?
幸運的是,隨著這些年來Redis的改進,很容易發現如何正確使用Redis來緩存會話的文檔。甚至知名的商業平臺Magento也為Redis提供插件。
(2)整頁緩存(FPC)
除了基本的會話令牌,Redis還提供了壹個非常簡單的FPC平臺。回到壹致性問題,即使Redis實例重啟,用戶也不會因為磁盤的持久化而看到頁面加載速度下降,這是很大的進步,類似於PHP本地FPC。
再次以Magento為例,Magento提供了壹個插件來使用Redis作為整頁緩存後端。
另外,Pantheon有壹個非常好的針對WordPress用戶的插件?Wp-redis,這個插件可以幫助妳以最快的速度加載妳訪問過的頁面。
(3)排隊
Reid在內存存儲引擎領域的優勢之壹是提供了列表和集合操作,這使得Reid成為壹個很好的消息隊列平臺。Redis用作隊列的操作類似於本地編程語言(比如Python)對列表的push/pop操作。
如果妳在Google中快速搜索“Redis queues”,妳會立刻發現大量的開源項目。這些項目的目的是使用Redis創建非常好的後端工具,以滿足各種隊列需求。比如芹菜就有使用Redis做經紀人的背景。妳可以從這裏查看。
(4)排行榜/計數器
Redis可以很好地增加或減少內存中的數字。集合和排序集合也讓我們執行這些操作變得非常簡單,Redis正好提供了這兩種數據結構。因此,我們需要從排序後的集合中獲得前10個用戶,我們稱之為“user_scores ”,我們只需按如下方式操作:
當然,這是假設妳根據用戶的分數進行增量排序。如果您想返回用戶及其分數,您需要這樣做:
z range user _ scores 0 10 with scores
Agora Games就是壹個很好的例子,是Ruby實現的。它的排行榜使用Redis存儲數據,妳可以在這裏看到。
(5)發布/訂閱
最後(但肯定不是最不重要的)是Redis的發布/訂閱功能。發布/訂閱的使用場景確實很多。我見過有人在社交網絡連接中使用它,它也可以作為基於發布/訂閱的腳本觸發器,甚至使用Redis的發布/訂閱功能來構建聊天系統!不,是真的。妳可以去看看。