亚洲最大看欧美片,亚洲图揄拍自拍另类图片,欧美精品v国产精品v呦,日本在线精品视频免费

  • 站長資訊網(wǎng)
    最全最豐富的資訊網(wǎng)站

    三十分鐘帶你掌握Redis應如何管理

    本篇文章給大家?guī)砹岁P(guān)于Redis的相關(guān)知識,其中主要介紹了Redis管理工具的相關(guān)問題,應該怎樣去管理Redis數(shù)據(jù)庫,下面就來看一下,希望對大家有幫助。

    三十分鐘帶你掌握Redis應如何管理

    推薦學習:Redis教程

    三十分鐘帶你掌握Redis應如何管理

    本文將帶你熟悉Redis管理方面的知識,包含安全和通信協(xié)議等等內(nèi)容。
    與此同時,還會介與之緊密相關(guān)的第三方管理工具。

    一、安全

    談到安全,我們會聯(lián)想到些什么?
    比如,可信任的環(huán)境會給我們帶來安全感,陌生的環(huán)境則會讓你感到未知的恐懼和孤獨。
    再比如,國產(chǎn)化替代信創(chuàng)項目(安可替代),這里我簡稱為國創(chuàng)項目,就是要達到信任、安全可靠以及自主可控的的目的。

    上面談了這么多(瞎扯了很多,我黔驢盡窮了),只是為了提升我們的安全意識。

    Redis以簡潔為美,創(chuàng)始人曾這么描述過。但同樣在安全層面也沒做過多的工作。

    這里補充一點,上次沒有講到如何優(yōu)雅的關(guān)閉Redis服務。雖然可以殺掉進程來控制,但推薦使用如下方式關(guān)閉:

    $ /opt/redis-6.0.8/src/redis-cli shutdown

    1、可信環(huán)境

    Redis的安全設計是基于“Redis運行在可信任的環(huán)境”這個前提下做出來的。在生產(chǎn)環(huán)境(正式發(fā)布環(huán)境)運行時,不允許外部直接連接到Redis服務器上,此時應該通過應用程序進行中轉(zhuǎn),運行在可信任的環(huán)境中是保證Redis安全至關(guān)重要的方法。

    1.1、bind參數(shù)

    在Redis的默認配置文件redis.conf中,只會接受本地的網(wǎng)絡請求。但通過在配置文件中修改bind參數(shù)更改這一設置,默認的bind設置為:

    三十分鐘帶你掌握Redis應如何管理

    bind:127.0.0.1

    bind參數(shù)同樣可以綁定多個IP地址,IP地址以間隔空格分隔,如下示例:

    三十分鐘帶你掌握Redis應如何管理

    # Examples:# bind 192.168.1.100 10.0.0.1# bind 127.0.0.1 ::1

    1.2、protected-mode參數(shù)

    在Redis3.2的版本中,引入了一個特殊模式:保護模式,來更好地確保Redis運行在可信環(huán)境之中。值得注意的是,保護模式在默認情況下是開啟的。

    參數(shù)設置:

    #開啟保護模式protected-mode yes#禁止保護模式protected-mode no

    三十分鐘帶你掌握Redis應如何管理

    作用

    • 開啟保護模式:接收到來自不在bind綁定的網(wǎng)絡客戶端發(fā)送命令時,如果客戶端沒有設置密碼,Redis會返回錯誤拒絕(DENIED)執(zhí)行該命令。
    • 禁止保護模式:可以在配置中使用protected-mode no禁止。
    • 安全:對于生產(chǎn)環(huán)境需要確保開啟了護盾(防火墻),達到確??尚趴蛻舳诉B接服務器的目的。

    在測試的時候,比如我在Windows下連接我的linux上的Redis服務。為了方便測試,此時臨時關(guān)閉防護墻firewalld,或者采用firewall-cmd命令加入6379默認端口以及Redis服務,關(guān)于防火墻的知識可以參考我之前的文章《firewalld與iptables防火墻工具》:

    #臨時關(guān)閉防火墻systemctl stop firewalld.service

    注意:Redis3.2之前的版本默認會綁定所有網(wǎng)絡接口,任何網(wǎng)絡上的計算機(包含公網(wǎng))都可連接至Redis服務器上。使用舊版的需要注意,最好修改這個參數(shù),或者升級到新版。

    2、數(shù)據(jù)庫密碼

    Redis中提供了數(shù)據(jù)庫密碼功能。最開始我傻傻的以為直接就能連上,豈不是沒有密碼,真不安全。直到后來在工作的實踐中,才發(fā)現(xiàn)原來這貨可以是設置密碼的,只是我以前并不知道而已。值得注意的是:并且在6.0版本中支持多用戶權(quán)限控制功能

    2.1、Redis密碼設置

    在我的上一篇文章也有提到過。Redis數(shù)據(jù)庫密碼是通過參數(shù)requirepass來控制的,默認的6.0.8版本是禁用掉了,需要手動開啟。

    三十分鐘帶你掌握Redis應如何管理

    #默認禁用掉了#requirepass foobared#啟用密碼requirepass 123456

    客戶端每次連接到Redis時都需要發(fā)送密碼,否則Redis會拒絕執(zhí)行客戶端發(fā)來的命令。例如我使用Windows客戶端連接:
    開啟了保護模式,開始提示DENIED。利用bind綁定了信任的ip或者禁止保護模式,最后還會提示密碼為驗證。

    三十分鐘帶你掌握Redis應如何管理

    示例:設置鍵sky,set “sky” “hello redis”

    #設置skyset "sky" "hello redis"

    重啟redis服務(需要讀取到redis.conf文件),會提示驗證密碼,如下圖所示。

    三十分鐘帶你掌握Redis應如何管理

    #獲取skyget sky(error) NOAUTH Authentication required.  #提示需要密碼認證 #認證auth 123456 #再次獲取skyget sky"hello redis"

    雖然數(shù)據(jù)庫設置密碼很方便,但是在復雜的場景中經(jīng)常需要使用更加細粒度的訪問權(quán)限控制。比如:

    • 生產(chǎn)環(huán)境中的應用程序下不應該具有執(zhí)行CONFIG、FLUSHALL涉及到管理或者數(shù)據(jù)安全的命令權(quán)限
    • 多個程序因不同用途共用一個Redis服務時,建議限制某個程序訪問其它程序產(chǎn)生的鍵。

    tips:為此,Redis6.0推出了訪問控制列表(ACL)功能,可以支持多用戶,并且設置每個用戶可以使用的命令和訪問的鍵名規(guī)則等??梢酝ㄟ^配置文件設置,如下:

    • 將ACL配置直接寫在Redis配置文件中
    • 將ACL配置寫在單獨的文件中,然后在Redis配置文件通過aclfile指令引入,例如:
    aclifile /opt/person/conf.acl

    2.1、Redis主從復制注意事項

    在配置Redis復制的時候,如果主庫設置了密碼,需要在從庫的配置文件中通過masterauth <master-password>參數(shù)設置主庫的密碼,使從庫連接主庫時自動使用auth命令驗證,配置如下。

    三十分鐘帶你掌握Redis應如何管理

    masterauth <master-password>

    3、命名命令

    Redis支持在配置文件中將命令重命名,例如將FLUSHALL命令重命名為一個比較復雜的名字,達到保證只有自己的應用可以使用該命令。當然,這個功能可以看做在6.0版本之前沒有ACL,作為對命令安全性的一個補充。如下配置:

    rename-command FLUSHALL redisabcdsky1r2d3is

    如果希望直接一點,直接禁用,通過重命名為空字符

    rename-command FLUSHALL ""

    再次強調(diào):安全起見,無論設置密碼還是重命名命令,都應遵循保證配置文件的安全性,否則就無意義了。

    二、通信協(xié)議

    之前有了解到Redis的主從復制以及持久化AOF文件的格式,通過了解Redis通信協(xié)議能更好的理解Redis。

    當然Redis支持兩種通信協(xié)議。如下:

    • 一種是二進制安全的統(tǒng)一請求協(xié)議(unified request protocol)
    • 第二種是比較直觀的便于在telnet程序中輸入的簡單協(xié)議

    1、簡單協(xié)議

    簡單協(xié)議適合在telnet程序中和Redis通信。如下是通過telnet測試與Redis通信:

    linux下Redhat系列安裝telnet通過yum命令

    yum -y install telnet

    Windows在啟用或關(guān)閉Windows功能中啟用telnet

    [root@dywangk redis-6.0.8]# telnet 127.0.0.1 6379Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'.auth 123456 #同樣需要驗證密碼,之前設置了密碼+OKset foo bar  +OK get foo$3bar#輸入quit退出telnet

    1.1、錯誤回復

    錯誤回復(error reply)以 – 開頭并在后面跟著錯誤信息:

    -ERR unknown command ``, with args beginning with:

    1.2、狀態(tài)回復

    狀態(tài)回復(status reply)以+開頭

    +OK

    1.3、整數(shù)回復

    整數(shù)回復(integer reply)以:開頭

    :3

    1.4、字符串回復

    字符串(bulk reply)回復以$開頭

    $3

    2、統(tǒng)一請求協(xié)議

    統(tǒng)一請求協(xié)議是從Redis1.2開始加入的,其命令格式與多行字符串回復格式類似。也以telnet為例演示:

    [root@dywangk redis-6.0.8]# telnet 127.0.0.1 6379Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'.auth 123456 #同樣需要驗證密碼,之前設置了密碼+OK *3$3set$3foo$3bar   +OK#輸入quit退出telnet

    同樣,在發(fā)送命令的時候指定了后面字符串的長度,所以每個命令的每個參數(shù)都可以包含二進制的字符。

    Redis的AOF文件和主從復制時數(shù)據(jù)庫發(fā)送的內(nèi)容使用了統(tǒng)一請求協(xié)議。如果簡單的使用telnet與Redis進行通信,使用簡單協(xié)議即可。

    三、管理工具

    1、redis-cli

    看到redis-cli大家肯定不陌生,是的我們學習測試快速融入都是使用的redis-cli命令進行的,Redis自帶的客戶端。Redis可以執(zhí)行大部分的Redis命令,包括查看數(shù)據(jù)庫信息的info命令、更改數(shù)據(jù)庫設置的config命令和強制進行RDB快照的save命令。簡單介紹幾個管理Redis常用的命令。

    1.1、耗時命令日志

    當一條命令執(zhí)行時間超過限制時,Redis會將該命令的執(zhí)行時間等信息加入耗時命令日志(slow log)以供開發(fā)者查看。通過配置文件的slowlog-log-slower-than 10000參數(shù)設置限制,注意單位是微秒,可以看到默認為10000。通過slowlog-max-len 128限制記錄的條數(shù)。

    獲取當前耗時命令日志

    slowlog get

    每條日志由以下4個部分組成

    • 唯一日志ID
    • 執(zhí)行的Unix時間
    • 耗時時間,單位為微秒
    • 命令及其參數(shù)

    測試時,將slowlog-log-slower-than 0 參數(shù)設置為0

    slowlog-log-slower-than 0

    1.2、命令監(jiān)控

    Redis提供了monitor來監(jiān)控Redis執(zhí)行的所有命令,redis-cli也支持。例如:

    monitor

    注意:一般用于調(diào)試和糾錯使用。

    2、Medis

    獲取地址:https://getmedis.com/

    三十分鐘帶你掌握Redis應如何管理

    當Redis中的鍵比較多時,此時使用redis-cli管理略顯不足。Medis是一款macOS下的可視化Redis管理工具。通過界面即可實現(xiàn)管理Redis。

    3、phpRedisAdmin

    看到phpRedisAdmin,大家也許會聯(lián)想到以網(wǎng)頁形式管理MySQL的phpMyAdmin管理工具。

    下載地址:https://github.com/erikdubbelboer/phpRedisAdmin

    關(guān)于工具的使用,可以參考github說明,這里不做過多介紹。

    建議:github那訪問速度大家都懂的,建議導入到gitee作為鏡像倉庫使用,每隔一段時間同步。

    4、Rdbtools

    一款采用Python語言開發(fā)的Redis的快照文件解析器,它可以根據(jù)快照文件導出json數(shù)據(jù)文件、分析Redis中每個鍵的占用空間情況。

    下載地址:https://github.com/sripathikrishnan/redis-rdb-tools

    關(guān)于工具的使用,可以參考github說明,這里不做過多介紹。

    5、命令參考

    最后介紹一個Redis命令大全參考網(wǎng)站,源自于Redis官網(wǎng),鏈接如下:

    https://redis.io/commands

    推薦學習:Redis學習教程

    贊(0)
    分享到: 更多 (0)
    網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號