Redis官方說明
Redis is an open source (BSD licensed), in-memory data structure store, used as database, cache and message broker. It supports data structures such as strings, hashes, lists, sets, sorted sets with range queries, bitmaps, hyperloglogs and geospatial indexes with radius queries. —— redis.io
Redis數(shù)據(jù)結(jié)構(gòu)
字符串(strings):存儲整數(shù)(比如計數(shù)器)和字符串(廢話神帅。饺藤。),有些公司也用來存儲json/pb等序列化數(shù)據(jù),并不推薦,浪費內(nèi)存。
哈希表(hashes):存儲配置飞崖,對象(比如用戶慰毅、商品)氮帐,優(yōu)點是可以存取部分key锻霎,對于經(jīng)常變化的或者部分key要求atom操作的適合。
列表(lists):可以用來存最新用戶動態(tài)揪漩,時間軸旋恼,優(yōu)點是有序,確定是元素可重復(fù)奄容,不去重冰更。
集合(sets):無序,唯一昂勒,對于要求嚴格唯一性的可以使用蜀细,可以用來去重。
有序集合(sorted sets):集合的有序版戈盈,很好用奠衔,排名之類的復(fù)雜場景可以考慮。
位圖(bitmaps):這個不是新增的數(shù)據(jù)類型塘娶,只是可以把字符串類型按照單個位的形式進行操作归斤。可以用來統(tǒng)計活躍用戶刁岸,實現(xiàn)用戶簽到功能脏里,性能頗高。不過統(tǒng)計活躍用戶建議是增量讀取日志或者引入消息中間件異步刷到redis虹曙,非業(yè)務(wù)必須功能最好不要影響線上業(yè)務(wù)迫横,特別是登錄這種門戶業(yè)務(wù)更是重中之重。
計數(shù)器(hyperloglogs酝碳,翻譯待定):如名字矾踱,添加元素只記錄元素個數(shù),并不會存儲元素本身疏哗,節(jié)省空間并且避免重復(fù)count呛讲,這個感覺直接用incr就可以實現(xiàn)。
地理空間(geospatial indexes):用來做地理位置查詢沃斤,比如兩點之間的距離圣蝎,一個點附近有多少元素刃宵,適合點比較固定的場景衡瓶,或者只考慮當(dāng)前位置的場景,像附近的人這種就不適合牲证,一是需要考慮某段時間內(nèi)的點哮针,二是點經(jīng)常更新,壓力比較大。