nosql(nosql = not only sql),它指的是非關系型的資料庫。随着網際網路web2.0網站的興起,傳統的關系資料庫在應付web2.0網站,特别是超大規模和高并發的sns類型的web2.0純動态網站已經顯的力不從心,暴露了很多難以克服的問題,而非關系型的資料庫則由于其本身的特點得到了非常迅速的發展。
nosql的特點:
特點一:
是以key-value形式存儲,和傳統的關系型資料庫不一樣,不一定遵循傳統資料庫的一些基本要求,比如說遵循sql标準、acid屬性、表結構等等,這類資料庫主要有以下特點:非關系型的、分布式的、開源的、水準可擴充的。
特點二:
處理超大量的資料比mysql等有優勢。
運作在便宜的pc伺服器叢集上。
擊碎了性能瓶頸。(mysql的時候需要很多優化,但是nosql不需要,性能非常高)
特點三(性能方面):
對資料高并發讀寫。(對mysql進行上萬次讀的請求可能頂得住,但是如果對mysql進行上萬次的寫的時候,硬碟io要求就比較高,效率就比較低下,但是nosql就比較方面。)
對海量資料的高效率存儲和通路。
對資料的高可擴充和高可用性。(nosql可以增加一個伺服器節點,使用nosql來做分布式比較簡單,因為沒有固定的表結構,是以更改比較友善)。
redis的介紹:
redis是一個開源的,先進的key-value存儲。它通常被稱為資料結構伺服器,因為鍵可以包含字元串,哈希,連結清單,集合和有序集合。
redis是一個key-value存儲系統。它支援存儲的value類型很多,包括string(字元串)、list(連結清單)、set(集合)、zset(有序集合)。這些資料類型都支援push/pop、add/remove及取交集和并集及更豐富的操作,redis支援各種不同方式的序列。為了保證效率,都是緩存在記憶體中的,它也可以周期性的吧更新的資料寫入磁盤或者吧修改操作寫入追加的記錄檔案。
redis的使用場合:
在新浪微網誌redis的部署場景很多,大概分為如下2種:
應用程式直接通路redis資料庫。
應用程式直接通路redis,隻有當redis通路失敗時才通路mysql
把大象裝冰箱的過程:
redis資料庫提供多中靈活的資料結構和資料操作,為不同的大象建構不同的冰箱。
redis具體的适用場景:
取最新n個資料庫的操作
排行榜應用,取top n操作
需要精确設定過期時間的應用
計數器應用
uniq操作,擷取某段時間所有資料排重值
實時系統,反垃圾系統。
pub/sub建構實時消息系統(redis獨有的釋出和訂閱系統)
建構隊列系統
緩存。
redis的安裝與部署
第一步:
redis的官方下載下傳站是:http://redis.io/download
最好使用stable版本(穩定版本)。
第二步:編譯源程式
tar zxvf redis-2.8.19.tar.gz
cd redis-2.8.19
make
cd src && make install (注意權限問題)
網上安裝方式:
$ wget http://download.redis.io/releases/redis-2.8.19.tar.gz
$ tar xzf redis-2.8.19.tar.gz
$ cd redis-2.8.19
$ make
步驟三:
移動檔案,便于管理:
mkdir –p /usr/local/redis/bin
mkdir –p /usr/local/redis/etc
mv /home/toto/redis/redis-2.8.19/redis.conf/usr/local/redis/etc/
cd src
mv mkreleasehdr.sh redis-benchmarkredis-check-aof redis-check-dump redis-cli redis-server /usr/local/redis/bin/ (也就是說移動的是所有的可執行的檔案)
第四步:啟動redis服務:
/usr/local/redis/bin/redis-server (或者到/usr/local/redis/bin目錄下,執行:./redis-server)
可以指定配置檔案:
/usr/local/redis/etc/redis.conf (可以在./redis-server後面加上這個配置檔案)
redis服務端的預設連接配接端口是6379 (mongodb的端口号是:27017和28017端口)
第五步:
用戶端連接配接:/usr/local/redis/bin/redis-cli (cli是client的縮寫)。
退出用戶端的方式是通過exit或者通過quit的方式。
步驟六:
停止redis執行個體
我們可以使用/usr/local/redis/bin/redis-cli然後再
shutdown
也可以使用pkill redis-server 或者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
檢視程序的方式:ps –ef | grep “redis”
檢視端口的方式:netstat -tunpl | grep 6379
-------------------------------------------------------------------------------------------------------------------------------------------------------
用源碼工程來編譯安裝
1/ 到官網下載下傳最新stable版
2/ 解壓源碼并進入目錄 tar -zxvf redis-2.8.19.tar.gz -c ./redis-src/
3/ make
如果報錯提示缺少gcc,則安裝gcc : yum install -y gcc
如果報錯提示:newer version ofjemalloc required
則在make時加參數:make malloc=libc
4/ 安裝redis,指定安裝目錄,如 /usr/local/redis
make prefix=/usr/local/redis install
6/ 拷貝一份配置檔案到安裝目錄下
切換到源碼目錄,裡面有一份配置檔案redis.conf,然後将其拷貝到安裝路徑下
cp redis.conf /usr/local/redis/
7/ 啟動redis
cd /usr/local/redis
bin/redis-server redis.conf (如果想背景程序運作,修改:daemonize yes)
8 連接配接redis
另開一個xshell,然後:
#cd /usr/local/redis/
[root@hadoop redis]# bin/redis-cli
127.0.0.1:6379>
注意:為了讓機器能夠遠端連接配接伺服器上的redis,需要将redis.conf中的bind值改成通路機器的ip位址,不要用127.0.0.1
1、如果想遠端通路redis,需要對redis配置ip
配置的方式是:
vim redis.conf
将bind的id換成真實的ip位址,比如:
bind 192.168.106.81
2、在叢集配置中,要對redis配置密碼,修改的配置是:
requirepass accountone (這裡設定一個密碼:accountone)
3、另外若想遠端通路,需要将6379的防火牆端口号放開
bin/redis-cli -h 192.168.106.81 -p 6379 通過這種方式可以連接配接到192.168.106.81這台伺服器上的redis. 注意:若想讓它能夠被連同192.168.106.81這台伺服器上的redis.conf的bind屬性值要改成192.168.106.81