Redis數據類型&優缺點&持久化方式


目錄

1. Redis數據類型

2. Redis優點

3. Redis持久化

4. dns

1.Redis數據類型

  1. 字符串

    value的數據結構(數組)

      字符串value數據結構類似於數組,采用與分配冗余空間來減少內存頻繁分配

      當字符串長度小於1M時,擴容就是加倍現有空間

      如果字符串長度操作1M時,擴容時最多擴容1M空間,字符串最大長度為 512M

    字符串的使用場景(緩存)

      字符串一個常見的用途是緩存用戶信息,我們將用戶信息使用JSON序列化成字符串

      取用戶信息時會經過一次反序列化的過程

    name: value (value=json.dumps([{‘11.12遲到’},{},{}]))

  2. list(列表)

    value的數據結構(雙向鏈表)

      列表的數據結構是雙向鏈表,這意味着插入和刪除的時間復雜度是0(1),索引的時間復雜度位0(n)

      當列表彈出最后一個元素后,該數據結構會被自動刪除,內存被回手

    列表的使用場景(隊列、棧)

  3. hash(字典)

    value的數據結構(HashMap)

      redis中的字典也是HashMap(數組+列表)的二維結構

      不同的是redis的字典的值只能是字符串

      

    hash的使用場景(緩存)

      hash結構也可以用來緩存用戶信息,與字符串一次性全部序列化整個對象不同,hash可以對每個字段進行單獨存儲

      這樣可以部分獲取用戶信息,節約網絡流量

      hash也有缺點,hash結構的存儲消耗要高於單個字符串

      info={“name”:“zhs”,“age”:18}

        字符串存:info={"name":"zhs","age":18}      一次全部讀取

        hash:info={"name":"zhs", "age":18}           hash 可以根據key取值
 

  4. set(集合)

    value的數據結構(字典)

      redis中的集合相當於一個特殊的字典,字典的所有value都位null

      當集合中的最后一個元素被移除后,數據結構會被自動刪除,內存被回收

    set使用場景

      set結構可以用來存儲某個活動中中獎的用戶ID,因為有去重功能,可以保證同一用戶不會中間兩次

    set 是無序集合

      sadd key member 添加一個 string 元素到 key 對應 set 集合中,成功返回 1,如果元素以及 在集合中則返回 0,key 對應的 set 不存在則返回錯誤

      

      繼續添加,返回0表示添加失敗,說明set集合,不允許添加重復元素

      smembers smembers smembers key 返回 key 對應 set 的所有元素,結果是無序的

  5. zset(有序集合)

    value的數據結構(跳躍列表)

      zset一方面是一個set,保證了內部的唯一性

      另一方面它可以給每一個value賦予一個score,代表這個value的權重

      zset內部實現用的是一種叫做“跳躍列表”的數據結構

      zset最后一個元素被移除后,數據結構就會被自動刪除,內存也會被回收

    zset應用場景

      粉絲列表:value(粉絲ID),score(關注時間),這樣可以輕松按關注事件排序

      學生成績:value(學生ID),score(考試成績),這樣可以輕松對成績排序

2.Redis優點

  redis為什么快

    單線程避免上下文切換

    純內存操作

    非阻塞IO多路復用

  缺點

    內存限制,不能存海量數據

3.持久化方式

  RDB(快照)

    全量同步:從服務器有的數據全部丟棄,主服務器把所有數據發給他。

    redis把磁盤中原有數據全部丟棄,然后把redis內存中數據全部重新寫入磁盤

    缺點:

      會丟失數據(當磁盤數據丟棄,正在寫入時如果出現故障會導致數據丟失)

    優點:

      整個Redis數據庫將只包含一個文件,一旦系統出現災難性故障,我們可以非常容易的進行恢復。

      性能最大化,它僅需要fork出子進程,由子進程完成持久化工作,極大的避免服務進程執行IO操作了。
  AOF

    增量同步:主服務器只發送從服務器缺少的數據。

    把所有的修改操作先寫入日志中,然后逐條的執行最后就寫入磁盤

    缺點:
      - 對於相同數量的數據集而言,AOF文件通常要大於RDB文件,RDB 在恢復大數據集時的速度比 AOF 的恢復速度要快。
      - AOF在運行效率上往往會慢於RDB
    優點:
      - 數據安全性高,Redis中提供了3中同步策略,即每秒同步、每修改同步和不同步

  redis從主從同步應該采用哪種方式?

    •   當主從剛連接的時候,進行全量同步;全量同步結束后,進行增量同步

    •   當然,如果有需要,slave在任何時候都可以發起全量同步

    •   redis的策略,如論如何,首先會嘗試增量同步,如不成功,要求從機進行全量同步。

4. 智能dns

  可以根據用戶網絡的出接口公網IP,解析出距離最近的服務器訪問

nslookup www.baidu.com
tracert ip

 


免責聲明!

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



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