Redis 五种数据类型有哪些?

2021/7/5 19:17:56

本文主要是介绍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除了支持集合内的增删改查,同时还支持多个集合取交集、并集、 差集,并合理的使用好集合类型,能在实际开发中解决很多实际问题。

使用场景

 标签(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:数据排序

使用场景

排行榜:有序集合经典使用场景。例如视频网站需要对用户上传的视频做排行榜,榜单维护可能是多方面: 按照时间、按照播放量、按照获得的赞数等。



这篇关于Redis 五种数据类型有哪些?的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程