Redis 在目前的科技社群裡是非常熱門的。從來自 Antirez 一個小小的個人專案到成為記憶體資料儲存產業的標準,Redis已經走過了很長的一段路。隨之而來的一系列最佳實踐,使得大多數人可以正確地使用 Redis。
下面我們將探討正確使用 Redis 的10個經驗。
1、停止使用 KEYS *
Okay,以挑戰這個指令開始這篇文章,或許不是一個好的方式,但其確實可能是最重要的一點。很多時候當我們專注於一個redis實例的統計數據,我們會快速地輸入”KEYS *”命令,這樣key的資訊會很明顯地展示出來。平心而論,從程式化的角度出發往往傾向於寫出下面這樣的偽代碼:
for key in'keys *': doAllTheThings()
但是當你有1300萬個key時,執行速度將會變慢。因為KEYS指令的時間複雜度是O(n),其中n是要回傳的keys的個數,這樣這個指令的複雜度就取決於資料庫的大小了。並且在這個操作執行期間,其它任何命令在你的實例中都無法執行。
作為一個替代命令,看看 SCAN 吧,其允許你以更友善的方式來執行… SCAN 透過增量迭代的方式來掃描資料庫。這項操作是基於遊標的迭代器來完成的,因此只要你覺得合適,你可以隨時停止或繼續。
2、找出拖慢 Redis 的罪魁禍首
由於 Redis 沒有非常詳細的日誌,要想知道在 Redis 實例內部都做了些什麼是非常困難的。幸運的是Redis 提供了一個下面這樣的命令統計工具:
127.0.0.1:6379> INFO commandstats # Commandstats cmdstat_get:calls=78,usec=608,usec_per_call=7.79 cmdstat_setex:calls=5,usec=71,usec_per_call=14.20 cmdstat_keys:calls=2,usec=42,usec_per_call=21.00 cmdstat_info:calls=10,usec=1931,usec_per_call=193.10
透過這個工具可以查看所有命令統計的快照,例如命令執行了多少次,執行命令所耗費的毫秒數(每個命令的總時間和平均時間) 只需要簡單地執行CONFIG RESETSTAT 指令就可以重置,這樣你就可以得到一個全新的統計結果。
3、将 Redis-Benchmark 结果作为参考,而不要一概而论
Redis 之父 Salvatore 就说过:“通过执行GET/SET命令来测试Redis就像在雨天检测法拉利的雨刷清洁镜子的效果”。很多时候人们跑到我这里,他们想知道为什么自己的Redis-Benchmark统计的结果低于最优结果 。但我们必须要把各种不同的真实情况考虑进来,例如:
可能受到哪些客户端运行环境的限制? 是同一个版本号吗? 测试环境中的表现与应用将要运行的环境是否一致?
Redis-Benchmark的测试结果提供了一个保证你的 Redis-Server 不会运行在非正常状态下的基准点,但是你永远不要把它作为一个真实的“压力测试”。压力测试需要反应出应用的运行方式,并且需要一个尽可能的和生产相似的环境。
4、Hashes 是你的最佳选择
以一种优雅的方式引入 hashes 吧。hashes 将会带给你一种前所未有的体验。之前我曾看到过许多类似于下面这样的key结构:
foo:first_name foo:last_name foo:address
上面的例子中,foo 可能是一个用户的用户名,其中的每一项都是一个单独的 key。这就增加了 犯错的空间,和一些不必要的 key。使用 hash 代替吧,你会惊奇地发现竟然只需要一个 key :
127.0.0.1:6379> HSET foo first_name 'Joe' (integer) 1 127.0.0.1:6379> HSET foo last_name 'Engel' (integer) 1 127.0.0.1:6379> HSET foo address '1 Fanatical Pl' (integer) 1 127.0.0.1:6379> HGETALL foo 1) 'first_name' 2) 'Joe' 3) 'last_name' 4) 'Engel' 5) 'address' 6) '1 Fanatical Pl' 127.0.0.1:6379> HGET foo first_name 'Joe'
5、设置 key 值的存活时间
无论什么时候,只要有可能就利用key超时的优势。一个很好的例子就是储存一些诸如临时认证key之类的东西。当你去查找一个授权key时——以OAUTH为例——通常会得到一个超时时间。这样在设置key的时候,设成同样的超时时间,Redis就会自动为你清除!而不再需要使用KEYS *
来遍历所有的key了,怎么样很方便吧?
6、 選擇適當的回收策略
既然談到了清除key這個話題,那我們就來聊聊回收策略。當 Redis 的實例空間被填滿了之後,將會嘗試回收一部分key。根據你的使用方式,我強烈建議使用 volatile-lru 策略——前提是你對key已經設定了逾時。但如果你運行的是一些類似 cache 的東西,並且沒有對 key 設定超時機制,可以考慮使用 allkeys-lru 回收機制。我的建議是先在這裡查看可行的方案。
7、如果你的資料很重要,請使用Try/Except
如果必須確保關鍵性的資料可以放入到Redis 的實例中,我強烈建議將其放入try/except 區塊中。幾乎所有的Redis客戶端採用的都是「發送即忘」策略,因此經常需要考慮一個 key 是否真正被放到 Redis 資料庫中了。至於將 try/expect 放到 Redis 指令中的複雜性並不是本文要講的,你只需要知道這樣做可以確保重要的資料放到該放的地方就可以了。
8、不要耗盡一個實例
無論什麼時候,只要有可能就分散多redis實例的工作量。從3.0.0版本開始,Redis就支援叢集了。 Redis叢集允許你基於key範圍分離出部分包含主/從模式的key。完整的集群背後的“魔法”可以在這裡找到。但如果你在找教程,那這裡是一個再適合不過的地方了。如果不能選擇集群,考慮一下命名空間吧,然後將你的key分散到多個實例之中。關於怎樣分配數據,在redis.io網站上有這篇精彩的評論。
9、核心越多越好嗎? !
當然是錯的。 Redis 是一個單執行緒進程,即使啟用了持久化最多也只會消耗兩個核心。除非你打算在一台主機上執行多個實例-希望只會在開發測試的環境下! ——否則的話對於一個 Redis 實例是不需要2個以上核心的。
10、高可用
到目前為止 Redis Sentinel 已經經過了很全面的測試,許多用戶已經將其應用到了生產環境中(包括 ObjectRocket )。如果你的應用程式嚴重依賴 Redis ,那就需要想出一個高可用方案來保證其不會斷線。當然,如果不想自己管理這些東西,ObjectRocket 提供了一個高可用平台,並提供7×24小時的技術支持,有意向的話可以考慮一下。
以上是Linux維運需要知道的Redis經驗的詳細內容。更多資訊請關注PHP中文網其他相關文章!

進入Linux恢復模式的步驟是:1.重啟系統並按特定鍵進入GRUB菜單;2.選擇帶有(recoverymode)的選項;3.在恢復模式菜單中選擇操作,如fsck或root。恢復模式允許你以單用戶模式啟動系統,進行文件系統檢查和修復、編輯配置文件等操作,幫助解決系統問題。

Linux的核心組件包括內核、文件系統、Shell和常用工具。 1.內核管理硬件資源並提供基本服務。 2.文件系統組織和存儲數據。 3.Shell是用戶與系統交互的接口。 4.常用工具幫助完成日常任務。

Linux的基本結構包括內核、文件系統和Shell。 1)內核管理硬件資源,使用uname-r查看版本。 2)EXT4文件系統支持大文件和日誌,使用mkfs.ext4創建。 3)Shell如Bash提供命令行交互,使用ls-l列出文件。

Linux系統管理和維護的關鍵步驟包括:1)掌握基礎知識,如文件系統結構和用戶管理;2)進行系統監控與資源管理,使用top、htop等工具;3)利用系統日誌進行故障排查,借助journalctl等工具;4)編寫自動化腳本和任務調度,使用cron工具;5)實施安全管理與防護,通過iptables配置防火牆;6)進行性能優化與最佳實踐,調整內核參數和養成良好習慣。

Linux維護模式通過在啟動時添加init=/bin/bash或single參數進入。 1.進入維護模式:編輯GRUB菜單,添加啟動參數。 2.重新掛載文件系統為讀寫模式:mount-oremount,rw/。 3.修復文件系統:使用fsck命令,如fsck/dev/sda1。4.備份數據並謹慎操作,避免數據丟失。

本文探討如何在Debian系統上提升Hadoop數據處理效率。優化策略涵蓋硬件升級、操作系統參數調整、Hadoop配置修改以及高效算法和工具的運用。一、硬件資源強化確保所有節點硬件配置一致,尤其關注CPU、內存和網絡設備性能。選擇高性能硬件組件對於提升整體處理速度至關重要。二、操作系統調優文件描述符和網絡連接數:修改/etc/security/limits.conf文件,增加系統允許同時打開的文件描述符和網絡連接數上限。 JVM參數調整:在hadoop-env.sh文件中調整

本指南將指導您學習如何在Debian系統中使用Syslog。 Syslog是Linux系統中用於記錄系統和應用程序日誌消息的關鍵服務,它幫助管理員監控和分析系統活動,從而快速識別並解決問題。一、Syslog基礎知識Syslog的核心功能包括:集中收集和管理日誌消息;支持多種日誌輸出格式和目標位置(例如文件或網絡);提供實時日誌查看和過濾功能。二、安裝和配置Syslog(使用Rsyslog)Debian系統默認使用Rsyslog。您可以通過以下命令安裝:sudoaptupdatesud

選擇適合Debian系統的Hadoop版本,需要綜合考慮以下幾個關鍵因素:一、穩定性與長期支持:對於追求穩定性和安全性的用戶,建議選擇Debian穩定版,例如Debian11(Bullseye)。該版本經過充分測試,擁有長達五年的支持週期,能夠確保系統穩定運行。二、軟件包更新速度:如果您需要使用最新的Hadoop功能和特性,則可以考慮Debian的不穩定版(Sid)。但需注意,不穩定版可能存在兼容性問題和穩定性風險。三、社區支持與資源:Debian擁有龐大的社區支持,可以提供豐富的文檔和


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

記事本++7.3.1
好用且免費的程式碼編輯器

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

WebStorm Mac版
好用的JavaScript開發工具

SublimeText3 Linux新版
SublimeText3 Linux最新版