Redis学习(三)--Redis常用数据类型

本文深入解析Redis中的五种主要数据类型:String、Hash、List、Set及SortedSet的特点与应用场景,包括原子性操作、列表排序、集合运算及分数排序等高级功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一 .Redis常用的数据类型

  • String:最基本的数据类型,二进制安全。

       就是我们常用的key-value键值对,值最大能存储512M。

       String是二进制安全的表示,Redis的String可以包含任何数据,如jpg图片,或者序列化文件。

       (1)如使用命令set name "kimtian"  给name字段赋值kimtian。

                        使用 get name 命令获取name的值。

                        再次给name字段赋值为tianjinjiang。

                        再次使用get name获取name值,可以看到name值变更了

  (2)也可以是数字。

            如使用命令set count 1 给count赋值为1。

            使用get count命令获取count值。

            使用incr count 命令给count值加1。

            再次使用get count命令获取count值,可以看到该值被加1,变为了2。

  (3) redis的单个操作都是原子性的,原子性的意思就是一个事务是一个不可分割的最小工作单位。事务中包含的诸多操作,要么都做,要么都不做。redis命令的原子性,使得我们不用考虑并发问题,可以方便的利用原子性自增操作incr,来实现简单的计数功能,结合上面的incr能够满足计数器的需要。

  (4)redis的String是可以包含任何数据的,如jpg图片、序列化的对象等等。redis的String类型之所以支持存储如此多的数据类型,离不开其底层的简单动态字符串sds。

           其中buf数组是用来存储内容的;len是用来存储buf已使用的空间的;free是用来记录buf的剩余的空间。

  • Hash:String元素组成的字典,适合用于存储对象。

       如使用hmset给tianjinjiang赋值name "kimtian" age 25 sex "girl"

       可以使用hget tianjinjiang name/age/sex 分别获取其各个属性的值。

       redis的hash和平时的实体类很相似,有属性,并且可以通过getter或setter去获取或者给属性赋值。如我们平时用的json,使用redis的Hash用来存储则十分合适。

  • List:列表,按照String元素插入顺序排序。可以添加一个元素到列表的头部即左边,也可以添加一个元素到列表的尾部,即右边。

       先往mylist里面放入aaa、bbb、ccc三个值,再使用 lrange mylist 1 10来取出第0-10个数据,不够十个则取出所有。

     可以看出这个list是后进先出的,类似于栈。 和刚才的映射表类似,大约能存储40亿个成员。

     可以用来实现最新消息排行榜等功能,越新的消息排的越靠前。

  • Set:String元素组成的无序集合,通过hash表可以实现,不允许重复。添加、删除、查找的复杂度都是O(1)。

       通过sadd去添加一个String元素到set中,如果添加成功则返回1,如果已经存在则返回0。

       使用smembers指令,可以查看set中的元素,可以看到虽然添加了两次111,但根据集合内元素的唯一性,第二次插入的元素将被忽略,实际集合中只有一个111。

       同时set内的数据是无序的。redis为集合提供了求交集、并集、差集等操作。如将粉丝等放入一个集合中,就可以非常方便的实现共同关注,共同爱好等功能。

 

  • Sorted Set:通过分数来为集合中的成员进行从小到大的排序。和Set一样,不允许重复成员 。

       每个元素都会关联一个double类型的分数,redis通过分数来为集合中的成员进行从小到大的排序。

       zset中的成员是唯一的,但分数是可以重复的。

       如图所示我们abf不可以添加第二次,第二次添加返回0。但分数同为1的两个数是可以插入的。

      分数越小,越往前排。可以使用zrangebyscore mzset 0 10可以按照分数将zset中的值进行排序。

      实际应用:如将学生的学号和成绩插入zset中,就已经根据分数进行了天然的排序。

  • 用来计数的HyperLogLog,用于支持存储地理位置信息的Geo。

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值