虛擬機中centos7安裝使用redis

Redis DeskTop Manage是redis的一款可視化管理工具,那麼如何鏈接到虛擬機(centos7爲例)的redis服務器呢?node

安裝虛擬機redis環境

  • 打開redis官網,點擊download,能夠看到以下下載教程,能夠選擇下載安裝包,也能夠選擇命令下載,我這裏選擇後者

wget http://download.redis.io/releases/redis-6.0.8.tar.gzlinux

  • 解壓

tar xzf redis-6.0.8.tar.gzc++

  • 進入解壓後的目錄開始安裝

cd redis-6.0.8redis

  • 在安裝前須要確認gcc是否安裝gcc -v,由於是用c++寫的,因此make前須要安裝gcc或者升級gcc

yum install gcc-c++算法

  • 前提是已經進入到了解壓後的redis-6.0.8目錄,進行安裝,默認安裝完的目錄是/usr/local/bin

make
image.png
安裝後進入/usr/local/bin目錄查看,這裏的config文件夾是我後面手動建立的mkdir config,用來放置個人redis配置文件
image.pngcentos

  • 把解壓後的redis-6.0.8文件夾內的redis.config文件複製到咱們剛建立的安裝後的目錄下的config文件夾內

image.png

cd /usr/local/bin/
cp /home/parallels/redis-6.0.8/redis.conf congig

redis配置文件

## 在redis中,合法的"尺寸單位",無大小寫區分.
# 1k => 1000 bytes
# 1kb => 1024 bytes
# 1m => 1000000 bytes
# 1mb => 1024*1024 bytes
# 1g => 1000000000 bytes
# 1gb => 1024*1024*1024 bytes
##將redis是否之後臺進程的方式運行,默認爲"no"
**daemonize** no
##若是"daemonize yes",那麼將會把進程id信息寫入文件中.請注意:啓動redis進程的用戶須要具備寫入此目錄的權限.
##pidfile ~/redis.pid
##指令操做:./redis.server --daemonize yes --pidfile ~/redis.pid
##
**pidfile** /var/run/redis.pid
##指定server須要偵聽的客戶端鏈接端口,client與server在此端口進行TCP通訊.
**port** 6379
##若是你的物理服務器有多個網絡接口,請你爲將server socket綁定在指定IP上.
# **bind** 127.0.0.1
# 指定socket鏈接空閒時間(秒).若是connection空閒超時,將會關閉鏈接(TCP socket選項)

##若是爲0,表示永不超時.
**timeout** 0
##指定TCP鏈接是否爲長鏈接,"偵探"信號有server端維護,長鏈接將會額外的增長server端的開支(TCP socket選項)
##默認爲0.表示禁用,非0值表示開啓"長鏈接";"偵探"信號的發送間隔將有linux系統決定

##在屢次"偵探"後,若是對等端(客戶端socket)仍不回覆,將會關閉鏈接,不然鏈接將會被保持開啓.
##client端socket也能夠經過配置keepalive選項,開啓"長鏈接".(單位:秒)
**tcp-keepaliv**e 0
##server日誌級別,合法值:debug,verbose,notice,warning 默認爲notice
##debug適合開發環境,客戶端操做信息都會輸出日誌
##verbose輸出一些相對有用的信息,目前效果不明
##notice適合生產環境
##warning異常信息
**loglevel** notice
##指定redis日誌文件目錄,默認爲stdout
##logfile ~/redislog.log
**logfile** stdout
##設定redis所容許的最大"db簇"的個數,默認爲16個簇.
##客戶端能夠經過"select"指令指定須要使用的"db簇"索引號,默認爲0.
##redis的頂層數據結構中,全部K-V都潛在的包括了"db簇"索引號,任何一個key都將隸屬於一個"db".
##任何對數據的檢索,只會覆蓋指定的"db";例如數據被插入到"db 10"中,那麼在"db 1"中去get,將會返回null.
##對數據歸類到不一樣的db簇中,能夠幫助咱們實現一些特定的需求,好比根據不一樣客戶端鏈接,來指定不一樣的db索引號.
**databases** 16
##snapshot配置,save <seconds> <changes>,用來描述"在多少秒期間至少多少個變動操做"觸發snapshot
##snapshot最終將生成新的dump.rdb文件
##save ""用來禁用snapshot功能
##以下表示12小時內至少一個key變動,觸發snapshot
**save** 43200 1
##若是snapshot過程當中出現錯誤,即數據持久化失敗,是否終止全部的客戶端write請求.
##這個選項很讓人爲難,"yes"表示終止,一旦snapshot故障,那麼此server爲只讀服務;

