由于列表对象的有序且不可重复的特性 , 它比较适合用来做文章、商品等列表的存储 。
列表类型可以 lpush (左侧push) , 同时又可以使用 rpop (右侧弹出)(查询并删除)第一个元素 , 所以列表类型具有先进先出的特性 , 可以用来实现消息队列 。也可以lpush(左侧push)->lpop(左侧弹出) , 具有后进先出的特性 , 因此开发中需要使用栈的时候 , 我们也可以借助列表对象来实现 。有关Redis列表对象的更详细的介绍 , 可以查看我的这篇文章 。
Redis对象——列表(List)
四、集合(标签系统我在行)集合对象 (Set) 是一个无序并唯一的键值集合 。它的存储顺序不会按照插入的先后顺序进行存储 。与列表所不同的是它存储的数据是无序且不重复的 。
文章插图
集合
集合对象的内部编码也有两种:intset(整数集合)与hashtable(哈希表) 。当满足下面两个条件的时候集合对象使用intset来实现 。
- 集合中的元素都是整数
- 集合中的元素个数小于set-maxintset-entries配置(默认512个)
集合对象的主要几个特性就是 , 无序、不可重复、支持并交差 , 因此可以用来做标签系统 。
而集合的 SPOP(随机移除并返回集合中一个或多个元素) 和 SRANDMEMBER(随机返回集合中一个或多个元素) 命令可以帮助我们实现一个抽奖系统 。
有关Redis集合对象的更详细的介绍 , 可以查看我的这篇文章 。
Redis对象——集合(Set)
五、有序集合(排起名来我最棒)有序集合类型 (Sorted Set或ZSet) 相比于集合类型多了一个排序属性 score(分值) , 对于有序集合 ZSet 来说 , 每个存储元素相当于有两个值组成的 , 一个是有序结合的元素值 , 一个是排序值 。有序集合保留了集合不能有重复成员的特性(分值可以重复) , 但不同的是 , 有序集合中的元素可以排序 。
文章插图
集合
有序集合是由 ziplist (压缩列表) 或 skiplist (跳跃表) 组成的 。
当数据比较少时 , 有序集合使用的是 ziplist 存储的 , 有序集合使用 ziplist 格式存储必须满足以下两个条件:
- 有序集合保存的元素个数要小于 128 个;
- 有序集合保存的所有元素成员的长度都必须小于 64 字节 。
有序集合比较典型的使用场景就是排行榜系统例如学生成绩的排名 。某视频(博客等)网站的用户点赞、播放排名、电商系统中商品的销量排名等
有关Redis有序集合对象的更详细的介绍 , 可以查看我的这篇文章 。
Redis对象——有序集合(ZSet)
小结#Redis提供了五种最基础也是最常用的对象(数据类型):String、Hash、List、Set、ZSet 。了解这五种对象的有助于我们更好的在日常开发中对Redis进行使用 。而通过这篇文章我们可以看到每种对象都是通过多种数据结构来实现的 , 大家可以思考一下为什么
【数据类型 一文了解Reids五大对象】
推荐阅读
- Excel教程:数据列太长,找个数据老是左拖右拽?是时候做点改变了!
- 一文学会redis,就是这么简单
- 支持数据连接池 分享一个简单的C#的通用DbHelper类
- 十一 网络编程懒人入门:一文读懂什么是IPv6
- 如何快速处理网络故障,一文了解网络故障排查方法
- 企业VPN数据传输流量走向解密
- 数据采集技术简介
- Go基本数据类型
- Mysql数据库查询好慢,除了索引,还能因为什么?
- BurpSuite抓取HTTPS数据包