redis 特點:
1. 所有資料儲存在記憶體中,高速讀寫
2. 提供豐富多樣的資料型別:string、 hash、 list、set、 sorted set
3. 提供了 aof 和 rdb 兩種資料的持久化儲存方式,保證了 redis 重啟後資料不丟失
4. redis 的所有操作都是原子性的,還支援對幾個操作合併後的原子性操作,支援事務
通常我們都把資料存到關係型資料庫中,但為了提公升應用的效能,我們應該把訪頻率高且不會經常變動的資料快取到記憶體中。
redis 沒有像 mysql 這類關係型資料庫那樣強大的查詢功能,需要考慮如何把關係型資料庫中的資料,合理的對應到快取的 key-value 資料結構中。
redis 資料型別
redis支援五種資料型別:string(字串),hash(雜湊),list(列表),set(集合)及zset(sorted set:有序集合)。
一:字串型別(string)
字串型別是redis的最基本型別,它可以儲存任何形式的字串。其它的四種型別都是字串型別的不同形式。
此型別和memcache相似,作為常規的key-value快取應用。
注:乙個鍵最大能儲存512mb
二:雜湊型別(hash)
redis hash是乙個string型別的field和value的對映表,hash特別適合用於儲存物件(應為物件可能會包含很多屬性)
常用命令:hget hset hgetall (主要用來儲存物件資訊)
三:列表型別(list)
內部使用雙向鍊錶實現,所以獲取越接近兩端的元素速度越快,但通過索引訪問時會比較慢
常用命令 :lpush(新增左邊元素),rpush,lpop(移除左邊第乙個元素),rpop,lrange(獲取列表片段,lrange key start stop)等。
應用場景:redis list的應用場景非常多,也是redis最重要的資料結構之一,比如twitter的關注列表,粉絲列表等都可以用redis的list結構來實現。
四:集合型別(set)
集合型別值具有唯一性,常用操作是向集合新增、刪除、判斷某個值是否存在,集合內部是使用值為空的雜湊表實現的。
應用場景:在微博中,可以將乙個使用者所有的關注人存在乙個集合中,將其所有粉絲存在乙個集合。redis還為集合提供了求交集、並集、差集等操作,可以非常方便的實現如共同關注、共同喜好、二度好友等功能,對上面的所有集合操作,你還可以使用不同的命令選擇將結果返回給客戶端還是存集到乙個新的集合中。
五:有序集合型別 zset(sorted set:有序集合)
redis zset 和 set 一樣也是string型別元素的集合,且不允許重複的成員。不同的是每個元素都會關聯乙個double型別的分數。
redis正是通過分數來為集合中的成員進行從小到大的排序。zset的成員是唯一的,但分數(score)卻可以重複。
常用命令:zadd,zrange
實現方式:redis sorted set的內部使用hashmap和跳躍表(skiplist)來保證資料的儲存和有序,hashmap裡放的是成員到score的對映,跳躍表按score從小到大儲存所有集合元素。使用跳躍表的結構可以獲得比較高的查詢效率,並且在實現上比較簡單。時間複雜度與紅黑樹相同,增加、刪除的操作較為簡單。
應用場景:排行榜
Redis常用資料型別
redis最為常用的資料型別主要有以下五種 string hash list set sorted set 下面我們先來逐一的分析下這五種資料型別的使用和內部實現方式 string 常用命令 set,get,decr,incr,mget 等。應用場景 string是最常用的一種資料型別,普通的key...
redis常用資料型別總結
redis常用資料型別總結 redis是以鍵值對key value的形式來儲存資料,而儲存的資料型別有5種string,list,set,map,以及有序集合 這五種資料型別操作的命令多有相似,經常混淆,閒暇之餘,總結一番。型別一 string 如果key存在,則把value追加到原來的value後...
Redis資料型別 常用Redis 鍵 key
127.0 0.1 6379 set k1 v1 設定key的名字k1,key的值為v1 ok127.0 0.1 6379 set k2 v2 設定key的名字k2,key的值為v2 ok127.0 0.1 6379 keys 查詢所有的key的名字 k2k1 127.0 0.1 6379 127....