Redis入門教程(一)


一、NoSQL概述

1、什么是NoSQL

NoSQL,泛指非關系型的數據庫。隨着互聯網web2.0網站的興起,傳統的關系數據庫在應付web2.0網站,特別是超大規模和高並發的SNS類型的web2.0純動態網站已經顯得力不從心,暴露了很多難以克服的問題,而非關系型的數據庫則由於其本身的特點得到了非常迅速的發展。NoSQL數據庫的產生就是為了解決大規模數據集合多重數據種類帶來的挑戰,尤其是大數據應用難題。

2、NoSQL解決的問題

(1)對數據庫的高並發讀寫需求

(2)對海量數據的高效率存儲及訪問

(3)對數據庫的高可擴展性和高可用性需求

3、主流的NoSQL產品

4、NoSql數據庫的四大分類

(1)鍵值存儲數據庫

相關產品:Tokyo Cabinet/Tyrant、Redis、Voldemort、Berkeley DB

典型應用:內容緩存,主要用於處理大量數據的高訪問負載

數據模型:一系列的鍵值對

優勢:快速查詢

劣勢:存儲的數據缺少結構化

(2)列存儲數據庫

相關產品:Cassandra,Hbase,Riak

典型應用:分布式文件系統

數據模型:以列簇式存儲,將同一列數據存在一起

優勢:查找速度塊,可擴展性強,更容易進行分布式擴展

劣勢:功能相對局限

(3)文檔型數據庫

相關產品:CouchDB,MongoDB

典型應用:與key-value類似,value是結構化的

數據模型:一系列的鍵值對

優勢:數據結構要求不嚴格

劣勢:查詢性能不高,而且缺乏統一查詢語法

(4)圖形數據庫

相關數據庫:Neo4j,infogrid,infinite Graph

典型應用:社交網絡

數據模型:圖結構

優勢:利用圖結構相關算法

劣勢:需要對整個圖做計算才能得出結果,不容易做分布式的集群方案

5、NoSql特點

在大數據存取上具備關系型數據庫無法比擬的性能優勢,例如:

(1)易擴展

NoSQL數據庫種類繁多,但是一個共同的特點都是去掉關系數據庫的關系型特性。數據之間無關系,這樣就非常容易擴展。也無形之間,在架構的層面上帶來了可擴展的能力。

(2)大數據量

高性能NoSQL數據庫都具有非常高的讀寫性能,尤其在大數據量下,同樣表現優秀。這得益於它 的無關系性,數據庫的結構簡單。

(3)靈活的數據模型

NoSQL無需事先為要存儲的數據建立字段,隨時可以存儲自定義的數據格式。而在關系數據庫里,增刪字段是一件非常麻煩的事情。如果是非常大數據量的表,增加字段簡直就是一個噩夢。這點在大數據量的Web2.0時代尤其明顯。

(4)高可用

NoSQL在不太影響性能的情況,就可以方便的實現高可用的架構。比如Cassandra, HBase模型,通過復制模型也能實現高可用。綜上所述,NoSQL的非關系特性使其成為了后Web2.0時代的寵兒,助力大型Web2.0網站的再次起飛,是一項全新的數據庫革命性運動。

二、Redis概述

1、什么是Redis

Redis是一個開源的使用ANSI C語言編寫、支持網絡、可基於內存亦可持久化的日志型、Key-Value數據庫,並提供多種語言的API。從2010年3月15日起,Redis的開發工作由VMware主持。從2013年5月開始,Redis的開發由Pivotal贊助。

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等客戶端,使用很方便。
Redis支持主從同步。數據可以從主服務器向任意數量的從服務器上同步,從服務器可以是關聯其他從服務器的主服務器。這使得Redis可執行單層樹復制。存盤可以有意無意的對數據進行寫操作。由於完全實現了發布/訂閱機制,使得從數據庫在任何地方同步樹時,可訂閱一個頻道並接收主服務器完整的消息發布記錄。同步對讀取操作的可擴展性和數據冗余很有幫助。
redis的官網地址,非常好記,是redis.io。(特意查了一下,域名后綴io屬於國家域名,是british Indian Ocean territory,即英屬印度洋領地)
目前,Vmware在資助着redis項目的開發和維護。
2、Redis性能
測試完成了50個並發執行100000個請求。
設置和獲取的值是一個256字節字符串。
Linux box是運行Linux 2.6,這是X3320 Xeon 2.5 ghz。
文本執行使用loopback接口(127.0.0.1)。
結果:讀的速度是110000次/s,寫的速度是81000次/s 。
3、Redis的應用場景
(1)緩存
(2)聊天室的在線好友列表
(3)任務隊列
(4)應用排行榜
(5)網站訪問統計
(6)數據過期處理
(7)分布式集群架構的session分離

三、Redis安裝

以下步驟在Centos6.5下進行操作

1)安裝redis編譯的c環境,yum install gcc-c++

2)將redis-2.6.16.tar.gz上傳到Linux系統中

3)解壓到/usr/local下  tar -xvf redis-2.6.16.tar.gz -C /usr/local

4)進入redis-2.6.16目錄 使用make命令編譯redis

5)在redis-2.6.16目錄中 使用make PREFIX=/usr/local/redis install命令安裝 redis到/usr/local/redis中

6)拷貝redis-2.6.16中的redis.conf到安裝目錄redis中

7)如需遠程連接redis,需配置redis端口6379在linux防火牆中開發

/sbin/iptables -I INPUT -p tcp --dport 6379 -j ACCEPT

/etc/rc.d/init.d/iptables save

至此,redis已經安裝成功。

四、Redis啟動

 1、前端啟動

直接運行redis-server即可,前端模式的缺點是啟動后,不能對其進行其他操作,如果操作必須使用ctrl+c,同時redis-server結束,不推薦使用此方法。

2、后端啟動

(1)首先需要修改redis.conf文件,將其中的daemonize 改為yes。

(2)啟動時指定配置文件

./redis-server ./redis.conf

五、Redis停止

(1)查找redis的pid

ps -ef | grep redis

(2)使用kill

kill -9 pid


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM