【Redis从头学-5】Redis中的List数据类型实战场景之天猫热销榜单

这篇具有很好参考价值的文章主要介绍了【Redis从头学-5】Redis中的List数据类型实战场景之天猫热销榜单。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

🧑‍💻作者名称:DaenCode
🎤作者简介:啥技术都喜欢捣鼓捣鼓,喜欢分享技术、经验、生活。
😎人生感悟:尝尽人生百味,方知世间冷暖。
📖所属专栏:Redis从头学


【Redis从头学-5】Redis中的List数据类型实战场景之天猫热销榜单,Redis从头学,redis,list,缓存


🌟前言

之前的篇章对Redis的String数据类型已经做出了具体分析,并举例说明了其具体的实战场景本文就结合List数据类型结构的特性,一起探讨其实战中的应用场景,并以天猫热销榜单为例。

🌟List数据类型分析

Redis中的List数据类型是一种有序、可重复、可变长度的数据结构。它支持在列表的两端进行快速的插入、删除和查找操作,因此非常适合用于处理队列、栈以及任务列表等场景。
List数据类型可以存储多个相同或不同类型的元素,并且可以按照插入顺序进行访问。Redis提供了一系列的命令来操作List,包括向列表头部或尾部插入元素、在指定位置插入元素、获取指定位置的元素、删除列表中的元素等。有关其操作命令请参照【Redis从头学-3】5个表格带你学会使用Redis五大数据类型常用命令

List数据类型的主要特点:

  1. 有序性:列表中的元素按照插入顺序排列,可以根据索引位置进行访问。
  2. 可重复性:列表允许存储重复的元素。
  3. 动态长度:列表可以根据需要进行动态扩展或收缩,没有固定的长度限制。
  4. 快速操作:插入和删除元素的时间复杂度为O(1),在列表头部和尾部进行插入和删除操作非常高效。

🌟List类型实战应用场景

通过上述对List类型的分析,可以结合实际需求选择适合List类型结构的场景。本文主要演示排行榜功能的演示代码。

  • 消息队列:可以通过List实现简单的消息队列,将消息按顺序插入到列表尾部,消费者从列表头部取出消息进行处理。
  • 时间线:将新的动态信息按照时间顺序插入到列表头部,就可以实现类似社交媒体的时间线功能。
  • 排行榜:可以对热销的商品进行榜单排序。

热销榜单功能

生活中的例子

【Redis从头学-5】Redis中的List数据类型实战场景之天猫热销榜单,Redis从头学,redis,list,缓存

排序规则

【Redis从头学-5】Redis中的List数据类型实战场景之天猫热销榜单,Redis从头学,redis,list,缓存

仿造示例

通过上述生活中的例子,来描述一个热销榜单的应用场景。实际场景要比这个复杂的多哦,这里只是感受List数据类型的结构
实现步骤

  • 创建一个洗面奶实体类WashMilk。字段内容包含字段包含id、品牌名称、好评率、成交额、回购人数、累计销量等。
  • 按照加权平均算法得出综合权衡的平均值。根据好评率、成交额、回购人数、累计销量因素,对洗面奶进行排序。
  • 存入Redis中。使用rightPushAll。因为排序是按降序排序的,所有要从右插入,最大值才能展现在第一个。
若序列为:54321。则按右插法,最终结果为
5
4
3
2
1
左插法,结果为:
1
2
3
4
5

加权平均算法介绍

加权平均算法(Weighted Average Algorithm)是一种常见的统计算法,用于计算一组数据的加权平均值。在加权平均算法中,每个数据点都有一个对应的权重,权重可以表示数据的重要性或贡献度。
加权平均算法的计算公式如下:
加权平均值 = (数据点1 × 权重1 + 数据点2 × 权重2 + ... + 数据点n × 权重n) / (权重1 + 权重2 + ... + 权重n)
其中,数据点1、数据点2等表示要计算加权平均值的数据点,权重1、权重2等表示对应数据点的权重。
加权平均算法适用于以下场景:

  1. 数据点具有不同的重要性或权重,需要考虑这些差异并进行加权处理。
  2. 某些数据点可能对结果产生较大的影响,而某些数据点可能对结果影响较小,需要根据权重进行调节。
  3. 数据点的权重可能随时间、条件或其他因素而变化,可以动态调整计算结果。
    举例来说,假设你要计算一组考试成绩的加权平均值,其中不同科目的权重不同,例如数学的权重为0.4,英语的权重为0.3,物理的权重为0.3。
    你可以按照如下方式计算加权平均值:
    加权平均值 = (数学成绩 × 0.4 + 英语成绩 × 0.3 + 物理成绩 × 0.3) / (0.4 + 0.3 + 0.3)
    通过加权平均算法,可以根据不同数据点的权重,将其贡献度考虑在内,得出一个综合权衡的平均值。这个平均值更能反映数据的实际情况和重要性。

