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數據結構
字符串(strings):存儲整數(比如計數器)和字符串(廢話。。),有些公司也用來存儲json/pb等序列化數據,并不推薦,浪費內存。
哈希表(hashes):存儲配置,對象(比如用戶、商品),優點是可以存取部分key,對于經常變化的或者部分key要求atom操作的適合。
列表(lists):可以用來存最新用戶動態,時間軸,優點是有序,確定是元素可重復,不去重。
集合(sets):無序,唯一,對于要求嚴格唯一性的可以使用,可以用來去重。
有序集合(sorted sets):集合的有序版,很好用,排名之類的復雜場景可以考慮。
位圖(bitmaps):這個不是新增的數據類型,只是可以把字符串類型按照單個位的形式進行操作。可以用來統計活躍用戶,實現用戶簽到功能,性能頗高。不過統計活躍用戶建議是增量讀取日志或者引入消息中間件異步刷到redis,非業務必須功能最好不要影響線上業務,特別是登錄這種門戶業務更是重中之重。
計數器(hyperloglogs,翻譯待定):如名字,添加元素只記錄元素個數,并不會存儲元素本身,節省空間并且避免重復count,這個感覺直接用incr就可以實現。
地理空間(geospatial indexes):用來做地理位置查詢,比如兩點之間的距離,一個點附近有多少元素,適合點比較固定的場景,或者只考慮當前位置的場景,像附近的人這種就不適合,一是需要考慮某段時間內的點,二是點經常更新,壓力比較大。