轉(zhuǎn)載自 https://www.cnblogs.com/a609251438/p/12075181.html
Redis支持五種數(shù)據(jù)類(lèi)型:string(字符串)媳板,hash(哈希)趣倾,list(列表)酝枢,set(集合)及zset(sorted set:有序集合)。
String(字符串)
string 是 redis 最基本的類(lèi)型氛谜,你可以理解成與 Memcached 一模一樣的類(lèi)型燥撞,一個(gè) key 對(duì)應(yīng)一個(gè) value。
string 類(lèi)型是二進(jìn)制安全的焕梅。意思是 redis 的 string 可以包含任何數(shù)據(jù)。比如jpg圖片或者序列化的對(duì)象卦洽。
string 類(lèi)型是 Redis 最基本的數(shù)據(jù)類(lèi)型贞言,string 類(lèi)型的值最大能存儲(chǔ) 512MB。
常用命令:set阀蒂、get该窗、decr、incr蚤霞、mget等酗失。
注意:一個(gè)鍵最大能存儲(chǔ)512MB。
Hash(哈希)
Redis hash 是一個(gè)鍵值(key=>value)對(duì)集合昧绣;是一個(gè) string 類(lèi)型的 field 和 value 的映射表规肴,hash 特別適合用于存儲(chǔ)對(duì)象。
每個(gè) hash 可以存儲(chǔ) 232 -1 鍵值對(duì)(40多億)。
常用命令:hget拖刃、hset删壮、hgetall等。
應(yīng)用場(chǎng)景:存儲(chǔ)一些結(jié)構(gòu)化的數(shù)據(jù)兑牡,比如用戶(hù)的昵稱(chēng)央碟、年齡、性別均函、積分等亿虽,存儲(chǔ)一個(gè)用戶(hù)信息對(duì)象數(shù)據(jù)。
List(列表)
Redis 列表是簡(jiǎn)單的字符串列表苞也,按照插入順序排序经柴。你可以添加一個(gè)元素到列表的頭部(左邊)或者尾部(右邊)。
list類(lèi)型經(jīng)常會(huì)被用于消息隊(duì)列的服務(wù)墩朦,以完成多程序之間的消息交換。
常用命令:lpush翻擒、rpush氓涣、lpop、rpop陋气、lrange等劳吠。
列表最多可存儲(chǔ) 232 - 1 元素 (4294967295, 每個(gè)列表可存儲(chǔ)40多億)。
Set(集合)
Redis的Set是string類(lèi)型的無(wú)序集合巩趁。和列表一樣痒玩,在執(zhí)行插入和刪除和判斷是否存在某元素時(shí),效率是很高的议慰。集合最大的優(yōu)勢(shì)在于可以進(jìn)行交集并集差集操作蠢古。Set可包含的最大元素?cái)?shù)量是4294967295。
集合是通過(guò)哈希表實(shí)現(xiàn)的别凹,所以添加草讶,刪除,查找的復(fù)雜度都是O(1)炉菲。
應(yīng)用場(chǎng)景:
1堕战、利用交集求共同好友。
2拍霜、利用唯一性嘱丢,可以統(tǒng)計(jì)訪問(wèn)網(wǎng)站的所有獨(dú)立IP。
3祠饺、好友推薦的時(shí)候根據(jù)tag求交集越驻,大于某個(gè)threshold(臨界值的)就可以推薦。
常用命令:sadd、spop伐谈、smembers烂完、sunion等。
集合中最大的成員數(shù)為 232 - 1(4294967295, 每個(gè)集合可存儲(chǔ)40多億個(gè)成員)诵棵。
zset(sorted set:有序集合)
Redis zset 和 set 一樣也是string類(lèi)型元素的集合,且不允許重復(fù)的成員抠蚣。
不同的是每個(gè)元素都會(huì)關(guān)聯(lián)一個(gè)double類(lèi)型的分?jǐn)?shù)。redis正是通過(guò)分?jǐn)?shù)來(lái)為集合中的成員進(jìn)行從小到大的排序履澳。
zset的成員是唯一的,但分?jǐn)?shù)(score)卻可以重復(fù)嘶窄。
sorted set是插入有序的,即自動(dòng)排序距贷。
常用命令:zadd柄冲、zrange、zrem忠蝗、zcard等现横。
當(dāng)你需要一個(gè)有序的并且不重復(fù)的集合列表時(shí),那么可以選擇sorted set數(shù)據(jù)結(jié)構(gòu)阁最。
應(yīng)用舉例:
(1)例如存儲(chǔ)全班同學(xué)的成績(jī)戒祠,其集合value可以是同學(xué)的學(xué)號(hào),而score就可以是成績(jī)速种。
(2)排行榜應(yīng)用姜盈,根據(jù)得分列出topN的用戶(hù)等。