Redis --講解(一)

一,解決多臺服務器的session共享問題,

  • 使用緩存數據庫,完全在內存中,速度快,數據結構簡單。

  • 減少IO的讀操作。

二、NoSQL(Not  Only SQL),不僅僅是sql,泛指非關係型數據庫。

  •    NoSQL不依賴業務邏輯方式存儲,而以簡單的key—value模式存儲,因此大大的增加了數據庫的擴展能力

  •    不遵循SQL標準

  •    不支持ACID (事務)

  •     遠超過SQL的性能

 

三、 

        NoSQL適用場景

  • 對數據高併發的讀寫

  • 海量數據的讀寫

  • 對數據高可擴展性

        

        不適用場景

  • 需要事務支持

  • 基於sql的結構化查詢存儲,處理複雜的關係,需要即席查詢

 

四、Redis的特點

  • 數據都在內存中,支持持久化,主要用作備份恢復

  • 除了支持簡單的key-value模式,還支持多種數據結構的存儲,比如list、set、hash、zset等

  • 一般是作爲緩存數據庫輔助持久化的數據庫。

 

五、mongoDB  文檔型數據庫(雖然爲key-value模式,但是對value(尤其是json)提供了豐富的查詢功能)

 

六、Redis的應用場景

  • 配合關係型數據庫做高速緩存。

  • 高頻次,熱門訪問的數據,降低數據庫IO。

  • 分佈式架構,做session共享

  • 最新N個數據    通過List實現按自然時間排序的數據

  • 排行榜,TOP N  利用ZSET(有序集合)

  • 時效性的數據,比如手機驗證碼      Expire  過期

  • 計數器  ,秒殺    原子性  自增方法INCR,DECR

  • 去除大量數據中的重複數據      利用set集合

  • 構建隊列     利用list集合

  • 發佈訂閱消息系統    pub/sub模式。

 

七、Redis 的端口號默認爲6379,默認創建16個數據庫,類似數組下標從0開始,初始默認使用0號數據庫

        使用  select  <dbid>  來切換數據庫   如:select  8.

 

八、Redis 五大數據類型

            

                string 

                set

key +       list

                hash

                zset

 

 

  •         key   

    • keys   *      查詢當前庫的所有鍵

    • exists   <key>    判斷某個鍵是否存在

    • type  <key>  判斷鍵的類型

    • del  <key>  刪除某個鍵

    • expire  <key>  <seconds>   爲鍵值設置過期時間,單位爲秒

    • ttl <key>   查看還有多少秒過期, -1表示永不過期   -2表示已過期

    • dbsize  查看當前數據庫的key的數量

    • Flushdb    清空當前庫

    • Flushall     通殺全部庫

  •     String

    • String 是Redis最基本的類型,你可以理解成與Memcached一模一樣的類型,一個key對應一個value。

    • String 類型是二進制安全的,意味着Redis的String可以包含任何數據,比如JPG圖片或者序列化的對象。

    • String類型是Redis最基本的數據類型,一個Redis中文字符串最多可以是512M.

 

                 常用命令

        • get  <key>     查詢對應鍵值

        • set    <key>    <value>        添加鍵值對

        • append    <key>    <value>        將給定的<value>  追加到原值的末尾

        • strlen    <key>    獲取值的長度

        • setnx    <key>    <value>    只有在key不存在時設置key的值

        • incr    <key>    將key中存儲的數字值增1     只能對數字值操作,如果爲空,新增值爲1

        • decr    <key>    將key中存儲的數字值減1    只能對數字值操作,如果爲空,新增值爲-1

        • incrby/decrby        <key>     <步長>           將key中存儲的數字值增減,自定義步長。

        • mset          <key1>   <value1>     <key2>   <value>    同時設置一個或多個key-value對

        • mget      <key1>   <key2>   <key3>   同時獲取一個或多個value

        • msetnx     <key1>   <value1>    <key2>    <value2>     同時設置一個或多個key-value對,當且僅當所有給定的key都不存在

        • getrange   <key>     <起始位置>   <結束位置>      獲取值得範圍,類似java中的substring

        • setrange <key> <起始位置> <value> 用 <value> 覆寫<key> 所儲存的字符串值,從<起始位置>開始

        • setex key  過期時間   value    設置鍵值的同時設置過期時間   單位秒

        • getset key  value   以新換舊   設置了新值的同時獲得舊值

    • 開啓redis服務

      • redis-server /myredis/redis.conf    指定配置文件

      • redis-cli

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章