简易代码

@Test
	void hotRank(){
		String DAILY_RANK_KEY="hotRank:daily";
		//模拟数据库查询到的数据
		WashMilk washMilk=new WashMilk(1,"香奈儿",0.65,10000,800,100000);
		WashMilk washMilk2=new WashMilk(2,"至本",0.85,60040,10000,25465);
		WashMilk washMilk3=new WashMilk(3,"兰蔻",0.60,343543,6000,4534);
		WashMilk washMilk4=new WashMilk(4,"雅诗兰黛",0.67,50000,800,3655);
		WashMilk washMilk5=new WashMilk(5,"欧莱雅",0.99,10000,40000,42443);
		WashMilk washMilk6=new WashMilk(6,"薇姿",0.65,32443,800,43244);
		WashMilk washMilk7=new WashMilk(7,"娇韵诗",0.82,10000,800,5435654);
		WashMilk washMilk8=new WashMilk(8,"相宜本草",0.95,65476,3214,4000);
		WashMilk washMilk9=new WashMilk(9,"佰草集",0.90,432535,800,3435);
		WashMilk washMilk10=new WashMilk(10,"倩碧",0.75,23423,4356,180000);
		List<WashMilk> washMilkList=new ArrayList<>();
		//将数据添加到list集合。
		Stream.of(washMilk,washMilk2,washMilk3,washMilk4,washMilk5,washMilk6,washMilk7,washMilk8,washMilk9,washMilk10).
				forEach(washMilkList::add);
		//通过加权平均法,对上述洗面奶综合排序
		Collections.sort(washMilkList, new Comparator<WashMilk>() {
			@Override
			public int compare(WashMilk o1, WashMilk o2) {
				double wm1Score = o1.getGoodRate() * 0.4 + o1.getTurnover() * 0.3 + o1.getRepurchaseCount() * 0.2 + o1.getTotalSales() * 0.1;
				double wm2Score = o2.getGoodRate() * 0.4 + o2.getTurnover() * 0.3 + o2.getRepurchaseCount() * 0.2 + o2.getTotalSales() * 0.1;
				return Double.compare(wm2Score, wm1Score); // 按照降序排序
			}
		});
		//存入到redis中
		redisTemplate.opsForList().rightPushAll(DAILY_RANK_KEY,washMilkList);
		System.out.println(redisTemplate.opsForList().range(DAILY_RANK_KEY,0,-1));
	}

最终效果

最终效果展示如下图所示
【Redis从头学-5】Redis中的List数据类型实战场景之天猫热销榜单,Redis从头学,redis,list,缓存

🌟写在最后

有关于Redis中的List数据类型实战应用场景到此就结束了。功能演示代码的逻辑简单,目的是理解List数据类型的应用,实际场景的逻辑根据具体需求而定。感谢大家的阅读,希望大家在评论区对此部分内容散发讨论,便于学到更多的知识。


【Redis从头学-5】Redis中的List数据类型实战场景之天猫热销榜单,Redis从头学,redis,list,缓存文章来源地址https://www.toymoban.com/news/detail-659343.html

