簡介:
Redis本質上是一個Key-Value類型的內存數據庫,很像memcached,整個數據庫統統加載在內存當中進行操作,定期通過異步操作把數據庫數據flush到硬盤上進行保存。因為是純內存操作,Redis的性能非常出色,Redis最大的魅力是支持保存List鏈表和Set集合的數據結構,而且還支持對List進行各種操作,例如從List兩端push和pop數據,取 List區間,排序等等,對Set支持各種集合的并集交集操作,此外單個value的最大限制是1GB,不像memcached只能保存1MB的數據,Redis可以用來實現很多有用的功能,比方說用他的List來做FIFO雙向鏈表,實現一個輕量級的高性能消息隊列服務,用他的Set可以做高性能的tag系統等等。另外Redis也可以對存入的Key-Value設置expire時間,因此也可以被當作一個功能加強版的memcached來用。
Windows版的Redis可到此處下載,非官方版
http://code.google.com/p/servicestack/wiki/RedisWindowsDownloadRedis文件夾有以下幾個文件
redis-server.exe:服務程序
指定redis的配置文件,如沒有指定,則使用默認設置
D:\redis-2.0.0-rc2>redis-server.exe redis.conf
redis.conf配置選項如下
daemonize 是否以后臺進程運行,默認為no
pidfile 如以后臺進程運行,則需指定一個pid,默認為/var/run/redis.pid
bind 綁定主機IP,默認值為127.0.0.1(注釋)
port 監聽端口,默認為6379
timeout 超時時間,默認為300(秒)
loglevel 日志記錄等級,有4個可選值,debug,verbose(默認值),notice,warning
logfile 日志記錄方式,默認值為stdout
databases 可用數據庫數,默認值為16,默認數據庫為0
save <seconds> <changes> 指出在多長時間內,有多少次更新操作,就將數據同步到數據文件。這個可以多個條件配合,比如默認配置文件中的設置,就設置了三個條件。
save 900 1 900秒(15分鐘)內至少有1個key被改變
save 300 10 300秒(5分鐘)內至少有300個key被改變
save 60 10000 60秒內至少有10000個key被改變
rdbcompression 存儲至本地數據庫時是否壓縮數據,默認為yes
dbfilename 本地數據庫文件名,默認值為dump.rdb
dir 本地數據庫存放路徑,默認值為 ./
slaveof <masterip> <masterport> 當本機為從服務時,設置主服務的IP及端口(注釋)
masterauth <master-password> 當本機為從服務時,設置主服務的連接密碼(注釋)
requirepass 連接密碼(注釋)
maxclients 最大客戶端連接數,默認不限制(注釋)
maxmemory <bytes> 設置最大內存,達到最大內存設置后,Redis會先嘗試清除已到期或即將到期的Key,當此方法處理后,任到達最大內存設置,將無法再進行寫入操作。(注釋)
appendonly 是否在每次更新操作后進行日志記錄,如果不開啟,可能會在斷電時導致一段時間內的數據丟失。因為redis本身同步數據文件是按上面save條件來同步的,所以有的數據會在一段時間內只存在于內存中。默認值為no
appendfilename 更新日志文件名,默認值為appendonly.aof(注釋)
appendfsync 更新日志條件,共有3個可選值。no表示等操作系統進行數據緩存同步到磁盤,always表示每次更新操作后手動調用fsync()將數據寫到磁盤,everysec表示每秒同步一次(默認值)。
vm-enabled 是否使用虛擬內存,默認值為no
vm-swap-file 虛擬內存文件路徑,默認值為/tmp/redis.swap,不可多個Redis實例共享
vm-max-memory 將所有大于vm-max-memory的數據存入虛擬內存,無論vm-max-memory設置多小,所有索引數據都是內存存儲的(Redis的索引數據就是keys),也就是說,當vm-max-memory設置為0的時候,其實是所有value都存在于磁盤。默認值為0。
Redis官方文檔對VM的使用提出了一些建議:
當你的key很小而value很大時,使用VM的效果會比較好.因為這樣節約的內存比較大.
當你的key不小時,可以考慮使用一些非常方法將很大的key變成很大的value,比如你可以考慮將key,value組合成一個新的value.
最好使用linux ext3 等對稀疏文件支持比較好的文件系統保存你的swap文件.
vm-max-threads這個參數,可以設置訪問swap文件的線程數,設置最好不要超過機器的核數.如果設置為0,那么所有對swap文件的操作都是串行的.可能會造成比較長時間的延遲,但是對數據完整性有很好的保證.redis-cli.exe:命令行客戶端,測試用
D:\redis-2.0.0-rc2>redis-cli.exe -h 127.0.0.1 -p 6379
設置一個Key并獲取返回的值:
$ ./redis-cli set mykey somevalue
OK
$ ./redis-cli get mykey
Somevalue
如何添加值到list:
$ ./redis-cli lpush mylist firstvalue
OK
$ ./redis-cli lpush mylist secondvalue
OK
$ ./redis-cli lpush mylist thirdvalue
OK
$ ./redis-cli lrange mylist 0 -1
1. thirdvalue
2. secondvalue
3. firstvalue
$ ./redis-cli rpop mylist
firstvalue
$ ./redis-cli lrange mylist 0 -1
1. thirdvalue
2. secondvalue
redis-check-dump.exe:本地數據庫檢查
redis-check-aof.exe:更新日志檢查
redis-benchmark.exe:性能測試,用以模擬同時由N個客戶端發送M個 SETs/GETs 查詢 (類似于 Apache 的 ab 工具).
./redis-benchmark -n 100000 –c 50
====== SET ======
100007 requests completed in 0.88 seconds (譯者注:100004 查詢完成于 1.14 秒 )
50 parallel clients (譯者注:50個并發客戶端)
3 bytes payload (譯者注:3字節有效載荷)
keep alive: 1 (譯者注:保持1個連接)
58.50% <= 0 milliseconds(譯者注:毫秒)
99.17% <= 1 milliseconds
99.58% <= 2 milliseconds
99.85% <= 3 milliseconds
99.90% <= 6 milliseconds
100.00% <= 9 milliseconds
114293.71 requests per second(譯者注:每秒 114293.71 次查詢)
Windows下測試并發客戶端極限為60
相關文章
http://www.rediscn.com/index.htmlhttp://code.google.com/p/redis/(官網)
http://code.google.com/p/redis/wiki/CommandReference文章來源:http://www.madcn.net/?p=686