Redis在Windows上的使用


安裝

下載地址:https://github.com/MSOpenTech/redis/releases

Redis 支持 32 位和 64 位。這個需要根據你系統平台的實際情況選擇,這里我們下載 Redis-x64-xxx.zip壓縮包到 C 盤,解壓后,將文件夾重新命名為 redis

解壓后文件:

redis-benchmark.exe   基准測試

redis-check-aof.exe      aof

redischeck-dump.exe    dump

redis-cli.exe                 客戶端

redis-server.exe          服務器

redis.windows.conf     配置文件

注意:《Redis-x64-3.2.100.msi》同樣是redis服務端,可以代替redis-server.exe,安裝后以服務形式啟動,然后用自帶客戶端工具檢測。

1、服務端:

打開一個 cmd 窗口 使用cd命令切換目錄到 C:\redis 運行 redis-server.exe redis.windows.conf 。

如果想方便的話,可以把 redis 的路徑加到系統的環境變量里,這樣就省得再輸路徑了,后面的那個 redis.windows.conf 可以省略,如果省略,會啟用默認的。輸入之后,會顯示如下界面:

Redis 安裝

 默認端口為6379,出現這個界面說明啟動成功。

如果要以服務形式啟動,則

redis-server --service-install redis.windows.conf --loglevel verbose  --service-name 服務名稱

卸載服務命令:redis-server.exe --service-uninstall  

 2、客戶端:

用自帶客戶端redis-cli.exe檢測。雙擊,連接成功。

運行 redis-cli.exe -h 127.0.0.1 -p 6379 。

設置鍵值對 set myKey abc

取出鍵值對 get myKey

Redis 安裝

 3、redis服務密碼:

設置redis的密碼:找到# requirepass foobared 改為 requirepass 我的密碼 ,本機測試可不設置。

默認情況下 requirepass 參數是空的,這就意味着你無需通過密碼驗證就可以連接到 redis 服務。

設置密碼后,客戶端連接 redis 服務就需要密碼驗證,否則無法執行命令。

127.0.0.1:6379>auth  xxx

附:Redis配置文件全解

Redis可視化工具

RedisDesktopManager一款好用的Redis桌面管理工具,支持命令控制台操作,以及常用,查詢key,rename,delete等操作。

下載軟件,請點擊下面鏈接,進入下載頁,選擇對應版本:https://redisdesktop.com/download

操作使用如下圖:

    一、新建連接

輸入redis主機host,端口號port,再起個生動形象,簡明達意的別名。

二、該工具支持根據篩選條件查詢key,add new key,reload等。

三、支持常用redis操作

針對目標key執行rename,delete,addrow,reload value操作。

 四、命令控制台操作

 該工具提供命令控制台:

Redis的主從復制

Redis跟MySQL一樣,擁有非常強大的主從復制功能,而且還支持一個master可以擁有多個slave,而一個slave又可以擁有多個slave,從而形成強大的多級服務器集群架構。

redis的主從復制是異步進行的,它不會影響master的運行,所以不會降低redis的處理性能。主從架構中,可以考慮關閉Master的數據持久化功能,只讓Slave進行持久化,這樣可以提高主服務器的處理性能。同時Slave為只讀模式,這樣可以避免Slave緩存的數據被誤修改。

1、配置

實際生產中,主從架構是在幾個不同服務器上安裝相應的Redis服務。為了測試方便,我這邊的主從備份的配置,都是在我Windows 本機上測試。

在本機window下安裝三個redis實例,其中主服務端口6379,從服務slave1為6380,從服務slave2為6381.

1.當前已安裝並啟動了主服務器,復制兩份主服務的解壓目錄分別命名為Redis-salve1和Redis-salve2.如下圖:

2.配置從服務器

分別配置兩個配置文件(兩個文件需要配置的內容相同,以redis.windows.conf為例):

改端口port為 6380和6381

在Slave 實例 ,# slaveof <masterip> <masterport>   修改為:slaveof 127.0.0.1 6379 配置。

3、分別啟動主從服務    redis-server.exe redis.windows.conf 

【這里指演示 一個從服務器6380】

 

注意,如果設置了密碼的話,從服務器中需要在requirepass  xxxx 后加一行: masterauth xxxx

masterauth  是主從認證密碼,否則主從不能同步

4、安轉為服務啟動:

切換到各自目錄下,輸入命令:redis-server --service-install redis.windows.conf --loglevel verbose  --service-name 服務名稱

5、打開服務,啟動兩個從服務並設置為自動啟動

2、測試

在主服務下,用server-cli輸入設置值,

redis-cli.exe -h 127.0.0.1 -p 6379

在從服務下,獲取。

redis-cli.exe -h 127.0.0.1 -p 6380

 

3、C#中調用

主從架構的Redis的讀寫其實和單台Redis 的讀寫差不多,只是部分配置和讀取區分了主從。

需要注意的是:ServiceStack.Redis 中GetClient()方法,只能拿到Master redis中獲取連接,而拿不到slave 的readonly連接。這樣 slave起到了冗余備份的作用,讀的功能沒有發揮出來,如果並發請求太多的話,則Redis的性能會有影響。

所以,我們需要的寫入和讀取的時候做一個區分,寫入的時候,調用client.GetClient() 來獲取writeHosts的Master的redis 鏈接。讀取,則調用client.GetReadOnlyClient()來獲取的readonlyHost的 Slave的redis鏈接。

   或者可以直接使用client.GetCacheClient() 來獲取一個連接,他會在寫的時候調用GetClient獲取連接,讀的時候調用GetReadOnlyClient獲取連接,這樣可以做到讀寫分離,從而利用redis的主從復制功能。

遇到的問題

1、Redis 服務無法啟動,錯誤 1067 進程意外終止

可以看下服務屬性,如果是網絡服務,修改為本地系統服務即可啟動!

【有可能的情況是 其他應用安裝了此服務導致,eg,docker】

修改為本地服務

2、**System.TimeoutException:** 'Redis Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled connections were in use.

翻譯:Redis超時已過期。 從池中獲取連接之前已經過超時時間, 這可能是因為所有池化連接都在使用中。

可能的原因:

連接沒有及時釋放

eg:var r = pool.GetClient(); 改為

using (var r = pool.GetClient())

{

}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM