分享java帶來的快樂

          我喜歡java新東西

          Redis Windows

          簡介:
          Redis本質上是一個Key-Value類型的內存數(shù)據(jù)庫,很像memcached,整個數(shù)據(jù)庫統(tǒng)統(tǒng)加載在內存當中進行操作,定期通過異步操作把數(shù)據(jù)庫數(shù)據(jù)flush到硬盤上進行保存。因為是純內存操作,Redis的性能非常出色,Redis最大的魅力是支持保存List鏈表和Set集合的數(shù)據(jù)結構,而且還支持對List進行各種操作,例如從List兩端push和pop數(shù)據(jù),取 List區(qū)間,排序等等,對Set支持各種集合的并集交集操作,此外單個value的最大限制是1GB,不像memcached只能保存1MB的數(shù)據(jù),Redis可以用來實現(xiàn)很多有用的功能,比方說用他的List來做FIFO雙向鏈表,實現(xiàn)一個輕量級的高性能消息隊列服務,用他的Set可以做高性能的tag系統(tǒng)等等。另外Redis也可以對存入的Key-Value設置expire時間,因此也可以被當作一個功能加強版的memcached來用。

          Windows版的Redis可到此處下載,非官方版
          http://code.google.com/p/servicestack/wiki/RedisWindowsDownload

          Redis文件夾有以下幾個文件
          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 監(jiān)聽端口,默認為6379
          timeout 超時時間,默認為300(秒)
          loglevel 日志記錄等級,有4個可選值,debug,verbose(默認值),notice,warning
          logfile 日志記錄方式,默認值為stdout
          databases 可用數(shù)據(jù)庫數(shù),默認值為16,默認數(shù)據(jù)庫為0
          save <seconds> <changes> 指出在多長時間內,有多少次更新操作,就將數(shù)據(jù)同步到數(shù)據(jù)文件。這個可以多個條件配合,比如默認配置文件中的設置,就設置了三個條件。
          save 900 1  900秒(15分鐘)內至少有1個key被改變
          save 300 10  300秒(5分鐘)內至少有300個key被改變
          save 60 10000  60秒內至少有10000個key被改變
          rdbcompression 存儲至本地數(shù)據(jù)庫時是否壓縮數(shù)據(jù),默認為yes
          dbfilename 本地數(shù)據(jù)庫文件名,默認值為dump.rdb
          dir 本地數(shù)據(jù)庫存放路徑,默認值為 ./
          slaveof <masterip> <masterport> 當本機為從服務時,設置主服務的IP及端口(注釋)
          masterauth <master-password> 當本機為從服務時,設置主服務的連接密碼(注釋)
          requirepass 連接密碼(注釋)
          maxclients 最大客戶端連接數(shù),默認不限制(注釋)
          maxmemory <bytes> 設置最大內存,達到最大內存設置后,Redis會先嘗試清除已到期或即將到期的Key,當此方法處理后,任到達最大內存設置,將無法再進行寫入操作。(注釋)
          appendonly 是否在每次更新操作后進行日志記錄,如果不開啟,可能會在斷電時導致一段時間內的數(shù)據(jù)丟失。因為redis本身同步數(shù)據(jù)文件是按上面save條件來同步的,所以有的數(shù)據(jù)會在一段時間內只存在于內存中。默認值為no
          appendfilename 更新日志文件名,默認值為appendonly.aof(注釋)
          appendfsync 更新日志條件,共有3個可選值。no表示等操作系統(tǒng)進行數(shù)據(jù)緩存同步到磁盤,always表示每次更新操作后手動調用fsync()將數(shù)據(jù)寫到磁盤,everysec表示每秒同步一次(默認值)。
          vm-enabled 是否使用虛擬內存,默認值為no
          vm-swap-file 虛擬內存文件路徑,默認值為/tmp/redis.swap,不可多個Redis實例共享
          vm-max-memory 將所有大于vm-max-memory的數(shù)據(jù)存入虛擬內存,無論vm-max-memory設置多小,所有索引數(shù)據(jù)都是內存存儲的(Redis的索引數(shù)據(jù)就是keys),也就是說,當vm-max-memory設置為0的時候,其實是所有value都存在于磁盤。默認值為0。

          Redis官方文檔對VM的使用提出了一些建議:
          當你的key很小而value很大時,使用VM的效果會比較好.因為這樣節(jié)約的內存比較大.
          當你的key不小時,可以考慮使用一些非常方法將很大的key變成很大的value,比如你可以考慮將key,value組合成一個新的value.
          最好使用linux ext3 等對稀疏文件支持比較好的文件系統(tǒng)保存你的swap文件.
          vm-max-threads這個參數(shù),可以設置訪問swap文件的線程數(shù),設置最好不要超過機器的核數(shù).如果設置為0,那么所有對swap文件的操作都是串行的.可能會造成比較長時間的延遲,但是對數(shù)據(jù)完整性有很好的保證.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:本地數(shù)據(jù)庫檢查

          redis-check-aof.exe:更新日志檢查

          redis-benchmark.exe:性能測試,用以模擬同時由N個客戶端發(fā)送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個并發(fā)客戶端)
          3 bytes payload (譯者注:3字節(jié)有效載荷)
          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下測試并發(fā)客戶端極限為60

          相關文章
          http://www.rediscn.com/index.html
          http://code.google.com/p/redis/(官網(wǎng))
          http://code.google.com/p/redis/wiki/CommandReference
          文章來源:http://www.madcn.net/?p=686

          posted on 2012-07-03 15:18 強強 閱讀(474) 評論(0)  編輯  收藏 所屬分類: Redis

          主站蜘蛛池模板: 大同县| 威信县| 正定县| 梁河县| 长葛市| 自治县| 绥棱县| 交口县| 蚌埠市| 武安市| 镶黄旗| 泸西县| 黄平县| 普兰县| 辰溪县| 金坛市| 海淀区| 万宁市| 嵊州市| 安达市| 定兴县| 开封市| 碌曲县| 务川| 大化| 安远县| 娱乐| 湖州市| 天峨县| 香格里拉县| 文登市| 镇巴县| 长子县| 香河县| 乐清市| 务川| 册亨县| 新宁县| 中阳县| 高雄县| 犍为县|