在公司這麼久,Redis使用的比較多,正好總結一下。redis的主要好處是:使用方便,簡單,redis的實現源碼好像也只有不多的代碼,是一個很輕便的nosql。redis
用途:公司主要是用在一些實時數據的緩存,一些大量數據的入庫(經過list類型),還有redis簡單實現的訂閱發佈的功能。sql
最近nosql的紅火,出現了好多這樣的數據庫,不過我也只用了redis這個,感受挺好用的,就是簡單,方便足夠了。數據庫
redis緩存
包括的屬性:keys 主要 方法: exists(key):判斷key是否存在 del key:刪除key rename key:修改key名字 dbsize():數據庫key的數量 flushdb():刪除當前數據庫的全部key flushall():刪除全部數據庫的key string類型 主要方法: set(key,value):設置key對應的value setnx(key,value):設置要key不存在 mset():一次設置多個key的值 get key:獲取key的值 append key value:給指定key追加value substr key start end:截取value list類型 主要方法: lpush:在list頭部添加值 rpush:在list尾部添加值 llen:返回list的長度 lrange:返回指定區間內的元素 lset:設置list指定下標的元素值。 lpop:從頭部刪除元素 rpop:從尾部刪除元素 set類型(無序集合經過hashtable實現) 主要方法: sadd:添加一個元素到key對應的set集合中。 srem:刪除指定元素 spop:刪除key對應的set中隨機的一個元素 scard:返回set的元素個數 sorted set類型(和set相似,多了關聯一個double類型的score 是skip list和hashtable的混合體) 主要方法: zadd:添加元素到集合,元素在集合中存在則更新對應的score zrem:刪除指定元素 zrank:返回指定元素的下標,集合中元素是按score從小到大排序的 zcount:放回集合中給定區間的數量 zscore:返回指定元素對應的score hash類型 主要方法: hset: 設置hashfield hget:獲取指定的hashfield hexists:判斷field是否存在 hdel:刪除指定的hash field
redis簡單的實現了這個功能,在需求不復雜的狀況下,感受也挺方便的,不須要去引入其餘的mq等服務器服務器
Jedis有兩種訂閱模式: subsribe(通常模式設置頻道)和psubsribe(使用模式匹配來設置頻道)網絡
訂閱方 jedis.psubscribe(listener, new String[]{"hello_*"}) listener 這個要本身繼承JedisPubSub這個抽象類,去實現訂閱信息,取消訂閱等方法。 發佈方 jedis.publish("hello_foo", "bar123");
事務:是指把指令發送過去以後,redis先放到隊列中,並無當即執行數據結構
管道:是把指令所有一塊兒發送過去,而後一次性接收所有的結果app
1.持久化支持:快照(默認),aof方式nosql
2.快照方式:是將數據先存儲在內存,而後當數據累計達到某些設定的伐值的時候,就會觸發一次DUMP操做,將變化的數據一次性寫入數據文件(RDB文件)。日誌
3.AOF 工做原理: 是將數據也是先存在內存,可是在存儲的時候會使用調用fsync來完成對本次寫操做的日誌記錄,這個日誌揭露文件實際上是一個基於Redis網絡交互協議的 文本文件。AOF調用fsync也不是說所有都是無阻塞的,在某些系統上可能出現fsync阻塞進程的狀況,對於這種狀況能夠經過配置修改,但默認狀況不 要修改。AOF最關鍵的配置就是關於調用fsync追加日誌文件的平率,有兩種預設頻率,always每次記錄進來都添加,everysecond 每秒添加一次。兩個配置各有所長後面分析。因爲是採用日誌追加的方式來持久話數據,因此引出了第二個日誌的概念:rewrite
4.Rewrite
將日誌文件中的全部數據都從新寫到另一個新的日誌文 件中,可是不一樣的是,對於老日誌文件中對於Key的屢次操做,只保留最終的值的那次操做記錄到日誌文件中,從而縮小日誌文件的大小。這裏有兩個配置須要注 意:
auto-aof-rewrite-percentage 100 (當前寫入日誌文件的大小佔到初始日誌文件大小的某個百分比時觸發Rewrite) auto-aof-rewrite-min-size 64mb (本次Rewrite最小的寫入數據良)
1.master能夠有多個slave
2.除了多個slave連到相同的master外,slave也能夠鏈接其餘slave造成圖狀結構
3.主從複製不會阻塞master。也就是說當一個或多個slave與master進行初次同步數據時,master能夠繼續處理client發來的請求。相反slave在初次同步數據時則會阻塞不能處理client的請求。
4.主從複製能夠用來提升系統的可伸縮性,咱們能夠用多個slave專門用於client的讀請求,好比sort操做可使用slave來處理。也能夠用來作簡單的數據冗餘
5.能夠在master禁用數據持久化,只須要註釋掉master配置文件中的全部save配置,而後只在slave上配置數據持久化。