Redis数据类型和用途

redis支持五种数据类型:字符串、哈希表、列表、集合和有序集合。

下面介绍这几种数据类型分别能实现哪些功能。

字符串(String)

使用setnx实现。

setnx key value,只有在key不存在时,将key的值设置为value。

设置成功(key不存在)返回1,设置失败返回0。

setnx获取锁:如果返回1,获取成功;如果返回0,则锁已经被其他线程获取。

del释放锁。

ID生成器

使用incr实现。

incr key,为key存储的值上加1。

哈希表(Hash)

生成短网址

使用hset实现。

hset hash field value,将哈希表hash中域field的值设置为value。hash找到哈希表,field找到此哈希表中对应的key-value。

通过incr生成唯一id,再将id转成36进制,然后将得到的值做field,真实网址做value,存到redis中。

通过hget取出真实网址。

列表(List)

先进先出队列

使用rpush,lpop实现

rpush key value,将值插入列表key的尾部。

lpop key,移除并返回列表key的头元素。

带阻塞功能的先进先出队列

使用rpush,blpop实现

rpush key value,将值插入列表key的尾部。

blpop key timeout,当列表内没有任何元素可以弹出的时候,blpop将会阻塞,等待timeout时间或者发现可弹出元素为止。

集合(Set)

点赞功能

使用sadd,srem实现。

sadd key member,往集合key中添加member元素。如果集合中没有此member,添加成功,返回1,表示点赞成功。如果集合中有此member,添加失败,返回0,表示点赞无效(不能重复点赞)。

srem key member,移除集合key中的member元素,表示取消点赞。

注意:redis中的Set是String类型的无序集合

抽奖功能

使用sadd,srandmember实现。

sadd key member,往集合key中添加member元素。表示所有的抽奖用户。可以使用smembers key查询集合中所有成员。

srandmember key,返回集合中的一个随机元素。从2.6版本开始,可以使用srandmember key count同时返回几个随机元素。

如果抽过奖的元素不能再此抽奖,可以使用spop key移除并返回集合中的一个随机元素。

有序集合(sorted set)

排行榜

使用zadd,zrange实现。

zadd key score member,将一个member元素及其score值加入到有序集合key中。score值可以是整数或者浮点数。

zrange key start stop withscores,返回一个递增集合(score从小到大),下标从start开始到stop结束,0表示第一个元素,1表示第二个元素,-1表示最后一个元素,-2表示倒数第二个元素。withscores表示成员和score一起返回。

如果需要返回递减集合,可以使用zrevrange key start stop withscores来实现。

zrank key member,返回有序集合key中成员member的排名。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。