到了这里,关于【Redis从头学-5】Redis中的List数据类型实战场景之天猫热销榜单的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Redis常用数据类型和使用场景

    Redis目前支持5种数据类型,分别是:     String(字符串) List(列表) Hash(字典) Set(集合) Sorted Set(有序集合) 下面就分别介绍这五种数据类型及其相应的操作命令。   1. String(字符串) String是简单的 key-value 键值对,value 不仅可以是 String,也可以是数字。String在r

    2024年02月16日
    浏览(31)
  • Redis五大基本数据类型及其使用场景

    Nosql = not only sql(不仅仅是SQL) 关系型数据库:列+行,同一个表下数据的结构是一样的。 非关系型数据库:数据存储没有固定的格式,并且可以进行横向扩展。 NoSQL泛指非关系型数据库,随着web2.0互联网的诞生,传统的关系型数据库很难对付web2.0大数据时代!尤其是超大规

    2024年02月12日
    浏览(28)
  • 【Redis】九种数据类型及应用场景

    Redis是一个开源的,基于内存的数据结构存储系统,可以用作数据库、缓存和消息中间件。它支持多种数据类型,包括字符串(String)、哈希表(Hash)、列表(List)、集合(Set)、有序集合(ZSet )、地理空间(Geo)、位图(Bitmaps)、基数统计(HyperLogLog)、流信息(Stream

    2024年01月19日
    浏览(28)
  • Redis的五大数据类型及其使用场景

    redis是一个非常快速‎‎的非关系数据库‎‎解决方案。其简单的键值数据模型使 Redis 能够处理大型数据集,同时保持令人印象深刻的读写速度和可用性。‎redis提供了五种数据类型,分别是是:1、string(字符串);2、hash(哈希);3、list(列表);4、set(集合);5、sor

    2024年02月16日
    浏览(31)
  • Redis基本数据类型常用操作以及使用场景

    单值缓存 对象缓存 分布式锁 计数器 分布式系统全局序列号       对象缓存 电商购物车 优缺点 队列 微博消息和微信公号消息  微信抽奖小程序  微信微博点赞,收藏,标签   集合操作实现微博微信关注模型 集合操作实现电商商品筛选  常用操作  Zset集合操作实现排行

    2024年02月11日
    浏览(33)
  • Redis数据类型(list\set\zset)

    \\\"maybe it\\\'s why\\\"          列表类型是⽤来存储多个 有序 的字符串,列表中的每个字符串称为元素(element),⼀个列表最多可以存储个2^32 - 1个元素。在Redis中,可以对列表两端插⼊(push)和弹出(pop),还可以获取指定范围的元素列表、获取指定索引下标的元素等。列表是

    2024年02月11日
    浏览(27)
  • 【分享】Redis的五种基本数据类型和应用场景

    Redis支持五种基本数据类型: String(字符串类型):可以是普通字符串,也可以是整数或浮点数值。可以设置过期时间;可以对字符串进行append、get、set、incr、decr等操作。 Hash(哈希类型):类似于一个数组,其中每个元素都是一个field和value的键值对。可以对整个哈希表或

    2024年02月16日
    浏览(31)
  • 【Redis】1、学习 Redis 的五大基本数据类型【String、Hash、List、Set、SortedSet】

    🍀 Redis 诞生于2009年,全称是 Re mote D ictionary S erver,远程字典服务器,是一个基于 内存的键值型 NoSQL 数据库 🍀 键值(key-value)型,value 支持多种不同数据结构,功能丰富 🍀 单线程,每个命令具备 原子性 🍀 低延迟,速度快(基于内存、IO 多路复用、良好的编码) 🍀支

    2024年02月11日
    浏览(30)
  • Redis的五种数据类型(string、hash 、list、set、zset)

                     Redis 提供了丰富的数据类型,常见的有五种: String(字符串),Hash(哈希),List(列表),Set(集合)、Zset(有序集合) 。         String 是最基本的 key-value 结构,key 是唯一标识,value 是具体的值,value其实不仅是字符串, 也可以是数字(整

    2024年01月25日
    浏览(37)
  • Redis 数据类型及其常用命令一(string、list、set、zset、hash)

    1、简介         Redis 的常用数据类型有十种,分别为:string、list、set、zset、hash、geo、hyperloglog、bitmap、bitfield、stream。熟练使用各种数据类型,能够快速结合场景进行使用。 注:我们所说的数据类型是指 value 的数据类型,key 都是字符串。 所有类型的命令查看:help @数据类

    2024年03月13日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包