1.什么是Redis
Redis是Remote Dictionary Server(遠程數據服務)的縮寫,由意大利人 antirez(Salvatore Sanfilippo) 開發的一款 內存高速緩存數據庫。該軟件使用C語言編寫,它的數據模型為 key-value,它支持豐富的數據結構,比如 String list hash set sorted set。
可持久化,保證了數據安全。
緩存:
有兩種類型 :數據緩存、頁面緩存(smarty)
使用緩存可以減輕數據庫的負載。
在開發網站的時候如果有一些數據在短時間之內不會發生變化,而它們還要被頻繁訪問,為了提高用戶的請求速度/降低網站的負載,就把這些數據放到一個讀取速度更快的介質上,該行為就稱作對該數據的緩存動作。
該介質可以是文件
、數據庫
、內存
,內存經常用于數據緩存。
頁面緩存經常用在CMS內存管理系統里邊
數據緩存經常會用在頁面的具體數據里邊
2. redis和memcache比較
Redis不僅僅支持簡單的k/v類型的數據,同時還提供list(列表)
,set(集合)
,Sortedset(有序集合)
,hash(哈希表)
等數據結構的存儲。
Redis支持master-slave(主—從)模式應用。
Redis支持數據的持久化,可以將內存中的數據保持在磁盤中,重啟的時候可以再次加載進行使用。
Redis單個value的最大限制是1GB, memcached單個value只能保存1MB的數據。
3.redis操作
3.1 redis操作之key(鍵)
3.2 redis操作之string(字符串)
3.3 redis操作之hash(哈希)
3.4 redis操作之list(列表)
3.5 redis操作之set(集合)
3.2 string類型操作
string是redis最基本的類型
redis的string可以包含任何數據。包括jpg圖片或者序列化的對象。
單個value值最大上限是1G字節。
如果只用string類型,redis就可以被看作加上持久化特性的memcache。
SET key value 設置key對用的值為string類型的value
MSET key1 key2 ... keyN 一次設置多個key值
MGET key1 key2 ... keyN 一次獲取多個key值
INCR key 對key值做加加操作,并返回新的值
DECR key 對key值做減減操作,并返回新的值
INCRBY key integer 對key值做加(指定值)操作,并返回新的值
DECRBY key integer 對key值做減(指定值)操作,并返回新的值
APPEND key calue 給指定key的字符串值追加value
SUBSTR key start end 返回接去過的key的字符串值
incr(increament)對陌生或已有key(key的值必須為整型)進行累加1操作
實現網站計數器功能。
操作陌生變量:生成該key變量并取值為1,
操作已有的key變量:要求key的值必須為整型的
3.3 List類型操作
List類型其實就是一個雙向鏈表。通過push
,pop
操作從鏈表的頭部或者尾部添加刪除元素。
這使得list既可以用作棧,也可以用作隊列。
LPOP key 移除并返回列表key的頭元素。
RPOP key 從list尾部刪除元素,并返回刪除的元素
LPUSH key string 在key對應list的頭部添加字符串元素
RPUSH key string 在key對應list的尾部添加字符串元素
LLEN key 返回key對應list的長度,若key不存在則返回0,若key對應類型不是list返回錯誤
LRANGE key start end 返會指定區間內的元素,下標從0開始
LTRIM key start end 截取list,保留指定區間內元素
LSET key index value 設置list中指定下標的元素值
LREM key count value 從key對應list中刪除count個和value相同的元素。count為0時刪除全部
BLPOP key [key ...] timeout
BLPOP 是列表的阻塞式(blocking)彈出原語。
它是 LPOP 命令的阻塞版本,當給定列表內沒有任何元素可供彈出的時候,
連接將被 BLPOP 命令阻塞,直到等待超時或發現可彈出元素為止。
當給定多個key參數時,按參數key的先后順序依次檢查各個列表,
彈出第一個非空列表的頭元素。
BRPOP key [key ...] timeout
BRPOP 是列表的阻塞式(blocking)彈出原語。
它是 RPOP 命令的阻塞版本,當給定列表內沒有任何元素可供彈出的時候,
連接將被 BRPOP 命令阻塞,直到等待超時或發現可彈出元素為止。
當給定多個key參數時,按參數key的先后順序依次檢查各個列表,
彈出第一個非空列表的尾部元素。
BRPOP 除了彈出元素的位置和 BLPOP 不同之外,其他表現一致。
LINSERT key BEFORE|AFTER pivot value
將值value插入到列表key當中,位于值pivot之前或之后。
當pivot不存在于列表key時,不執行任何操作。
當key不存在時,key被視為空列表,不執行任何操作。
返回值:
如果key不是列表類型,返回一個錯誤。
如果命令執行成功,返回插入操作完成之后,列表的長度。
如果沒有找到pivot,返回-1。
如果key不存在或為空列表,返回0。
LINDEX key index
返回列表key中,下標為index的元素。
如果index參數的值不在列表的區間范圍內(out of range),返回nil。