Redis(Remote Dictionary Server)是一個使用ANSI C語言編寫、遵照BSD協議、支持網絡、可基於內存亦可持久化的日誌型、Key-Value的開源數據庫,並提供多種語言的API。redis
Redis是一個key-value的存儲系統,它一般也被稱爲數據結構服務器,由於Redis支持豐富的數據類型,值能夠是字符串、哈希、列表、集合和有序集合這五種類型。數據庫
Redis能夠用做數據庫、分佈式緩存和消息中間件,它是一個NoSQL數據庫。緩存
和其餘 key - value 緩存產品(如Memcache)相比,Redis具備如下幾個優點:安全
Redis支持五種數據類型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。每一種數據類型都有大量的操做命令。服務器
字符串是redis最基本的類型,一個key對應一個value。String類型是二進制安全的,也就是說redis的String能夠包含任何數據,好比jpg圖片或者序列化的對象。網絡
string 類型的值最大能存儲 512MB,是最常規的存儲類型,值除了是字符串以外,還能夠是數字,通常用於複雜的計數功能。如下的示例展現Redis字符串的基本操做命令。<div align=center></div>數據結構
Redis hash 是一個鍵值(key=>value)對集合,是一個 string 類型的 field 和 value 的映射表,hash 特別適合用於存儲對象。每一個 hash 能夠存儲 2^32 -1個 鍵值對(40多億)。分佈式
如下的示例展現Redis哈希的基本操做命令。<div align=center></div>性能
Redis 列表是簡單的字符串列表,按照插入順序排序。你能夠添加一個元素到列表的頭部(左邊)或者尾部(右邊)。列表最多可存儲 2^32 -1個 元素(40多億)。spa
使用List的數據結構,能夠作簡單的消息隊列的功能。另外還有一個就是,能夠利用lrange命令,作基於redis的分頁功能。如下的示例展現Redis列表的基本操做命令。<div align=center></div>
Redis 的 Set 是 String 類型的無序集合,集合中的成員是惟一的,這就意味着集合中不能出現重複的數據。 Redis 中集合是經過哈希表實現的,因此添加,刪除,查找的複雜度都是 O(1)。集合中最大的成員數爲 2^32 - 1(40多億個) 。
Set做爲一個無序集合,不含重複元素,適合用來作去重的功能,另外還能夠計算交集、並集、差集。如下的示例展現Redis集合的基本操做命令。<div align=center></div>
Redis zset 和 set 同樣也是string類型元素的集合,且不容許重複的成員。不一樣的是每一個元素都會關聯一個double類型的分數。redis正是經過分數來爲集合中的成員進行從小到大的排序。zset的成員是惟一的,但分數(score)卻能夠重複。
因爲zset根據分數進行排序,所以,一些相似於排行榜的應用就很適合用它來存儲。如下的示例展現Redis有序集合的基本操做命令。<div align=center></div>
咱們能夠看到,Redis支持的五種數據類型各有優點,都有其適用的場合,概括爲下表:<div align=center></div>
除了以上針對每一種特定數據類型的操做命令,redis還有一些通用的對key的操做命令,如刪除鍵del key等等,示例以下:<div align=center></div>