96SEO 2026-02-20 07:25 0
。

在Redis中#xff0c;可以对列表两端插⼊#xff08;push#xff09…
列表类型是⽤来存储多个有序的字符串列表中的每个字符串称为元素element⼀个列表最多可以存储个2^32
1个元素。
在Redis中可以对列表两端插⼊push和弹出pop还可以获取指定范围的元素列表、获取指定索引下标的元素等。
列表是⼀种⽐较灵活的数据结构它可以充当栈和队列的⻆⾊在实际开发上有很多应⽤场景。
有序的意思是要根据上下文来理解比如有序有时候是在谈它是升序或者是降序。
而List的有序则是在谈其内部元素的顺序如果两个List中所含的元素、个数都是一样但是元素内部里的顺序位置是不同的那么这两个List不是同一个。
在key存在时将⼀个或者多个元素从左侧放⼊头插到list中。
不存在直接返回。
在key存在时将⼀个或者多个元素从右侧放⼊尾插到list中。
尾插效果同头插差不多这里也就不做什么演示了。
在特定位置插⼊元素可以携带选项Before\After选择插入在指定位置的后还是前。
显然此时的end下标已经远远超过了list包含元素的个数但是在redis的处理之中并没有报错而是调整为获取适当范围的元素。
因为List支持高效的头插头删、尾插尾删所以List既可以当做一个栈又可以当做一个队列使用。
在Stream类型没有出来之前Redis有一个典型的应用场景就是把List作为消息队列。
blpop和brpop是lpop和rpop的阻塞版本,和对应⾮阻塞版本的作⽤基本⼀致。
在列表中有元素的情况下阻塞和⾮阻塞表现是⼀致的。
但如果列表中没有元素⾮阻塞版本会理解返回nil但阻塞版本会根据timeout阻塞⼀段时间期间其余redis-cli可以执⾏其他命令但要求执⾏该命令的客⼾端会表现为阻塞状态。
命令中如果设置了多个键那么会从左向右进⾏遍历键⼀旦有⼀个键对应的列表中可以弹出元
如果多个客⼾端同时多⼀个键执⾏pop则最先执⾏命令的客⼾端会得到弹出的元素。
valueO(k),k为pivot距离头尾的距离查找lrange
endO(sn),s为start偏移量n为startend的范围lindex
valueO(n),n是索引偏移量阻塞操作blpop/brpopO(1)
linkedlist:当列表类型⽆法满⾜ziplist的条件时Redis会使⽤linkedlist作为列表的内部实现。
每个⽤⼾都有属于⾃⼰的Timeline微博列表现需要分⻚展⽰⽂章列表。
此时可以考虑使⽤列表因为列表不但是有序的同时⽀持按照索引范围获取元素。
每篇微博使⽤哈希结构存储例如微博中3个属性title、timestamp、content
向⽤⼾Timeline添加微博user:uid:mblogs作为微博的键:
集合类型也是保存多个字符串类型的元素的但和列表类型不同的是元素之间是⽆序且不允许重复。
Redis除了⽀持集合内的增删查改操作同时还⽀持多个集合取交集、并集、差集合理地使⽤好集合类型能在实际开发中解决很多问题。
将⼀个或者多个元素添加到set中。
注意重复的元素⽆法添加到set中。
获取⼀个set的基数cardinality即set中的元素个数。
从set中删除并返回⼀个或者多个元素。
注意由于set内的元素是⽆序的所以取出哪个元素实际是未定义⾏为即可以看作随机的。
Redis中的Set集合也支持求交、求并、求差这里也就不多说什么是交并差的概念了。
SINTERSTORE\SUNIONSTORESDIFFSTORE
我们上述的一系列操作仅仅是将求得的结果输出在显示器上。
但求这些结果更多的时候是需要被保存的。
[key...]\sinterstoreO(m*k),k为多个集合中元素最小的个数m是键个数sunion
[key...]\sunionstoreO(k),k为多个集合的元素总和sdiff
[key...]\sdiffstoreO(k),k为多个集合的元素总和
intset整数集合当集合中的元素都是整数并且元素的个数⼩于set-max-intset-entries配置
默认512个时Redis会选⽤intset来作为集合的内部实现从⽽减少内存的使⽤。
hashtable哈希表当集合类型⽆法满⾜intset的条件时Redis会使⽤hashtable作为集合
集合类型⽐较典型的使⽤场景是标签tag。
例如A⽤⼾对娱乐、体育板块⽐较感兴趣B⽤⼾对历史、新闻⽐较感兴趣这些兴趣点可以被抽象为标签。
许多公司通过用户的这些隐私对于增强⽤⼾体验和⽤⼾黏度都⾮常有帮助。
一旦给某些用户打上标签后通过Set集合的交并差计算很容易找到两个人的共同爱好等相似的行为。
基于这样的标签衍生出用户关系例如谁谁和你有多少个共同好友之类的……
如何衡量一个互联网产品那就是看它的用户量。
计算用户量的指标有两种方案:
每个用户访问服务器产生一个uvuv_count但如果是同一个用户多次请求访问这个服务器uv则不会增加。
所以这个uv的过程自动带有去重的要求Set集合类型正好可以满足需求。
所谓的Zset集合本质是什么其实伙同Set集合差别不大而是新增了权值的概念。
它保留了集合不能有重复成员的其中有序集合中的每个元素都有⼀个唯⼀的浮点类型的分数score与之关联使得有序集合中的元素是可以维护有序性的但这个有序不是⽤下标作为排序依据⽽是⽤这个分数。
有序集合提供了获取指定分数和元素范围查找、计算成员排名等功能合理地利⽤有序集合可以帮助我们在实际开发中解决很多问题。
数据结构重复元素有序无序有序依据应用场景列表List是是索引下标消息队列等Set否否标签、社交等Zset否是分数score排行榜系统等
添加或者更新指定的元素以及关联的分数到zset中分数应该符合double类型。
对于有序集合来说Mermber里的更不像键值对而是一组pair因为它们互相都可以找到对方
CH默认情况下ZADD返回的是本次添加的元素个数但指定这个选项之后就会还包含本次更
INCR此时命令类似ZINCRBY的效果将元素的分数加上指定的分数。
此时只能指定⼀个元素和分数
获取⼀个zset的基数cardinality即zset中的元素个数。
返回分数在min和max之间的元素个数默认情况下min和max都是包含的。
ZRANGE\ZREVRANGE\ZRANGEBYSCORE:
返回指定区间⾥的元素分数按照升序。
带上WITHSCORES可以把分数也返回。
返回指定区间⾥的元素分数按照降序。
带上WITHSCORES可以把分数也返回。
返回分数在min和max之间的元素默认情况下min和max都是包含的。
其中还有BZPOPMIN\BZPOPMAX这两个命令这是它们的阻塞版本也就不再此做过多讲解。
为指定的元素的关联分数添加指定的分数并且会移动元素保证其有序。
ZINTERSTORE\ZUNIONSTORE\ZDIFFSTORE:
求出给定有序集合中元素的交集并保存进⽬标有序集合中在合并过程中以元素为单位进⾏合并元素对应的分数按照不同的聚合⽅式和权重得到新的分数。
求出给定有序集合中元素的并集并保存进⽬标有序集合中在合并过程中以元素为单位进⾏合并元素对应的分数按照不同的聚合⽅式和权重得到新的分数。
求出给定有序集合中元素的差集并保存进⽬标有序集合中在求差集过程中以元素为单位进⾏合并元素对应的分数按照不同的聚合⽅式和权重得到新的分数。
也许你会疑问为什么我们很多命令也是支持多个keys比如说zadd、mget、mset等等为什么这些命令没有要求写明需要多少个key呢
其实你看这些命令的差别就在于Zset有序集合系列如果不写明key有多少个有可能会让key和参数搞混淆。
O(k*log(n))k是删除成员的个数n是当前有序集合的元素个数
memberO(log(n)),n是当前有序集合的个数zrange/zrevrange
[withsocres]O(klog(n))k是删除成员的个数n是当前有序集合的元素个数zcountO(log(n)),n是当前有序集合的个数zremrangebyrank
maxO(klog(n)),k获取成员的个数n是当前有序集合的元素个数
maxO(klog(n)),k获取成员的个数n是当前有序集合的元素个数
ziplistRedis会⽤ziplist来作为有序集合的内部实现ziplist可以有效减少内存的使⽤。
skiplist当ziplist条件不满⾜时有序集合会使⽤skiplist作为内部实现因为此时ziplist的操作效率会下降。
是一种复杂链表它一个节点可能存有多个下个节点的地址。
但并非本节要细说的。
比如说微博热搜、游戏等级排行等等最关键的要点是这些数值是可能随时进行变动的随之而来的排名也会相应进行变化。
当然对于游戏排行榜比如说啥段位、分数、等级十分清晰明了可是遇到复杂度场景比如说微博热搜:
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback