分布式緩存Redis版兼容哪些Redis命令和操作?
分布式緩存服務Redis版兼容支持絕大部分開源Redis的命令和操作,僅禁用了個別命令。具體請參考開源命令兼容性。
如何查詢Redis實例的原生版本
進入實例管理控制臺的命令窗口頁面你,執行INFO命令即可查詢原生版本號。 查看輸出結果中的“redis_version”。
注意僅Redis 6.0/7.0?支持查看原生版本
Redis實例能否修改VPC和子網?
不允許修改,若需要修改請重新創建實例。
如何連接實例使用?
任何兼容Redis協議的客戶端都可以連接訪問。
連接密碼是什么?
默認連接必須設置密碼。開通時若未創建實例密碼默認會隨機初始化密碼,使用時需要在實例詳情進行密碼重置。標準版和集群版auth參數不一致,集群版為:實例名稱#實例密碼;標準版為:實例密碼。
Jedis連接池報錯如何處理?
redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the pool
測試網絡、檢查連接數是否超限制、檢查JedisPool連接池代碼、檢查客戶端TIME_WAIT是否過多。
為什么可用內存小于申請規格?
由于系統開銷會占用部分資源,持久化也需要一部分資源,所以實例創建后,緩存實例實際可用內存小于申請規格。
目前支持的引擎版本有哪些?
目前提供redis 2.8/4.0/5.0的優化版本,建議選擇5.0。
客戶端最大連接數最大多少?
單機主備或者每個代理層接入機默認最大連接數是10000;連接數不是越多越好,建議控制連接數不超過3000。
備份策略有哪些?
支持手動和周期自動備份;最大提供3份備份副本,超出可選擇刪除再次進行備份。
過期逐出策略是怎樣的?
主動過期,系統周期性的檢測,發現已過期的key時,會將其刪除。惰性刪除,當個key被訪問時,如果已經過期,則將其刪除。
Redis實例支持的單個Key和Value數據大小是否有限制?
數據大小:單條記錄(key+value)建議大小不超過32K;
內存使用率多少比較合適?
內存使用: redis實例內存使用率最好不要超過80%,建議為60-70%;預留20%應對突發流量和實例運維。
redis實例使用慢日志查詢?
進入redis集群管理,點開慢日志菜單,選擇對應redis節點查詢是否有慢查詢,redis默認服務側耗時超過10ms為慢日志。具體操作請參考慢日志查詢
如何在控制臺頁面操作redis實例?
點擊“命令窗口”標簽頁,可進入命令窗口頁面。選擇DB,可以在命令行窗口執行redis命令,操作對應DB中的數據。
通過命令設置redis密碼,為何重啟后失效?
使用命令設置的密碼只臨時生效,重啟后失效。
需要將修改配置文件才能永久生效,可以修改密碼后再執行config rewrite 將當前所使用的配置記錄到 redis配置文件中。
redis的db數量有多少?
每個實例支持256個DB,范圍[0,256]
如何進行服務質量檢查?
通過監控平臺對接入機節點和redis節點的可用性進行檢查,通過返回碼判斷服務的可用性。接入機可用性檢查則需要選擇客戶端監控,監控類型為接入機,通過查詢統計值分析其可用性。redis健康檢查要選擇接入機監控,查詢統計值,分析redis可用性。
如何進行性能狀態檢查?
通過查詢接入機、redis、客戶端各節點的指標進行性能分析,根據請求數量、平均耗時、最大耗時、報文大小的分布情況檢查
Redis實例能否修改VPC和子網?
實例的VPC和子網,創建后不允許修改。
如何確認實例是單DB還是多DB?
單機、主備、集群單機、集群主備實例類型都為多DB(256個,DB編號為0-255)。
Redis Cluster集群實例不支持多DB,只有一個DB。
按需實例轉包周期需要停服么?
按需實例轉包周期不中斷業務,僅計費方案變更,不會涉及實例資源的重啟操作。
按需實例轉包周期失敗是什么原因?
只有運行中的實例才可以執行按需轉包周期的操作,請檢查實例狀態
為什么實例實際可用內存比申請規格小而且已使用內存不為0?
由于系統開銷會占用部分資源,實例的持久化也需要一部分資源,所以實例創建后緩存實例實際可用內存小于申請規格。除了用戶存儲數據外,Redis-server內部的buffer以及內部數據結構會占用一部分內存。所以緩存實例創建后,實例已使用內存量不為0。
重啟實例后緩存數據會保留嗎?
實例默認支持AOF持久化,并且AOF持久化功能不支持關閉,因此實例重啟后原有的數據會保留。
Redis中有哪些可以替代KEYS命令這樣的慢操作,實現對鍵值對的模糊查詢呢?
當我們利用KEYS命令查詢時,如果數據過大,KEYS操作會阻塞后續的讀寫請求。Redis提供了SCAN,以及針對集合類型的SSCAN、HSCAN等可以根據設定的數量參數,返回固定指定的數量,可以避免像KEYS命令一樣同時返回所有匹配的數據,不會導致Redis變慢。
如何查找Redis的bigkey?
在應用中,我們需要盡量避免使用bigkey,因為Redis主線程在操作bigkey時,會被阻塞,但是如果業務中我們使用了bigkey,那么應該如何排查呢?Redis可以執行redis-cli命令時帶上--bigkeys選項(redis-cli -h -p -a --bigkeys。),執行該命令后,它會對整個數據庫中的鍵值大小進行統計分析,會輸出每種數據類型中最大的bigkey信息,比如String類型,會輸出最大的字節長度的bigKey,而對于集合類型來說,會輸出最多元素個數的bigkey。但需要注意的是:對于集合類型的bigkey來說,元素最多的集合,不一定是占用內存最大的集合。
此外也可以通過redis-rdb-tools(Redis RDB快照文件分析的開源工具)來分析實例中所有key的內存占用情況。
如何查找Redis的hotkey?
Redis 4.0版本起,redis-cli客戶端提供了--hotkeys參數(redis-cli -h -p -a --hotkeys)來查詢分析當前運行期間的熱key。注:使用--hotkeys參數的前提是需要redis實例使用LFU內存淘汰策略。
如何判斷是否存在內存碎片?
Redis是內存數據庫,內存利用率的高低關系到redis運行效率,為了能監控到實時的內存使用情況,redis提供了info memory命令,可以查詢內存的使用情況,其中mem_fragmentation_ratio指標展示的就是內存碎片率,這個內存碎片率是used_memory_rss和used_memory相除的結果,其中一個用戶實際使用的內存大小,另一個是已經分配的內存大小,例如一個key實際使用了6個字節的內存空間,但是redis內存機制是分配了8字節的大小。控制臺在指標監控中有展示內存碎片率指標,可以支持查詢歷史內存碎片率。
Redis實例每個DB空間大小和選擇DB?
每個分布式緩存Redis版有256個DB,從DB0到DB255。每個DB沒有單獨的內存占用量限制,DB可以使用的內存容量受Redis實例的總內存限制。
您可以使用SELECT命令在不同DB之間切換。例如,要切換到DB108,可以使用如下命令
select 108
為什么實例實際可用內存比申請規格小而且已使用內存不為0?
系統開銷會占用部分資源,主備實例的持久化也需要一部分資源,因此實際可使用內存會比申請規格略小。
實例無法刪除是什么原因?
當實例處于運行中時才能執行刪除操作。
是否支持跨可用區部署?
標準版主備與集群版主備支持多可用區部署,在創建實例時可選擇跨可用區部署。
實例是否支持變更可用區?
不支持變更可用區,如需要變更,請重新創建實例
Redis實例是否支持讀寫分離?
目前暫不支持讀寫分離
Redis的安全加固方面有哪些建議?
訪問控制:在 Redis 配置中啟用密碼認證,設置一個強密碼來限制對 Redis 實例的訪問。可以在 Redis 配置文件的 requirepass 參數中設置密碼,并使用 AUTH 命令在客戶端進行身份驗證。此外,確保只允許受信任的客戶端訪問 Redis,通過配置 bind 參數限制可連接的 IP 地址。
此外將 Redis 實例放置在安全的網絡環境中,例如通過防火墻或安全組設置適當的網絡策略,限制對 Redis 端口的訪問。只允許需要訪問 Redis 的受信任主機或網絡訪問 Redis 實例。
如何估算Redis內存占用量?
Redis內存占用量可參考Redis官方網站進行估算
實例狀態顯示"已凍結”是什么原因?
若包周期實例到期后未進行續費,則實例會轉為“已凍結”狀態,并限制使用。請及時續費以免數據丟失。
實例的連接地址是什么?
實例的連接地址為統一 的虛擬vip+固定端口,實例經過擴容等變更后,虛IP會自動漂移到新的虛機上,對應用保持地址不變,無需修改應用代碼配置。可通過控制臺查看鏈接地址,具體請參考查看連接地址
實例的到期時間怎么理解?
包周期的實例到期時間為自然月的整數,按需的實例無具體到期時間。
實例類型有哪些?
目前實例類型有單機、主備、集群單機、集群主備四種類型
實例的維護時間是什么?
實例的維護時間,您可以根據業務規律,將可維護時間段設置在業務低峰期,以免維護過程中可能對業務造成的影響
實例的應用數據管理介紹?
實例的應用數據管理菜單進入后,可針對不同分組db的數據進行分頁展示,頁面可查詢該分組總的key數量,而且支持單個key的頁面增刪改查
實例的可使用內存有多少?
由于系統資源占用部分開銷,redis實例可使用的內存會比規格內存小一點,建議redis內存使用到80%左右開始考慮擴容,且應用建議對key設置失效時間,避免無效內存占用。
實例管理中實例的狀態有哪些?
實例的狀態包含開通中、運行中、即將過期、已過期等
為什么有的實例列表中接入機集群為空?
單機、主備類型實例,應用通過vip直連redis節點,無中間代理層,所以實例列表中接入機集群為空
實例名稱和實例ID的關系?
實例ID為redis實例的唯一標識,實例名稱為實例的別名,在新的版本里可以修改實例名,但不能修改實例ID
不同計費類型的實例操作退訂后效果一樣嗎?
包周期的實例退訂時,實例會被凍結訪問,默認超過15天后才會自動釋放實例數據。如果實例為按需計費類型,用戶操作退訂后則立馬釋放實例數據。
單機和集群的槽段如何分布?
單機主備的槽段范圍為0~16383 集群的槽段為1638平均分布在各個redis分片
使用redis_exporter出錯如何處理?
您可執行redis_exporter命令,根據返回的錯誤提示進行問題排查。
Redis有沒有后臺管理軟件?
目前暫不支持。您可通過控制臺的監控能力查看相關性能數據,具體請參考產品監控
訪問Redis報OOM錯誤提示如何處理?
若訪問Redis時提示Error in execution; nested exception is io.lettuce.core.RedisCommandExecutionException: OOM command not allowed when used memory > 'maxmemory',即說明目前Redis實例內存已使用滿了,請在資源監控中查看內存使用率。
讀取redis數據報超時錯誤如何處理?
- 檢查客戶端超時時間是否設置得過小
- 檢查執行操作的key值大小,若key值太大也會造成超時報錯,建議key值不要超過10KB。
- 根據報錯提示調整PingConnectionInterval參數
是否支持外部擴展模塊、插件或者Module?
暫不支持。
hashtag是什么?有什么作用?
Redis 的 HashTag 是一種在 Redis 鍵中使用的特殊標記機制,用于控制相同部分哈希槽(slot)的鍵被存儲在同一個 Redis 節點上。HashTag 可以確保相關聯的鍵被映射到相同的哈希槽上,這在某些情況下可以提高 Redis 集群的性能和可用性。在 Redis 集群中進行哈希槽分配時,帶有相同 HashTag 的鍵將被分配到相同的槽上,從而確保它們被存儲在同一個 Redis 節點上。這有助于保持相關聯的數據在物理上的近距離存儲,提高了數據訪問的效率。
實例是否支持自定義或修改端口?
暫不支持,您可在控制臺實例信息中查看端口,具體請參考查看實例信息
實例是否支持修改訪問地址?
暫不支持,您可以在控制臺查看訪問地址,具體請參考查看連接地址
集群實例啟動時間過長是什么原因?
可能是由于在啟動過程中就進行大量數據的持續寫入,這會影響到啟動過程中的狀態、數據同步進程,因此建議您在集群實例完成啟動后再進行業務數據寫入。
如何查看Redis集群每個節點的IP地址?
您可使用CLUSTER NODES 命令,這個命令會返回 Redis 集群中所有節點的信息,包括節點的 ID、IP 地址、端口號等。