【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数据类型详解与应用场景

    目录 1. 字符串(String) 1.1 使用场景 1.2 代码示例 2. 列表(List) 2.1 使用场景 2.2 代码示例 3. 集合(Set) 3.1 使用场景 3.2 代码示例 4. 散列(Hash) 4.1 使用场景 4.2 代码示例 5. 有序集合(Sorted Set) 5.1 使用场景 5.2 代码示例 6. 二进制位图(Bitmap) 6.1 使用场景 6.2 代码示例 7.

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

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

    2024年02月12日
    浏览(39)
  • Redis的五大数据类型及其使用场景

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    2024年03月13日
    浏览(58)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包