##若是爲"no",那麼這次snapshot將失敗,但下一次snapshot不會受到影響,不過若是出現故障,數據只能恢復到"最近一個成功點".
**stop-writes-on-bgsave-error** yes
##是否啓用rdb文件壓縮手段,默認爲yes.

##壓縮可能須要額外的cpu開支,不過這可以有效的減少rdb文件的大小,有利於存儲/備份/傳輸/數據恢復.
**rdbcompression** yes
##是否對rdb文件使用CRC64校驗和,默認爲"yes",那麼每一個rdb文件內容的末尾都會追加CRC校驗和.
##對於其餘第三方校驗工具,能夠很方便的檢測文件的完整性
**rdbchecksum** yes
##指定rdb文件的名稱
**dbfilename** dump.rdb
##指定rdb/AOF文件的目錄位置
**dir** ./
# 將當前server作爲slave,併爲其指定master信息.
# **slaveof** <masterip> <masterport>

##當前server的受權密碼

##任何客戶端或者slave與此server交互前,須要提交密碼,其餘server的masterauth配置和此參數值保持一致
##密碼應該足夠複雜(64字節)
# **requirepass** <foobared>

## 以認證的方式鏈接到master.若是master中使用了"密碼保護",slave必須交付正確的受權密碼,才能鏈接成功
## "requirepas"配置項指定了當前server的密碼.

## 此配置項中<master-password>值須要和master機器的"requirepas"保持一致。此參數配置在slave端。
# **masterauth** <master-password>
##若是當前server是slave,那麼當slave與master失去通信時,是否繼續爲客戶端提供服務,"yes"表示繼續,"no"表示終止.
##在"yes"狀況下,slave繼續向客戶端提供只讀服務,有可能此時的數據已通過期.
##在"no"狀況下,任何向此server發送的數據請求服務(包括客戶端和此server的slave)都將被告知"error"
**slave-serve-stale-data** yes
##slave是否爲"只讀",強烈建議爲"yes"
**slave-read-only** yes
##slave向指定的master發送ping消息的時間間隔(秒),默認爲10
# **repl-ping-slave-period** 10
##slave與master通信中,最大空閒時間,默認60秒.超時將致使鏈接關閉.
# **repl-timeout** 60
##slave與master的鏈接,是否禁用TCP nodelay選項.
##"yes"表示禁用,那麼socket通信中數據將會以packet方式發送(packet大小受到socket buffer限制),
##       能夠提升socket通信的效率(tcp交互次數),可是小數據將會被buffer,不會被當即發送,對於接受者可能存在延遲.
##"no"表示開啓tcp nodelay選項,任何數據都會被當即發送,及時性較好,可是效率較低
##建議爲"no"
**repl-disable-tcp-nodelay** no
##適用Sentinel模塊(unstable,M-S集羣管理和監控),須要額外的配置文件支持
##slave的權重值,默認100.當master失效後,Sentinel將會從slave列表中找到權重值最低(>0)的slave,並提高爲master
##若是權重值爲0,表示此slave爲"觀察者",不參與master選舉
**slave-priority** 100
##重命名指令,對於一些與"server"控制有關的指令,可能不但願遠程客戶端(非管理員用戶)連接隨意使用,
##那麼就能夠把這些指令重命名爲"難以閱讀"的其餘字符串.
##例如"slaveof"   "CONFIG"   "BGREWRITEAOF"   "BGREWRITE"   "FLUSHALL"等指令須要被限制訪問

