使用redis很長時間了,但只是限於使用,一直也沒有進行系統的學習與底層研究,現系統的學習一下redis並記錄筆記。java
Redisredis
一、Nosql 非關係型數據庫,key-value鍵值對存貯。sql
二、內存型數據庫,支持持久化,可將數據保存在硬盤上。數據庫
三、單線程處理請求,但採用io多路複用技術。服務器
四、讀寫性能好,支持集羣。數據結構
Redis數據類型dom
一、String 類型:最基礎的數據類型,簡單的key-value鍵值對,value能夠是任何數據,不限制類型,但大小最多不能超過512M。性能
二、list 類型:列表類型,相似一個隊列,左側爲表頭,右側爲表尾,左右兩側均可以插入數據;底層實現爲鏈表。學習
三、set 類型:無序集合類型,key-values 集合,values內部的元素不重複。spa
四、zset 類型:有序集合類型,數據結構相似於java中的Map<String,List<Object>>,key-values結構,values內部元素有序。
五、hash 類型:hash表結構,相似於java中的Map<String,Map<String,Object>>。
Redis持久化方式
一、RDB持久化:快照snapshot持久化方式,把當前內存中的數據集快照寫入硬盤,恢復數據時直接讀取硬盤上的快照文件。
二、AOF持久化:經過記錄redis服務器所執行的寫命令日誌進行持久化,恢復數據是,執行保存的寫命令進行數據恢復。
Redis過時刪除策略
一、redis存入數據時能夠設置過時時間,若是不設置,則永不過時;
二、redis到期刪除策略是按期隨機抽樣+惰性刪除。
Redis內存淘汰機制
一、no-enviction:禁止淘汰數據,內存不足則報錯。
二、allkeys-random:從內存數據集中隨機淘汰數據。
三、allkey-lru:從內存數據集中淘汰最近最少使用數據(最經常使用)。
四、volatile-random:從設置過過時時間的數據集中隨機淘汰數據,未設置過時時間的數據不受影響。
五、volatile-lru:從設置過過時時間的數據集中淘汰最近最少使用數據。
六、volatile-ttl:從設置過過時時間的數據集中淘汰將要過時的數據。