一、Redis 是什么
Redis 是一款依據BSD開源協議發行的高性能Key-Value存儲系統(cache and store)。它通常被稱為數據結構服務器,因為值(value)可以是 字符串(String), 哈希(Map), 列表(list), 集合(sets) , 有序集合(sorted sets)和位圖(bitmaps)等類型。官方網站是 http://redis.io/
Redis 和其它 NO SQL 的比較本文不做過多闡述。我覺得 Redis 最好的地方就是提供數據持久化功能(定時把內存中的數據寫入文件),從而不至於一旦宕機將造成數據丟失。而且相較於 Memcached ,它提供的值類型選擇更為寬泛。
二、Redis 下載安裝
打開 Redis 官網,我們發現 Redis 官方並不支持 Windows 平台,但 Microsoft Open Tech Group 卻改變了這一情況

點擊 Learn more

點擊 Download ZIP, 下載完后解壓,我們發現其並沒有提供現成的執行安裝文件,這就需要我們自行進行編譯。定位到目錄 Redis\redis2.8\msvs,打開文件 RedisServer.sln

項目結構如下圖

由於筆者的機器為64位,在編譯之前我們確認一下編譯 Platform, 同時我們可以看到對於此 project 將會編譯產生 redis-server.exe 文件

其它項目類似

編譯成功之后,我們到其 Debug 目錄下找到編譯產生的文件

為了便於處理,我們新建目錄 Redis,並把這些文件拷貝過去

其中的 redis.conf 來自如下目錄

至此,我們已經得到所有需要的文件了,下面就可以使用了,打開 CMD, 定位到目錄 D:\Developer\Redis\Redis,然后執行如下命令
redis-server.exe redis.conf

執行成功的截圖(可以看到端口為6379, 進程標識符 PID 為7696)

執行過程中還會讀取配置,由於截圖太長,故這里放出文字
Microsoft Windows [Version 6.1.7601] Copyright (c) 2009 Microsoft Corporation. All rights reserved. C:\Windows\system32>cd D:\Developer\Redis\Redis C:\Windows\system32>D: D:\Developer\Redis\Redis>redis-server.exe redis.conf processing redis.conf arguments seen: activerehashing yes aof-load-truncated yes aof-rewrite-incremental-fsync yes appendfilename appendonly.aof appendfsync everysec appendonly no auto-aof-rewrite-min-size 64mb auto-aof-rewrite-percentage 100 client-output-buffer-limit normal, 0, 0, 0 slave, 256mb, 64mb, 60 pubsub, 32mb, 8mb, 60 daemonize no databases 16 dbfilename dump.rdb dir ./ hash-max-ziplist-entries 512 hash-max-ziplist-value 64 hll-sparse-max-bytes 3000 hz 10 latency-monitor-threshold 0 list-max-ziplist-entries 512 list-max-ziplist-value 64 logfile loglevel notice lua-time-limit 5000 no-appendfsync-on-rewrite no notify-keyspace-events pidfile /var/run/redis.pid port 6379 rdbchecksum yes rdbcompression yes repl-disable-tcp-nodelay no repl-diskless-sync no repl-diskless-sync-delay 5 save 900, 1 300, 10 60, 10000 set-max-intset-entries 512 slave-priority 100 slave-read-only yes slave-serve-stale-data yes slowlog-log-slower-than 10000 slowlog-max-len 128 stop-writes-on-bgsave-error yes tcp-backlog 511 tcp-keepalive 0 timeout 0 zset-max-ziplist-entries 128 zset-max-ziplist-value 64 [7696] 12 May 14:24:45.265 # Warning: 32 bit instance detected but no memory lim it set. Setting 3 GB maxmemory limit with 'noeviction' policy now. _._ _.-``__ ''-._ _.-`` `. `_. ''-._ Redis 2.8.19 (00000000/0) 32 bit .-`` .-```. ```\/ _.,_ ''-._ ( ' , .-` | `, ) Running in stand alone mode |`-._`-...-` __...-.``-._|'` _.-'| Port: 6379 | `-._ `._ / _.-' | PID: 7696 `-._ `-._ `-./ _.-' _.-' |`-._`-._ `-.__.-' _.-'_.-'| | `-._`-._ _.-'_.-' | http://redis.io `-._ `-._`-.__.-'_.-' _.-' |`-._`-._ `-.__.-' _.-'_.-'| | `-._`-._ _.-'_.-' | `-._ `-._`-.__.-'_.-' _.-' `-._ `-.__.-' _.-' `-._ _.-' `-.__.-' [7696] 12 May 14:24:45.283 # Server started, Redis version 2.8.19 [7696] 12 May 14:24:45.283 * The server is now ready to accept connections on po rt 6379 [7696] 12 May 14:39:46.081 * 1 changes in 900 seconds. Saving... arguments seen: logfile stdout qfork 140, 7696 [7696] 12 May 14:39:46.246 # fork operation complete [7696] 12 May 14:39:46.256 * Background saving terminated with success
Server 端好了,現在我們開一個 Client 端來測試一下,新打開 CMD (之前打開的 CMD - Server 端不能關閉)

redis-cli.exe -h 10.7.15.172 -p 6379
其中 10.7.15.172 為本機 IP
set hello helloworld
設置一個值
get hello
讀取這個值
大概15分鍾之后我們發現 Server 端也有變化

原來15分鍾自動把內存中的數據寫入 RDF 文件以防丟失。

至於為什么是15分鍾,我們可以看到配置文件是這樣設置的(1個更改/900秒,10更改/300秒,10000更改/60秒),即更改的越多,數據寫入文件的時間間隔越短,這樣設計蠻合理的。

三、Redis Desktop Manager
雖然通過上面的 CMD 我們也能看到 Redis 在內存中的數據,但方式太不友好了,這里介紹一個工具 Redis Desktop Manager

下載完成后安裝,之后連接至 Server 即可
點擊查看數據

四、Install Redis as Windows Service
前面我們通過 CMD 方式安裝了Redis, 但是非常不方便,因為我們要一直保持窗口打開,而且如果機器重啟的話也需要重新打開。Redis 也可以以 Windows Service 的方式進行部署。在部署之前我們需要把配置文件找到

然后拷貝到 Redis 目錄

安裝服務
redis-server --service-install redis.windows.conf

安裝成功提示

查看服務

啟動服務
redis-server --service-start

停止服務
redis-server --service-stop
卸載服務
redis-server --service-uninstall
其實安裝成 Windows 服務還有一種方式,就是從 Github 上直接下載安裝文件,但是好像不是最新的版本