##配置項格式: rename-command <command> <newCommand>
# **rename-command** CONFIG 3ed984507a5dcd722aeade310065ce5d    (方式:MD5('CONFIG^!'))
##所容許的客戶端鏈接數,默認爲10000.
##此值不可能被設置成過大,由於每一個socket鏈接都會以"文件描述符"的方式被系統打開,它受到系統"文件打開個數"的限制
##若是超過此值,server將會拒絕鏈接.
# **maxclients** 10000
##redis-cache所能使用的最大內存(bytes),默認爲0,表示"無限制",最終由OS物理內存大小決定(若是物理內存不足,有可能會使用swap)
##若是此值設置太小(好比32字節),將直接致使server沒法使用.
##此值儘可能不要超過機器的物理內存尺寸,從性能和實施的角度考慮,能夠爲物理內存3/4.
##此配置須要和"maxmemory-policy"配合使用,當redis中內存數據達到maxmemory時,觸發"清除策略".
##若是使用"清除策略"後,仍沒法獲得足夠的內存來存儲新的數據,那麼write操做的客戶端將會收到"error OOM.."信息,此時server只讀.
##在"內存不足"時,任何write操做(好比set,lpush等)都會觸發"清除策略"的執行.
##在實際環境中,建議redis的全部物理機器的硬件配置保持一致(內存一致),同時確保master/slave中"maxmemory""policy"配置一致
# **maxmemory** <bytes>
##"內存不足"時,數據清除策略,默認爲"volatile-lru"
## _volatile-lru_    ->對"過時集合"中的數據採起LRU(近期最少使用)算法.若是對key使用"expire"指令指定了過時時間,那麼此key將會被添加到"過時集合"中.

##每一個Redis對象,都保留一個「最後訪問時間」的屬性,能夠用來判斷此對象空閒的時間,那麼LRU算法就能夠根據此屬性來進行判斷。
## 將已通過期/LRU的數據優先移除.若是"過時集合"中所有移除仍不能知足內存需求,將OOM.
## _allkeys-lru_ ->對全部的數據,採用LRU算法
## _volatile-random_ ->對"過時集合"中的數據採起"隨即選取"算法,並移除選中的K-V,直到"內存足夠"爲止.
## 若是若是"過時集合"中所有移除所有移除仍不能知足,將OOM
## _allkeys-random_ ->對全部的數據,採起"隨即選取"算法,並移除選中的K-V,直到"內存足夠"爲止.
## _volatile-ttl_ ->對"過時集合"中的數據採起TTL算法(最小存活時間),移除即將過時的數據.
## _noeviction_ ->不作任何干擾操做,直接返回OOM異常.
###
##若是數據的過時不會對"應用系統"帶來異常,且系統中write操做比較密集,建議採起"_**allkeys-lru**_"
# **maxmemory-policy** volatile-lru
##是否開啓aof功能,"yes"表示開啓,在開啓狀況下,aof文件同步功能才生效,默認爲"no"
##對master機器,建議使用AOF,對於slave,建議關閉(採用snapshot),
**appendonly** no

##aof中文件同步機制
## _always_ ->任何一個aof記錄都當即進行文件同步(磁盤寫入),安全性最高;若是write請求比較密集,將會形成較高的磁盤IO開支和響應延遲
## _everysec_ ->每秒同步一次,性能和安全性都較高的策略,也是默認值
## _no_ ->不直接同步,讓文件同步交給OS控制,OS將會根據文件流通道中buffer狀況/空閒狀況進行擇機寫入磁盤.安全性和效率與OS設定有關.
**appendfsync** everysec
##在aof rewrite期間,是否對aof新記錄的append暫緩使用文件同步策略,主要考慮磁盤IO開支和請求阻塞時間.
##默認爲no,表示"不暫緩",新的aof記錄仍然會被當即同步
##
**no-appendfsync-on-rewrite** no
##aof rewrite觸發時機,最小文件尺寸
**auto-aof-rewrite-min-size** 64mb

##aof每次rewrite以後,都會記住當前aof文件的大小,當文件增加到必定比例後,繼續進行aof rewrite
**auto-aof-rewrite-percentage** 100
##aof rewrite過程當中,是否採起增量"文件同步"策略,默認爲"yes",並且必須爲yes.
##rewrite過程當中,每32M數據進行一次文件同步,這樣能夠減小"aof大文件"寫入對磁盤的操做次數.
**aof-rewrite-incremental-fsync** yes
##lua腳本運行的最大時間
**lua-time-limit** 5000
##"慢操做日誌"記錄,單位:微秒(百萬分之一秒,1000 * 1000),若是操做時間超過此值,將會把command信息"記錄"起來.(內存,非文件)
##其中"操做時間"不包括網絡IO開支,只包括請求達到server後進行"內存實施"的時間."0"表示記錄所有操做.
**slowlog-log-slower-than** 10000
##"慢操做日誌"保留的最大條數,"記錄"將會被隊列化,若是超過了此長度,舊記錄將會被移除.
##能夠經過"SLOWLOG <subcommand> args"查看慢記錄的信息(SLOWLOG get 10,SLOWLOG reset)
##經過"SLOWLOG get num"指令能夠查看最近num條慢速記錄,其中包括"記錄"操做的時間/指令/K-V等信息
**slowlog-max-len** 128
##經過"TYPE key"指令查看key的數據類型
##經過"OBJECT encoding key"查看key的編碼類型
##hash類型的數據結構在編碼上可使用ziplist和hashtable

