Redis初級介紹

1 什麼是Redis

Redis(REmote DIctionary Server,遠程數據字典服務器)是開源的內存數據庫,經常使用做緩存或者消息隊列。redis

Redis的特色:

  • Redis存在於內存,使用硬盤做爲持久化;每秒十萬讀寫。
  • 具備豐富的數據結構,字符串、哈希表、列表、集合、有序集合;提供交集、並集、差集等操做。
  • 設置TTL存活時間,到期自動刪除。
  • Redis單線程、Memcached多線程;對於通常的應用場景,單線程也足夠使用,優點仍是在於多數據類型、持久化。
  • 能夠將數據複製到任意數量的從服務器。

2 Redis中的數據結構

字符串

  • SET keyname value 設置鍵值keyname的值是value
  • KEYS * 獲取全部的鍵值
  • GET keyname 獲取keyname的值
  • EXISTS keyname 判斷是否存在鍵值keyname
  • DEL keyname 刪除鍵值keyname
  • TYPE keyname 判斷keyname的類型(string字符串,hash哈希表,list列表,set集合,zset有序集合)

哈希表

  • HSET keyname key value 添加一個哈希屬性和值
  • HGET keyname key 獲取值
  • HKEYS keyname 獲取所有的key值
  • HVALS keyname 獲取所有的value值
  • HGETALL keyname 獲取全部的值

列表

經過雙向鏈表實現,頭尾操做均爲O(1),獲取指定元素比較慢。數據庫

  • LPUSH keyname value1或者LPUSH keyname value1 value2 在左邊插入
  • RPUSH keyname value2 在右邊插入
  • LRANGE keyname 0 -1 查詢全部的元素
  • LPOP keyname
  • RPOP keyname

集合

元素惟一,可是沒有順序。使用值爲空的哈希表實現,操做都是O(1)。緩存

  • SADD keyname value1 value2 添加值
  • SREM keyname value1 刪除
  • SMEMBERS keyname查詢全部元素

有序集合

使用哈希和跳躍表實現,中間速度也很快。服務器

  • ZADD keyname key value 添加
  • ZRANGE keyname start end 獲取指定範圍的元素

與列表的比較:數據結構

相同:多線程

  • 都是有序的
  • 均可以獲取某一範圍的元素

不一樣:app

  • 列表經過雙向鏈表實現,兩端數據存取極快,中間緩慢
  • 有序集合經過哈希和跳躍表實現,中間速度也很快,爲O(log(N))
  • 列表不能簡單地調整某個元素的位置,有序集合能夠
  • 有序集合比列表更好費內存

3 Redis持久化

Redis提供了兩種持久化方式:1 RDB快照方式 2 AOF方式優化

RDB方式:線程

知足必定條件時,會建立一個子進程,複製當前的數據,把數據寫入到硬盤中某個文件,寫入完成後替換原來的存儲文件。數據通常存儲在dump.rdb中。UNIX系統中支持寫時複製,即剛開始會執行持久化寫入磁盤的操做,若是此時有其餘的數據發生改變,就複製一份數據執行。隊列

除了這種自動的快照方式,還支持命令方式持久化:

  • SAVE:經過阻塞的方式,用父進程來持久化,此時沒法執行其餘的請求。
  • BGSAVE:經過fork子進程的方式,持久化。

AOF方式:

每次操做都會記錄命令,這樣會形成某些命令的冗餘,好比添加了一個屬性,再刪除,那麼這兩個操做都是冗餘的。redis提供了一些優化,因此能夠避免這些冗餘信息。命令記錄在appendonly.aof中

4 Redis的消息隊列

Redis用於消息隊列,一般有兩種種使用方式:

LIST:基於列表的方式,全部的消費者數據加起來是列表中的全部數據.

發佈/訂閱:每一個消費者訂閱獨立的channel,每一個數據都是獨立的。

相關文章
相關標籤/搜索