一.NoSQL介紹
NoSQL(Not Only SQL),意為反SQL運動,是一項合新的資料庫革命性運動,早期就有人提出,發展至2009年趨勢越發高漲。它指的是非關系型的資料庫。随着網際網路web2.0網站的興起,傳統的關系資料庫在應付web2.0網站,特别是超大規模和高并發的SNS類型的web2.0純動态網站已經顯得力不從心,暴露了很多難以克服的問題,而非關系型的資料庫則由于其本身的特點得到了非常迅速的發展。
NoSQL是以key-value形式存儲,和傳統的關系型資料庫不一樣,不一定遵循傳統資料庫的一些基本要求,比如說遵循SQL标準、ACID屬性、表結構等等,這類資料庫主要有以下特點:非關系型的、分布式的、開源的、水準可擴充的。
二.NoSQL特點
1.處理超大量的資料
2.運作在便宜的PC伺服器叢集上
3.擊碎了性能瓶勁
三.NoSQL适用場景
1.對資料高并發讀寫
2.對海量資料的高效率存儲和通路(fielfeed:一個月有2.5億使用者動态)
3.對資料的高可擴充性和高可用性
四.Redis的介紹
Redis is an open source,advanced key-value store.It is often referred to as a data structure server since keys can contain strings,hashes,lists,sets and sorted sets.
Redis是一個開源的,先進的key-value存儲。它通常被稱為資料結構伺服器,因為鍵可以包含字元串,哈希,連結清單,集合和有序集合。
Redis是一個Key-Value存儲系統。它支援存儲的value類型很多,包括string(字元串)、list(連結清單)、set(集合)、zset(有序集合)。這些資料類型都支援push/pop、add/remove及取交集和并集及更豐富的操作,Redis支援各種不同方式的排序。為了保證效率,資料都是緩存在記憶體中,它也可以周期性的把更新的資料寫入磁盤或者把修改操作寫入追加的記錄檔案。
Redis提供的API語言包括:C、C++、C#、Clojure、Common Lisp、Erlang、Haskell、Java、Javascript、Lua、Objective-C、Perl、PHP、Python、Ruby Scala、Go、Tcl。
目前全球最大的Redis使用者是新浪微網誌,在新浪有200多台實體機,400多個端口正在運作着Redis,有+4G的資料在Redis上來為微網誌使用者提供服務。
在新浪微網誌Redis的部署場景很多,大概分為如下的兩種:
a.應用程式直接通路Redis資料庫
b.應用程式直接通路Redis,隻有當Redis通路失敗時才通路MySQL
Redis資料庫提供多種靈活的資料結構和資料操作,為不同的資料提供不同的資料類型。
五.Redis具體适用場合
1.取最新N個資料的操作
2.排行榜應用,取TOP N操作
3.需要精确設定過期時間的應用
4.計數器應用
5.Uniq操作,擷取某段時間所有資料排重值
6.實時系統,反垃圾系統
7.Pub/Sub建構實時消息系統
8.建構隊列系統
9.緩存
六.redis、mySql、mongoDB的比較
七.Redis的安裝與部署
Redis的官方下載下傳站是:http://redis.io/download
步驟一:下載下傳安裝包
wget http://redis.goolecode.com/files/redis-2.4.17.tar.gz
步驟二:編譯源程式
tar zxvf redis-2.4.17.tar.gz
cd redis-2.4.17
make
cd src && make install
步驟三:移動檔案,便于管理
mkdir -p /usr/local/redis/bin
mkdir -p /usr/local/redis/etc
mv /lamp/redis-2.4.17/redis.conf /usr/local/redis/etc
cd /lamp/redis-2.4.17/src
mv mkreleasehdr.sh redis-benchmark redis-check-aof redis-check-dump redis-cli redis-server /usr/local/redis/bin
步驟四:啟動Redis服務
/usr/local/redis/bin/redis-server
/usr/local/redis/etc/redis.conf
Redis服務端的預設連接配接端口是6379(mySql的端口号是:3306;mongoDB的端口号是:27017,28017)。
預設情況下,Redis不是在背景運作的,我們需要把開啟Redis的背景運作。
vi /usr/local/redis/redis.conf
将daemonize的值改為yes。
啟動後看程序是否啟動
ps -ef | grep redis
看指定的端口号是否占用
netstat -tunpl | grep 6379
步驟五:用戶端連接配接
/usr/local/redis/bin/redis-cli
步驟六:停止Redis執行個體
我們可以使用
/usr/local/redis/bin/redis-cli shutdown
也可以使用
pkill redis-server
當然,也可以使用kill all,kill -9。
八.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
說明:本文是我網上學習LAMP兄弟連李捷老師《NoSQL資料庫之Redis資料庫管理》的學習筆記。