天天看點

Redis的快速上手與基本使用

NOSQL?

  • 概念

    NoSQL:Not Only SQL 不僅僅是 SQL,通常指的是非關系型的資料庫(沒有表與表之間的關聯關系),向mysql、oracle都屬于關系型資料庫。

  • 有點
    1. 格式靈活:存儲資料格式是key=value格式,value的格式可以是文檔形式、圖檔形式等等。
    2. 速度快:非關系型資料庫能夠使用硬碟或者記憶體作為載體,而關系型資料庫隻能使用硬碟作為載體。
    3. 成本低:非關系型資料庫部署簡單,基本都是開源免費的。
  • 缺點
    1. 不提供sql支援,學習和使用成本較高。
    2. 資料結構相對複雜,導緻複雜查詢不友善。

NOSQL解決的問題

  • 資料高并發

    在同一個時間點有海量的使用者并發通路,導緻IO次數過多造成關系型資料庫的癱瘓。

  • 海量資料的存儲

    類似QQ,微信,微網誌,每天使用者産生海量的使用者動态,每天産生幾千萬條記錄。對于關系資料庫來說,在一張幾億條記錄的表裡面進行SQL查詢,效率是極其低下乃至不可忍受的。

  • 高擴充性和高可用性的需求

    關系型資料庫進行擴充和更新是比較麻煩的一樣事,對于很多需要提供24小時不間斷服務的網站來說,對資料庫系統進行更新和擴充是非常痛苦的事情,往往需要停機維護和資料遷移。

    非關系型資料庫可以通過不斷的添加伺服器節點來實作擴充,而不需對原有的資料庫進行維護。

Redis介紹

  • 概念

    Redis (REmote DIctionary Server) 是用 C 語言開發的一個開源的高性能鍵值對(key-value)資料庫。

  • 特征
    1. 資料間沒有必然的關聯關系。
    2. 内部采用單線程機制進行工作,保證了資料的原子性。
    3. 高性能。官方提供測試資料,50個并發執行100000 個請求,讀的速度是110000 次/s,寫的速度是81000次/s。
    4. 多資料類型的支援
      • 字元串類型:String
      • 清單類型:List
      • 散列類型:hash
      • 集合類型:set
    5. redis支援持久化,可以進行資料災難恢複。

Redis的下載下傳安裝(linux中)

  • 下載下傳

    wget http://download.redis.io/releases/redis-5.0.0.tar.gz

  • 解壓

    tar –xvf redis-5.0.0.tar.gz

  • 下載下傳編譯軟體(因為redis是基于c++開發的)

    yum -y install gcc-c++

  • 編譯(在解壓的目錄中執行)

    make

  • 安裝(在解壓的目錄中執行)

    make install

Redis伺服器的啟動

  • 啟動伺服器——指定端口号啟動

    redis-server [--port port]

    redis-server --port 6379

  • 啟動伺服器——以指定的配置檔案啟動

    redis-server config_file_name

    redis-server redis.conf

Redis用戶端啟動

  • 啟動用戶端

    redis-cli [-h host] [-p port]

    redis-cli –h 61.129.65.248 –p 6384

Redis配置檔案常用參數設定

  • 設定伺服器以守護程序的方式運作,開啟後伺服器控制台中将列印伺服器運作資訊(同日志内容相同)

    daemonize yes|no

  • 綁定主機位址(限定的是本機連接配接時的ip)

    bind ip

  • 設定伺服器端口号

    port port

  • 設定伺服器檔案儲存位址

    dir path

  • 伺服器允許用戶端連接配接最大數量,預設0,表示無限制。當用戶端連接配接到達上限後,Redis會拒絕新的連接配接

    maxclients count

  • 用戶端閑置等待最大時長,達到最大值後關閉對應連接配接。如需關閉該功能,設定為 0

    timeout seconds

  • 設定伺服器以指定日志記錄級别

    loglevel debug|verbose|notice|warning

    注意:日志級别開發期設定為verbose即可,生産環境中配置為notice,簡化日志輸出量,降低寫日志IO的頻度
  • 日志記錄檔案名

    logfile filename

