Redis的全稱是Remote Dictionary Server,本質上是一個Key-Value類型的內存數據庫,整個數據庫統統加載在內存當中進行操作,定期通過異步操作把數據庫數據Flush到硬盤行保存。因為是純內存操作,Redis的性能很出色,可每秒10w次讀寫,是已知性能最快的Key-Value DB。此外Redis支持保存多種數據結構,單個value的最大限制是1GB,可以用來實現很多有用的功能。比如用List來實現FIFO雙向鏈表,實現一個輕量級的高性能消息隊列服務;set可以做高性能的tag系統等。此外Redis還可以對存入的key-value設置expire時間。但是Redis缺點就是數據庫容量很容易受到屋里內存的限制,不能用作海量數據的高性能讀寫,因此Redis適合的場景主要局限在較小數據量的高性能操作和運算上。
五種數據類型
- String 字符串:是二進制安全的,可以包含任何數據,比如JPG圖片或者序列化以后的對象,是最基本的數據類型,一個鍵最大能存512MB。格式 set key value
- Hash 哈希:是一個鍵值對集合。是一個string類型的field與value的映射表,hash特別適合存儲對象。格式:hmset name key1 value1 key2 value2
- List 列表:列表是簡單的字符串列表,按照插入順序排序,可以添加一個元素到列表的頭部或者尾部。
格式:Ipush name value 在key對應list的頭部添加字符串元素
格式:rpush name value 在key對應list的尾部添加字符串元素
- set 集合:是string類型的無序集合。集合是通過哈希表實現的,所以添加,刪除,查找的復雜度都是O(1)。格式:sadd name value
- zset 有序集合:是string類型元素的集合,不允許重復。每個元素都會關聯一個double類型的分數,Redis通過這個分數對集合成員進行從小到大的排序。