分享java帶來的快樂

          我喜歡java新東西

          導(dǎo)航

          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          統(tǒng)計

          常用鏈接

          留言簿(8)

          文章分類

          文章檔案

          相冊

          收藏夾

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          Redis Windows

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

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

          Redis文件夾有以下幾個文件
          redis-server.exe:服務(wù)程序
          指定redis的配置文件,如沒有指定,則使用默認(rèn)設(shè)置
          D:\redis-2.0.0-rc2>redis-server.exe redis.conf

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

          Redis官方文檔對VM的使用提出了一些建議:
          當(dāng)你的key很小而value很大時,使用VM的效果會比較好.因?yàn)檫@樣節(jié)約的內(nèi)存比較大.
          當(dāng)你的key不小時,可以考慮使用一些非常方法將很大的key變成很大的value,比如你可以考慮將key,value組合成一個新的value.
          最好使用linux ext3 等對稀疏文件支持比較好的文件系統(tǒng)保存你的swap文件.
          vm-max-threads這個參數(shù),可以設(shè)置訪問swap文件的線程數(shù),設(shè)置最好不要超過機(jī)器的核數(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

          設(shè)置一個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

          相關(guān)文章
          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 強(qiáng)強(qiáng) 閱讀(477) 評論(0)  編輯  收藏 所屬分類: Redis

          主站蜘蛛池模板: 开鲁县| 京山县| 新干县| 白水县| 廊坊市| 越西县| 长子县| 台中县| 马关县| 河津市| 汉川市| 满洲里市| 泸州市| 定结县| 手游| 遂平县| 石阡县| 吐鲁番市| 太和县| 峨眉山市| 嵩明县| 宁强县| 巴林左旗| 民县| 南康市| 平陆县| 龙里县| 桐乡市| 上虞市| 万源市| 稷山县| 阳春市| 缙云县| 壤塘县| 呼图壁县| 濮阳市| 屏东市| 柳河县| 沐川县| 科技| 农安县|