redis支持五種數(shù)據(jù)類型:字符串简肴、哈希表贮缅、列表榨咐、集合和有序集合。
下面介紹這幾種數(shù)據(jù)類型分別能實(shí)現(xiàn)哪些功能谴供。
字符串(String)
鎖
使用setnx實(shí)現(xiàn)块茁。
setnx key value
,只有在key不存在時(shí)憔鬼,將key的值設(shè)置為value龟劲。
設(shè)置成功(key不存在)返回1胃夏,設(shè)置失敗返回0轴或。
setnx獲取鎖:如果返回1,獲取成功仰禀;如果返回0照雁,則鎖已經(jīng)被其他線程獲取。
del釋放鎖答恶。
ID生成器
使用incr實(shí)現(xiàn)饺蚊。
incr key
,為key存儲(chǔ)的值上加1悬嗓。
哈希表(Hash)
生成短網(wǎng)址
使用hset實(shí)現(xiàn)污呼。
hset hash field value
,將哈希表hash中域field的值設(shè)置為value包竹。hash找到哈希表燕酷,field找到此哈希表中對(duì)應(yīng)的key-value。
通過(guò)incr生成唯一id周瞎,再將id轉(zhuǎn)成36進(jìn)制苗缩,然后將得到的值做field,真實(shí)網(wǎng)址做value声诸,存到redis中酱讶。
通過(guò)hget取出真實(shí)網(wǎng)址。
列表(List)
先進(jìn)先出隊(duì)列
使用rpush,lpop實(shí)現(xiàn)
rpush key value
彼乌,將值插入列表key的尾部泻肯。
lpop key
,移除并返回列表key的頭元素慰照。
帶阻塞功能的先進(jìn)先出隊(duì)列
使用rpush,blpop實(shí)現(xiàn)
rpush key value
软免,將值插入列表key的尾部。
blpop key timeout
焚挠,當(dāng)列表內(nèi)沒(méi)有任何元素可以彈出的時(shí)候膏萧,blpop將會(huì)阻塞,等待timeout時(shí)間或者發(fā)現(xiàn)可彈出元素為止。
集合(Set)
點(diǎn)贊功能
使用sadd,srem實(shí)現(xiàn)榛泛。
sadd key member
蝌蹂,往集合key中添加member元素。如果集合中沒(méi)有此member曹锨,添加成功孤个,返回1,表示點(diǎn)贊成功沛简。如果集合中有此member齐鲤,添加失敗,返回0椒楣,表示點(diǎn)贊無(wú)效(不能重復(fù)點(diǎn)贊)给郊。
srem key member
,移除集合key中的member元素捧灰,表示取消點(diǎn)贊淆九。
注意:redis中的Set是String類型的無(wú)序集合
抽獎(jiǎng)功能
使用sadd,srandmember實(shí)現(xiàn)。
sadd key member
毛俏,往集合key中添加member元素炭庙。表示所有的抽獎(jiǎng)用戶』涂埽可以使用smembers key
查詢集合中所有成員焕蹄。
srandmember key
,返回集合中的一個(gè)隨機(jī)元素阀溶。從2.6版本開(kāi)始腻脏,可以使用srandmember key count
同時(shí)返回幾個(gè)隨機(jī)元素。
如果抽過(guò)獎(jiǎng)的元素不能再此抽獎(jiǎng)淌哟,可以使用spop key
移除并返回集合中的一個(gè)隨機(jī)元素迹卢。
有序集合(sorted set)
排行榜
使用zadd,zrange實(shí)現(xiàn)。
zadd key score member
徒仓,將一個(gè)member元素及其score值加入到有序集合key中腐碱。score值可以是整數(shù)或者浮點(diǎn)數(shù)。
zrange key start stop withscores
掉弛,返回一個(gè)遞增集合(score從小到大)症见,下標(biāo)從start開(kāi)始到stop結(jié)束,0表示第一個(gè)元素殃饿,1表示第二個(gè)元素谋作,-1表示最后一個(gè)元素,-2表示倒數(shù)第二個(gè)元素乎芳。withscores表示成員和score一起返回遵蚜。
如果需要返回遞減集合帖池,可以使用zrevrange key start stop withscores
來(lái)實(shí)現(xiàn)。
zrank key member
吭净,返回有序集合key中成員member的排名睡汹。