1. 程式人生 > >初識---Redis

初識---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的安裝及簡單實用

搬出一臺虛擬機器

  1. 環境安裝,主要是因為Redis是用C語言開發的,編譯需要依賴gcc環境,所以 yum install gcc-c++ 來一手,當然有就直接跳過了。
  2. 利用工具將安裝包傳到我是傳到了/root/下,用的是Xftp。
  3. 理算當然得解壓 tar -zxvf redis-3.0.7.tar.gz。
  4. 編譯,將原始碼編譯為.o檔案
  5. 進入/root/redis下用執行make安裝,如果失敗了那就重來,實在沒招那就重灌系統。
  6. 建立一個目錄 /usr/loca/redis 作為安裝目錄
  7. cd到/root/redis 目錄 make PREFIX=/usr/local/redis install
    在這裡插入圖片描述
  8. 由於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的知識。一想到深入學習,嘖嘖嘖----雖然頭大,但是喜歡。