1. 程式人生 > WINDOWS開發 >Redis在windows下的安裝

Redis在windows下的安裝

技術分享圖片

Redis 簡介

REmote DIctionary Server(Redis) 是一個由Salvatore Sanfilippo寫的key-value儲存系統。

Redis是一個開源的使用ANSI C語言編寫、遵守BSD協議、支援網路、可基於記憶體亦可持久化的日誌型、,是一個高效能的key-value資料庫,並提供多種語言的API。

它通常被稱為資料結構伺服器,因為值(value)可以是 字串(String),雜湊(Hash),列表(list),集合(sets) 和 有序集合(sorted sets)等型別。

Redis 與其他 key - value 快取產品有以下三個特點:

  • Redis支援資料的持久化,可以將記憶體中的資料儲存在磁碟中,重啟的時候可以再次載入進行使用。
  • Redis不僅僅支援簡單的key-value型別的資料,同時還提供list,set,zset,hash等資料結構的儲存。
  • Redis支援資料的備份,即master-slave模式的資料備份。

Redis 優勢

  • 效能極高– Redis能讀的速度是110000次/s,寫的速度是81000次/s 。
  • 豐富的資料型別 – Redis支援二進位制案例的 Strings,Lists,Hashes,Sets 及 Ordered Sets 資料型別操作。
  • 原子 – Redis的所有操作都是原子性的,意思就是要麼成功執行要麼失敗完全不執行。單個操作是原子性的。多個操作也支援事務,即原子性,通過MULTI和EXEC指令包起來。
  • 豐富的特性– Redis還支援 publish/subscribe,通知,key 過期等等特性。

Redis與其他key-value儲存有什麼不同?

  • Redis有著更為複雜的資料結構並且提供對他們的原子性操作,這是一個不同於其他資料庫的進化路徑。Redis的資料型別都是基於基本資料結構的同時對程式設計師透明,無需進行額外的抽象。

  • Redis執行在記憶體中但是可以持久化到磁碟,所以在對不同資料集進行高速讀寫時需要權衡記憶體,因為資料量不能大於硬體記憶體。在記憶體資料庫方面的另一個優點是,相比在磁碟上相同的複雜的資料結構,在記憶體中操作起來非常簡單,這樣Redis可以做很多內部複雜性很強的事情。同時,在磁碟格式方面他們是緊湊的以追加的方式產生的,因為他們並不需要進行隨機訪問。

參考:https://blog.csdn.net/yangwenxue1989/article/details/88884668

   https://blog.csdn.net/xoofly/article/details/88832683

一、目標

在windows環境下安裝配置redis資料庫。

二、環境

windows10 64bit、redis64-3.0.501 (for windows64bit)

三、軟體下載

1.Redis資料庫下載。https://github.com/ServiceStack/redis-windows 下載的速度可能比較慢

技術分享圖片

點右側的Clone or download,然後在彈出的視窗點Download ZIP。下載就行了。

2.點選release,可選擇不同版本進行下載。

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

四、安裝redis資料庫

下載好是個zip壓縮包,指定路徑進行解壓,,本文使用D:\JAVA\redis64-3.0.501 路徑。

解壓內容如下:

技術分享圖片

1. 臨時服務安裝

開啟一個cmd視窗 使用 cd 命令切換目錄到D:\JAVA\redis64-3.0.501路徑,執行:

redis-server.exe redis.windows.conf

顯示如下介面,則服務端啟動成功。

技術分享圖片

備註:通過以上面命令,會建立Redis臨時服務,不會在window Service列表出現Redis服務名稱和狀態,此視窗關閉,服務會自動關閉。可以裝一個Redis Management測試一下,當關閉這個臨時服務是資料庫連不上的。

現在進行客戶端呼叫,因為只有臨時服務,所以不要關閉上面視窗,另外開啟一個cmd視窗 使用 cd 命令切換目錄到D:\JAVA\redis64-3.0.501路徑,

執行:

redis-cli.exe

客戶端啟動完成。

敲入Set age 34 返回OK,表示寫入記憶體中;我們再敲get age,會返回一個Value值34,如下圖:

技術分享圖片

2.預設服務安裝我們不可能每次要用Redis都去開一下臨時服務,可不可以跟其它服務一樣能夠開機自啟?當然是可以得,但是有點區別,後續會講。進入Redis安裝包檔案下,敲入命令註冊服務:

redis-server.exe --service-install redis.windows.conf --loglevel verbose

注:(須關閉臨時服務,否則安裝不上)

根據英文提示顯然服務已經安裝了,在window Service列表中能看到,但是沒啟動,也無法手動啟動,只有敲命令啟動/暫停/解除安裝服務:

redis-server.exe --service-start
redis-server.exe --service-stop
redis-server.exe --service-uninstall

技術分享圖片

(類似如上插圖)

3.自定義服務安裝 將服務重新命名。進入Redis安裝包檔案下,註冊服務:

redis-server.exe --service-install redis.windows.conf --Service-name RedisServer1 --loglevel verbose

技術分享圖片

備註:通過以上面命令,會在window Service列表出現"redisserver1"服務,但此服務不是啟動狀態,需要調下面命令啟動服務。

與預設安裝一樣,唯一不同的就是在相應安裝服務、啟動、關閉、解除安裝服務時需要加上自定義Redis服務名:

redis-server.exe --service-start --Service-name RedisServer1

redis-server.exe --service-stop --Service-name RedisServer1 

redis-server.exe --service-uninstall --Service-name RedisServer1

通過命令列解除安裝自定義服務後,電腦重啟一下,解除安裝服務會全部完成

技術分享圖片

4.Redis主從服務安裝主從服務可以實現負載均衡,其實就是把上面Redis安裝檔案包,拷貝到相應目錄,修改主、從伺服器配置檔案中IP、Port,同時從伺服器要指定主伺服器 的IP、Port,按照Redis自定義服務安裝中命令進行服務安裝、服務啟動、服務關閉、服務解除安裝即可使用。

我本地主從伺服器安裝包都還是在D:\redis-win目錄,資料夾Redis-x64-3.2.100為主服務,資料夾Redis-x64-3.2.100-2則是從服務,用的都是本地IP:127.0.0.1,生產環境大家可以根據自己實際情況進行設定。

主伺服器(RedisServer1)redis.windows.conf修改如下:port 6379(預設),不需要作修改;

從伺服器(RedisServer2)redis.windows.conf修改如下:port 6380;slaveof 127.0.0.1 6379,修改地方看下圖:

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

我們用RedisManagement分別進行兩個埠連線做客戶端,在主服務新增鍵可以同步到從服務,從服務新增無效。如果從服務沒有配置從屬關係,我們可以在Redis管理器中對從服務進行配置,開啟控制檯,輸入slaveof 127.0.0.1 6379,效果一樣。

我們安裝從服務時候,可以不通過配置檔案來安裝指定埠和指定主機。redis-server.exe --service-install redis.windows.conf --Service-name RedisServer2 --loglevel verbose --port 6380,這樣也是指定埠安裝。

執行從服務redis-cli.exe,技術分享圖片,這跟RedisManagement一樣,也能配從屬關係。

五、管理客戶端GUI程式

1.客戶端管理程式Redis Desktop Manager

2.我用的版本是Redis Desktop Manager v.0.7.6.15,一路下一步安裝即可。

3.連線Redis伺服器

技術分享圖片

一個簡單的介面管理器。

連線成功後,如圖所示。

技術分享圖片

六、REDIS資料庫的用途

用於使用者登入驗證的session。因為redis資料庫讀取的速度較快,所以可以提高使用者訪問網站的速度。

redis+mysql:

看到很多網站都是用redis作為mysql的快取使用。
mysql儲存在磁盤裡,redis儲存在記憶體裡,redis既可以用來做持久儲存,也可以做快取,而目前大多數公司的儲存都是mysql + redis,mysql作為主儲存,redis作為輔助儲存被用作快取,加快訪問讀取的速度,提高效能。
目前基本都是mysql(主) + redis(輔),在需要效能的地方使用redis,在不需要高效能的地方使用mysql。