Redis基本操作

  • 設定 key,value 資料

    set key value

    set name zs

  • 根據key,擷取相應的value

    get key

    get name

  • 擷取指令幫助文檔

    help [command]

    help set

  • 擷取組中所有指令資訊名稱

    help [@group-name]

    help @string

Redis資料存儲格式

  • redis自身是一個Map,其中所有的資料都是采用key : value的形式存儲。
  • 資料類型指的是存儲的資料的類型,也就是 value 部分的類型,key 部分永遠都是字元串
    Redis的快速上手與基本使用

String

String類型

  • 存儲的資料:單個資料,最簡單的資料存儲類型,也是最常用的資料存儲類型。
  • 存儲資料的格式:一個存儲空間儲存一個資料。
  • 存儲内容:通常使用字元串,如果字元串以整數的形式展示,可以作為數字操作使用。
    Redis的快速上手與基本使用

String類型資料的基本操作

  • 添加/修改資料

    set key value

  • 添加/修改多個資料

    mset key1 value1 key2 value2...

  • 擷取資料

    get key

  • 擷取多個資料

    get key1 key2...

  • 擷取資料字元個數(字元串的長度)

    strlen key

  • 追加資料到原始資料後(如果原始資訊存在就追加,否則建立)

    append key value

  • 删除資料

    del key

  • 判定性添加資料(key不存在則添加,已存在則不添加)

    setnx key value

Hash

hash類型

  • hash類型:底層使用哈希表結構實作資料存儲。
    Redis的快速上手與基本使用
  • hash存儲結構優化
    • 如果field數量較少,存儲結構優化為類數組結構
    • 如果field數量較多,存儲結構使用HashMap結構

hash類型資料的基本操作

  • 添加/修改資料

    hset key field value

  • 添加/修改多個資料

    hmset key field1 value1 field2 value2 …

  • 擷取資料

    hget key field

    -> 根據key和field擷取對應的value

    hgetall key

    -> 根據key擷取所有的field
  • 擷取多個資料

    hget key field1 field2...

  • 擷取哈希表中支付按的數量

    hlen key

  • 删除資料

    hdel key field1 [field2]...

  • 根據field設定對應的value,如果field存在,則不做操作,如果不存在就是添加資料

    hsetnx key field value

  • 擷取哈希表中所有的字段名或字段值

    hkey key

    hvals key

list

list類型

  • 資料存儲需求:存儲多個資料,并對資料進入存儲空間的順序進行區分。
  • 需要的存儲結構:一個存儲空間儲存多個資料,且通過資料可以展現進入順序
  • list類型:儲存多個資料,底層使用雙向連結清單存儲結構實作
    Redis的快速上手與基本使用

list類型資料的基本操作

  • 添加/修改資料

    lpush key value1 [value2]...

    rpush key value1 [value2]...

    說明:l r 分别代表left 與 right,表示從隊列的左邊添加資料,還是右邊添加資料。
  • 擷取資料

    lrange key start stop

    -> 擷取指定索引範圍的資料,如果擷取全部,索引範圍的取值為 0 -1

    lindex key index

    -> 擷取指定索引上的資料

    llen key

    -> 擷取跟指定的key,擷取對應value的長度
  • 擷取并移除資料

    lpop key

    擷取并移除list隊列最左邊的一個資料

    rpop key

    擷取并移除list隊列最右邊的一個資料。
  • 移除指定資料

    lrem key count value

    -> 指定移除list隊列中多少個value

Set

set類型

  • set類型:與hash存儲結構完全相同,僅存儲鍵,不存儲值(nil),并且值是不允許重複的
    Redis的快速上手與基本使用

set類型資料的基本操作

  • 添加資料 (menber是成員的意思,跟value是一樣的)

    sadd key member1 [member2]...

  • 擷取全部資料

    smembers key

  • 删除資料

    srem key member1 [member2]...

  • 擷取集合資料總量

    scard key

  • 判斷集合中是否包含指定資料

    sismenber key menber

  • 随機擷取集合中指定數量的資料

    srandmenber key [count]

  • 随機擷取集合中的某個資料,并将該資料移除集合

    spop key [count]

key常用指令

  • 查詢key

    keys *

    :查詢所有的key,* 比對任意數量的任意符号 ? 配合一個任意符号
  • 擷取key的類型

    type key

清除資料庫

flushall

:清除redis資料庫中所有的資料。