Redis五种数据类型有哪些?
redis的5种数据类型
1. string 字符串(可以为整形、浮点型和字符串,统称为元素)
2. list 列表(实现队列,元素不唯⼀,先⼊先出原则)
3. set 集合(各不相同的元素)
4. hash hash散列值(hash的key必须是唯⼀的)
5. sort set 有序集合
1.string类型的常⽤命令
使⽤场景:常规key-value缓存应⽤。常规计数: 微博数, 粉丝数。
实现⽅式:String在redis内部存储默认就是⼀个字符串,被redisObject所引⽤,
当遇到incr,decr等操作时会转成数值型进⾏计算,此时redisObject的encoding字段为int。
⾃加:incr ⾃减:decr 加: incrby 减: decrby
2.list类型⽀持的常⽤命令
应⽤场景:Redis list的应⽤场景⾮常多,也是Redis最重要的数据结构之⼀,⽐如twitter的关注列表,粉丝列表等都可以⽤Redis的list结构来实现。
实现⽅式:Redis list的实现为⼀个双向链表,即可以⽀持反向查和遍历,更⽅便操作,不过带来了部分额外的内存开销,Redis内部的很多实现,包括发送缓冲队列等也都是⽤的这个数据结构。
lpush:从左边推⼊lpop:从右边弹出rpush:从右变推⼊rpop:从右边弹出
llen:查看某个list数据类型的长度
3.set类型⽀持的常⽤命令
redis支持的数据结构⽤来保存多个字符串的元素,但不允许有重复的元素,且集合中的元素是 ⽆序的,不能通过索引下标获取元素,redis除了⽀持集合内的增删改查,同时还⽀持多个集合取交集、并集、 差集,并合理的使⽤好集合类型,能在实际开发中解决很多实际问题。
使⽤场景
标签(tag):集合类型⽐较典型的使⽤场景,如⼀个⽤户对娱乐、体育⽐较感兴趣,另⼀个可能对新闻感兴 趣,这些兴趣就是标签,有了这些数据就可以得到同⼀标签的⼈,以及⽤户的共同爱好的标签,这些数据对于⽤户体验以及曾强⽤户粘度⽐较重要。(⽤户和标签的关系维护应该放在⼀个事物内执⾏,防⽌部分命令失败造成数据不⼀致)sadd=tagging(标签)
spop/srandmember=random item(⽣成随机数,⽐如抽奖)
sadd+sinter=social Graph(社交需求)
sadd:添加数据
scard:查看set数据中存在的元素个数
sismember:判断set数据中是否存在某个元素
srem:删除某个set数据中的元素
4.hash数据类型⽀持的常⽤命令
在redis中哈希类型是指键本⾝⼜是⼀种键值对结构value={{field1,value1},......{fieldN,valueN}}
使⽤场景:哈希结构相对于字符串序列化缓存信息更加直观,并且在更新操作上更加便捷。所以常常⽤于**⽤户信息**等管理,但是哈希类型和关系型数据库有所不同,哈希类型是稀疏的,⽽关系型数据库是完全结构化的,关系型数据库可以做复杂的关系查询,⽽redis去模拟关系型复杂查询,开发困难,维护成本⾼。
hset:添加hash数据hget:获取hash数据
hmget:获取多个hash数据
5.sort set和hash很相似,也是映射形式的存储
有序集合和集合有着必然的联系,他保留了集合不能有重复成员的特性,但不同得是,有序集合中的元素是可以排序的,但是它和列表的使⽤索引下标作为排序依据不同的是,它给每个元素设置⼀个分数,作为排序的依据。(有序集合中的元素不可以重复,但是csore可以重复,就和⼀个班⾥的同学学号不能重复,但考试成绩可以相同)。列表、集合、有序集合三者的异同点
zadd:添加zcard:查询zrange:数据排序
使⽤场景
排⾏榜:有序集合经典使⽤场景。例如视频⽹站需要对⽤户上传的视频做排⾏榜,榜单维护可能是多⽅⾯: 按照时间、按照播放量、按照获得的赞数等。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论