redis數(shù)據(jù)結(jié)構(gòu)有哪些?
推薦:《redis視頻教程》
字符串(strings):
存儲整數(shù)(比如計數(shù)器)和字符串(廢話。。),有些公司也用來存儲json/pb等序列化數(shù)據(jù),并不推薦,浪費內(nèi)存;
哈希表(hashes):
存儲配置,對象(比如用戶、商品),優(yōu)點是可以存取部分key,對于經(jīng)常變化的或者部分key要求atom操作的適合;
列表(lists):
可以用來存最新用戶動態(tài),時間軸,優(yōu)點是有序,確定是元素可重復(fù),不去重;
集合(sets):
無序,唯一,對于要求嚴(yán)格唯一性的可以使用;
有序集合(sorted sets):
集合的有序版,很好用,對于排名之類的復(fù)雜場景可以考慮;
位圖(bitmaps):
這個不是新增的數(shù)據(jù)類型,只是可以把字符串類型按照單個位的形式進(jìn)行操作,沒有實際使用過。網(wǎng)上很多人用bitmaps來做活躍用戶統(tǒng)計和用戶簽到功能,性能比去數(shù)據(jù)庫load高很多。
計數(shù)器(hyperloglogs,翻譯待定):
如名字,添加元素只記錄元素個數(shù),并不會存儲元素本身,節(jié)省空間并且避免重復(fù)count,這個感覺直接用incr就可以實現(xiàn);
地理空間(geospatial indexes):
用來做地理位置查詢,比如兩點之間的距離,一個點附近有多少元素,適合點比較固定的場景,或者只考慮當(dāng)前位置的場景,像附近的人這種就不適合,一是需要考慮某段時間內(nèi)的點,二是點經(jīng)常更新,壓力比較大。