1. NoSQL&Redis介紹
?????? NoSQL,Not Only SQL,是非關系型的數據庫。傳統的關系數據庫不能滿足超大規模和高并發的應用。
?????? 是以Key-Value的形式存儲,(例如JSON,XML),不一定遵循傳統數據庫的一些基本要求,比如SQL標準、ACID屬性(Atomicity/ Consistency/Isolation/Durability)、表結構等。主要有以下的特點:非關系型的、分步式的、開源的、水平可擴展的(指能夠連接多個軟硬件的特性)。
?????? NoSQL適用場景:
????????????? 1)、High performance - 對數據高并發讀寫
????????????? 2)、Huge storage - 對海量數據的高效率存儲和訪問
????????????? 3)、High scalability && HighAvailability - 對數據的高可擴展性和高可用性
?????? 開源的NoSQL數據庫:Redis, MongoDB, Cassandra…...
?????? Redis的介紹
?????? Redis是一個Key-Value存儲系統。它支持存儲的value類型有:string(字符串),list(鏈表),?set(無序集合),zset(sorted set有序集合)和hash,也可以把redis看成一個數據結構服務器。這些數據類型都支持pust/pop、add/remove及取交集、并集和差集運算,Redis支持各種不同方式的排序。數據都是緩存在內存中的,它也可以周期性的把更新的數據寫入磁盤或者把修改操作寫入追加的記錄文件,并實現了master-slave(主從)同步。
?????? Redis提供的API語言包括C、C++、C#、Java、JavaScript、Lua、Objective-C、Perl、PHP、Python、Ruby、Go、Tcl等。
?????? 使用Redis:新浪微博,200+ Server、400 port、4G data.
?????? 使用方式:與memcache相同
????????????? 1. 應用程序直接訪問Redis數據庫;
????????????? 2. 應用程序直接訪問Redis,只有當訪問Redis失敗時才訪問MySQL
?????? 應用場合:
????????????? 1. 取最新N個數據的操作
????????????? 2. 排行榜應用
????????????? 3. 需要精確設定過期時間的應用
????????????? 4. 計數器應用
????????????? 5. Uniq操作,獲取某段時間所有數據排重值
????????????? 6. 實時系統,反垃圾系統
????????????? 7. Pub/Sub構建實時消息系統
????????????? 8. 構建隊列系統
????????????? 9. 緩存
????????????? 10. 存儲微博關注關系
?????? Redis有庫無表無字段無行列。MongoDB有庫有集合(對應于Mysql中的表)
2. Redis的安裝
?????? 官網:http://redis.io
?????? 步驟一:
????????????? 下載安裝包:
????????????? wget?http://redis.googlecode.com/files/redis-2.4.17.tar.gz
?????? 步驟二:
????????????? 編譯源代碼:
????????????? tarzxvf redis-2.4.17.tar.gz
????????????? cdredis-2.4.17
????????????? make
????????????? cdsrc
????????????? makeinstall
????????????? 注:make完成后,有產生可執行文件
???????????????????? redis-server:redis服務器的啟動程序
???????????????????? redis-cli:redis命令行工具,也可為客戶端
???????????????????? redis-benchmark:redis性能測試工具(讀寫)
???????????????????? redis-stat:redis狀態檢測工具(狀態參數延遲)
?????? 步驟三:(非必須)
????????????? 移動文件,便于管理
????????????? mkdir –p /usr/local/redis/bin
????????????? mkdir –p /usr/local/redis/etc
????????????? mv redis-2.4.17/redis.conf/usr/local/redis/etc
????????????? mvmkreleasehdr.sh redis-benchmark redis-check-aof redis-check-dump redis-cli ? redis-server /usr/lcoal/redis/bin
?????? 步驟四:
????????????? 啟動redis服務
? ? ? ? ? ? ? /usr/local/redis/bin/redis-server(有警告,沒有加載配置文件)
????????????? /usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf
????????????? Redis服務端的默認連接端口是6379
????????????? Redis默認不是后臺運行
?????? 步驟五:
????????????? 客戶端連接
????????????? /usr/local/redis/bin/redis-cli
????????????? 或者其他客戶端:如phpredis
?
- $redis?=?new?Redis();??
- $redis->connect(“127.0.0.1”,?6379);??
?
?????? 步驟六:
????????????? 停止Redis
????????????? /usr/local/redis/bin/redis-clishutdown
????????????? or
????????????? pkill redis-server
3. ?Redis的配置
????????????? daemonize 如果需要在后臺運行,把該項改為yes
????????????? pidfile 配置多個pid的地址,默認在/var/run/redis.pid
????????????? bind 綁定ip,設置后只接受自該ip的請求
????????????? port 監聽端口,默認為6379
????????????? timeout 設置客戶端連接時的超時時間,單位為秒
????????????? loglevel 分為4級,debug、verbose、notice、warning
????????????? logfile 配置log文件地址
????????????? databases 設置數據庫的個數,默認使用的數據庫為0
????????????? save 設置redis進行數據庫鏡像的頻率,保存快照的頻率,第一個*表示多長時間,?????? 第三個*表示執行多少次寫操作。在一定時間內執行一定數量的寫操作時,自動保存快照。可設置多個條件。
????????????? rdbcompression 在進行鏡像備份時,是否進行壓縮
????????????? Dbfilename 鏡像備份文件的文件名
????????????? Dir 數據庫鏡像備份的文件放置路徑
????????????? Slaveof 設置數據庫為其他數據庫的從數據庫?
????????????? Masterauth 主數據庫連接需要的密碼驗證
????????????? Requirepass 設置登錄時需要使用的密碼
????????????? Maxclients 限制同時連接的客戶數量
????????????? Maxmemory 設置redis能夠使用的最大內存
????????????? Appendonly 開啟append only模式
????????????? appendfsync 設置對appendonly.aof文件同步的頻率
????????????? vm-enabled 是否虛擬內存的支持
????????????? vm-swap-file 設置虛擬內存的交換文件路徑
????????????? vm-max-memory 設置redis使用的最大物理內存大小
????????????? vm-page-size 設置虛擬內存的頁大小
????????????? vm-pages 設置交換文件的總page數量
????????????? vm-max-threads 設置VMIO同時使用的線程數量
????????????? glueoutputbuf 把小的輸出緩存存放在一起
????????????? hash-max-zipmap-entries 設置hash的臨界值
????????????? activerehashing 重新hash