redis是一個key-value儲存系統。和Memcached類似,它支援儲存的value類型相對更多,包括string(字串)、list(鏈表)、set(集合)、zset(sorted set –有序集合)和hash(雜湊類型)。這些資料類型都支援push/pop、add/remove及取交集並集和差集及更豐富的操作,而且這些操作都是原子性的。在此基礎上,redis支援各種不同方式的排序。與memcached一樣,為了保證效率,資料都是緩衝在記憶體中。區別的是redis會周期性的把更新的資料寫入磁碟或者把修改操作寫入追加的記錄檔案,並且在此基礎上實現了master-slave(主從)同步。
Redis 是一個高效能的key-value資料庫。 redis的出現,很大程度補償了memcached這類key/value儲存的不足,在部 分場合可以對關聯式資料庫起到很好的補充作用。它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等用戶端,使用很方便。[1]
Redis支援主從同步。資料可以從主伺服器向任意數量的從伺服器上同步,從伺服器可以是關聯其他從伺服器的主伺服器。這使得Redis可執行單層樹複製。存檔可以有意無意的對資料進行寫操作。由於完全實現了發布/訂閱機制,使得從資料庫在任何地方同步樹時,可訂閱一個頻道並接收主伺服器完整的訊息發布記錄。同步對讀取操作的可擴充性和資料冗餘很有協助。
redis的官網地址,非常好記,是redis.io。(特意查了一下,網域名稱尾碼io屬於國家網域名稱,是british Indian Ocean territory,即英屬印度洋地區)
目前,Vmware在資助著redis項目的開發和維護。
1.windows
下載windows版本,解壓出來, 下載地址 redis伺服器下載
根據作業系統 進入相應的目錄
啟動Redis服務端 redis-server.exe redis.conf
啟動服務端成功後 可以使用用戶端redis-cli.exe測試
redis-cli.exe -h 127.0.0.1 -p 6379
set czy 123
get czy
看剛才起來的用戶端
這裡要開兩個命令終端,使用redis ,伺服器是要一直開的。
redis設定檔參數
[html] view plain copy print?#是否以後台守護進程運行,預設為no, 取值yes, no daemonize no #pid檔案存放路徑 pidfile /var/run/redis.pid #配置redis連接埠,預設6379 port 6379 #綁定ip。預設綁定所有本機ip,一般用在伺服器多ip下,可以只監聽內網伺服器ip,保證服務安全 bind 127.0.0.1 #sock檔案 unixsocket /tmp/redis.sock #用戶端逾時時間,單位秒 timeout 300 #log層級,支援四個層級,debug,notice,verbose,warning loglevel verbose #log檔案路徑 logfile #log輸出到標準裝置,logs不寫檔案,輸出到空裝置,/deb/null logfile stdout #儲存快照的頻率,在多長時間內執行一定數量的寫操作時,儲存快照的頻率,可以設定多個條件。如果都注釋掉,則不做記憶體資料持久化。如果只是把redis只用作cache,不開啟持久化功能 save <seconds> <changes> save 900 1 #是否使用壓縮 rdbcompression #快照資料庫名稱 dbfilename #資料庫存放路徑 dir #redis主從 做法 在從上填上主的IP和連接埠號碼 主上不用做任何設定 slaveof <masterip> <masterport> #主程式庫伺服器口令,如果主伺服器未開啟requirepass,則不需要此項 masterauth <master-password> #在master伺服器掛掉或者同步失敗時,從伺服器是否繼續提供服務 slave-serve-stale-data yes #設定redis服務密碼,如果開啟,則用戶端串連時需要 -a 指定密碼,否則操作會提示無許可權 requirepass foobared #命令改名,相當於linux alias,可以用改功能屏蔽一些危險命令 rename-command #最大串連數;0 表示不限制 maxclients 128 #最大使用記憶體(分配的記憶體),推薦生產環境下做相應調整,我們用的是只用來做快取,限制2G。預設情況下,redis會佔用可用的所有記憶體 maxmemory <bytes> #到期策略,提供六種策略 maxmemory-policy volatile-lru volatile-lru //刪除到期和lru 的key(預設值) allkeys-lru //刪除lru演算法的key volatile-random //隨機刪除即將到期key allkeys->random //隨機刪除 volatile-ttl //刪除即將到期的 noeviction //永不到期,返回錯誤 #是否開啟appendonlylog,開啟的話每次寫操作會記一條log。相當於mysql的binlog;不同的是,每次redis啟動都會讀此檔案構建完整資料。即使刪除rdb檔案,資料也是安全的 appendonly #記錄檔的名稱,預設appendonly.aof appendfilename appendonly.aof #非同步寫append file 的策略。類似mysql事物log寫方式。三種 appendfsync appendfsync always //同步,每次寫都要flush到磁碟,安全,速度慢。 appendfsync everysec //每秒寫(預設值,推薦值)同mysql appendfsync no //交給作業系統去做flush的動作 #虛擬記憶體開關 vm-enabled no #swap檔案,不同redis swap檔案不能共用。而且生產環境下,不建議放在tmp目錄 vm-swap-file /tmp/redis.swap #vm大小限制。0:不限制,建議60-80% 可用記憶體大小 vm-max-memory 0 #根據緩衝內容大小調整,預設32位元組 vm-page-size 32 #page數。每 8 page,會佔用1位元組記憶體。vm-page-size * vm-pages 等於 swap 檔案大小 vm-pages 134217728 #vm 最大io線程數。注意: 0 標誌禁止使用vm vm-max-threads 4