##ziplist的特色就是文件存儲(以及內存存儲)所需的空間較小,在內容較小時,性能和hashtable幾乎同樣.所以redis對hash類型默認採起ziplist.

##若是hash中條目的條目個數或者value長度達到閥值,將會被重構爲hashtable.
##ziplist中容許存儲的最大條目個數,建議爲128
**hash-max-ziplist-entries** 512
##ziplist中容許條目value值最大字節數,建議爲1024
**hash-max-ziplist-value** 64
##對於list類型,將會採起ziplist,linkedlist兩種編碼類型.
##同hash.
**list-max-ziplist-entries** 512
**list-max-ziplist-value** 64
##zset爲有序集合,有2中編碼類型:ziplist,skiplist

##由於"排序"將會消耗額外的性能,當zset中數據較多時,將會被重構爲skiplist.
##同hash.
**zset-max-ziplist-entries** 128
**zset-max-ziplist-value** 64
##intset中容許保存的最大條目個數,若是達到閥值,intset將會被重構爲hashtable
**set-max-intset-entries** 512
##是否開啓頂層數據結構的rehash功能,若是內存容許,請開啓.
##rehash可以很大程度上提升K-V存取的效率.
**activerehashing** yes
##客戶端buffer控制

##在客戶端與server進行的交互中,每一個鏈接都會與一個buffer關聯,此buffer用來隊列化亟待被client接受的響應信息.
##若是client不能及時的消費響應信息,那麼buffer將會被不斷積壓而給server帶來內存壓力.若是buffer中積壓的數據達到閥值,將會
##致使鏈接被關閉,buffer被移除."
##buffer控制類型包括:
## _normal_ -> 普通鏈接
## _slave_ ->與slave之間的鏈接
## _pubsub_ ->pub/sub類型鏈接,此類型的鏈接,每每會產生此種問題;由於pub端會密集的發佈消息,可是sub端可能消費不足.
##指令格式:client-output-buffer-limit <class> <hard> <soft> <seconds>",其中hard表示buffer最大值,一旦達到閥值將當即關閉鏈接;
##soft表示"容忍值",它和seconds配合,若是buffer值超過soft且持續時間達到了seconds,也將當即關閉鏈接,若是超過了soft可是在seconds以後
##buffer數據小於了soft,鏈接將會被保留.
# 其中hard和soft都設置爲0,則表示禁用buffer控制.一般hard值大於soft.
**client-output-buffer-limit** normal 0 0 0
**client-output-buffer-limit** slave 256mb 64mb 60
**client-output-buffer-limit** pubsub 32mb 8mb 60
##Redis server執行後臺任務的頻率,默認爲10,此值越大表示redis對"間歇性task"的執行次數越頻繁(次數/秒)
##"間歇性task"包括"過時集合"檢測、關閉"空閒超時"的鏈接等,此值必須大於0且小於500.(參見redis.h源碼)

##此值太小就意味着更多的cpu週期消耗,後臺task被輪詢的次數更頻繁

##此值過大意味着"內存敏感"性較差.
##建議保持默認值
**hz** 10
##include指令用來載入額外的配置文件模板,也能夠在redis server啓動時,手動指定須要include的配置文件.
# **include** /path/to/local.conf
# include /path/to/other.conf

啓動redis

  • 進入安裝後的redis目錄,使用腳本運行

cd /usr/local/bin
image.png安全

  • 啓動

image.png

我這裏在配置文件中配置過了密碼,因此須要auth 密碼認證

redis desktop鏈接

  • 修改配置文件

1)修改protected-mode yes 改成:protected-mode no
2)註釋掉#bin 127.0.0.1
3)將 daemonize no 改爲 yes
4)設置密碼 requirepass 123456bash

  • 檢查虛擬機防火牆配置,須要開放端口,才能訪問到這臺服務器

能夠查看個人上一篇博客服務器

  • 查看虛擬機IP地址ifconfig

image.png

  • 嘗試鏈接

image.png

  • 點擊肯定,鏈接成功
相關文章
相關標籤/搜索