初識---Redis
博主最近在做一個練手Web專案,接觸到了以前被我跳過的內容Redis,哈哈出來混遲早是要還的。於是呢在此也進行了一個簡單的入門學習,拒絕懵逼狀態。
在介紹Redis之前我們先談談什麼是NoSQL。對我來說談到NoSQL最先想到是的是啥呢,當然是Hbase,Hbase在我學習大資料的時候有過一定的瞭解,但是時隔一年除了知道是個啥其他的…沒事,下一步就是梳理大資料的技術,學了忘<~>忘了學。
進入正文
NoSQL是什麼
NoSQL(NoSQL = Not Only SQL ),意思是"不僅僅是SQL",泛指非關係型資料庫,不僅僅是SQL?
為什麼出現 NoSQL
今天我們可以通過第三方平臺(如:Google,Facebook等)可以很容易的訪問和抓取資料。使用者的個人資訊,社交網路,地理位置,使用者生成的資料和使用者操作日誌已經成倍的增加。我們如果要對這些使用者資料進行挖掘,那SQL資料庫已經不適合這些應用了, NoSQL資料庫的發展也卻能很好的處理這些大的資料。
換句話說以下三方面成就了NoSQL
- 滿足對資料庫高併發的讀寫
- 滿足對海量資料高效率儲存和訪問
- 滿足對資料庫的高可擴充套件性和高可用性
NoSQL的產生就是為了解決大規模資料集合多重資料種類帶來的挑戰,說直白點在大資料領域是個寶。
主流的NoSQL產品
直接上圖,雖然我只用過Hbase。
NoSQL的分類
主要有一下四類
- 鍵值儲存資料庫(Redis)
- 列儲存資料庫(Hbase)
- 文件型資料庫(MongoDB)
- 圖形資料庫(InfoGrid)
NoSQL有何特點
下面就是Redis的介紹了
Redis是一個開源的使用ANSI C語言編寫、支援網路、可基於記憶體亦可持久化的日誌型、Key-Value資料庫,並提供多種語言的API。從2010年3月15日起,Redis的開發工作由VMware主持。從2013年5月開始,Redis的開發由Pivotal贊助。 —百度百科
支援的資料型別
- 字串型別
- 雜湊型別
- 列表型別
- 集合型別
- 有序集合型別
這幾種型別後面再一一介紹
Redis效能方面
官方測試完成了50個併發執行100000個請求。結果:讀的速度是110000次/s,寫的速度是81000次/s 。身為在校大學生的我,想想就頭禿。
Redis應用場景
- 快取(資料查詢等)我想這個應該是使用的最多的
- 任務佇列(秒殺)
- 應用排行
- 網站訪問統計
- 分散式叢集架構中session分離
Redis的安裝及簡單實用
搬出一臺虛擬機器
- 環境安裝,主要是因為Redis是用C語言開發的,編譯需要依賴gcc環境,所以 yum install gcc-c++ 來一手,當然有就直接跳過了。
- 利用工具將安裝包傳到我是傳到了/root/下,用的是Xftp。
- 理算當然得解壓 tar -zxvf redis-3.0.7.tar.gz。
- 編譯,將原始碼編譯為.o檔案
- 進入/root/redis下用執行make安裝,如果失敗了那就重來,實在沒招那就重灌系統。
- 建立一個目錄 /usr/loca/redis 作為安裝目錄
- cd到/root/redis 目錄 make PREFIX=/usr/local/redis install
- 由於redis啟動需要一個配置檔案,將配置檔案複製到 /root/redis/ cp /root/redis/redis.conf /root/redis
完成以上步驟了你就可以直接啟動了。啟動服務端 ./bin/redis-server 後你就會發現,我幹不了其他的了,我還得另起視窗這不是坑爹嗎?所以我也不推薦你們這樣做。
8.1 後端模式
vi /usr/local/redis/redis.conf 修改配置檔案
8.2 啟動時,指定配置檔案
8.3關閉
Redis的簡單使用
在啟動服務端後,在bin/執行./redis-cli,啟動客戶端進入以下
然後你就可以為所欲為了比如說
-
測試redis是否正確安裝成功
向伺服器傳送 ping 命令,伺服器返回 pong
向伺服器傳送 set name tom
get name 命令可以看到可以獲取到tom的資訊
向伺服器傳送keys *
可以檢視伺服器中一共有多少鍵值對的資料,可以檢視到各個鍵值型別資料
-
資料型別
String
掌握的操作:
賦值
格式: set key value
例如:set username tom
取值
格式: get key
例如: get username先獲取再設定 getset key value 例如: getset username jack 刪 del key 例如: del d 瞭解: 對於數字型別 自增和自減 incr key ++ decr key -- 增加或減少指定的數量 incrby key int decrby key int 拼接字串 append key value
List
賦值:
左邊:lpush key value value2 value3
右邊:rpush key value value2 value3
取值:
左邊:lpop key
右邊:rpush key獲取所有元素 lrange 0 -1 獲取元素的個數 llen key 擴充套件: lpushx key value :若有則新增 若沒有則不新增 rpushx key value :若有則新增 若沒有則不新增 lrem key count value:從左邊移除count個value 若count>0 :從左邊移除count個value 若count<0 :從右邊移除count個value 若count=0 :從右邊移除所有的value lset key index value 設定連結串列中指定索引的元素值 0 代表是第一個 -1代表的是最後一個
Hash:
存值
取值
刪除
set
新增
sadd key value1 valuse2
刪除
srem key value1 valuse2
獲取
smembers key
判斷是否是是set中的一員
sismember key value
運算
差集: sdiff s1 s2
交集: sinter s1 s2
並集: sunion s3 s4
獲取數量
scard key
srandmember key:隨機獲取一個
sortedSet
新增元素
zadd key score m1 score m2
獲取元素
zscore key m:獲取指定成員的得分
zcard key:獲取key的長度
刪除元素
zrem
通用的操作:
keys * :檢視所有的key
del key:刪除指定的key
exists key:判斷一個key是否存在
rename oldkey newkey:重新命名
expire key 秒數:
ttl key :檢視一個key剩餘存活時間
-1:持久存活
-2:不存在
type 判斷一個可以屬於什麼型別
總結
關於Redis入門,我感覺這些東西應該是夠了,隨著自己的學習,後面也會更新更加深入的Redis的知識。一想到深入學習,嘖嘖嘖----雖然頭大,但是喜歡。