springboot 整合redis,实现商品排行榜更新

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: springboot 整合redis,实现商品排行榜更新

在现代电子商务平台中,商品排行榜是一个非常重要的功能,它可以帮助用户快速找到热门商品并提高用户的购买欲望。通过整合Spring Boot和Redis,可以实现高效的商品排行榜更新和查询。以下是整合过程和关键代码的详细描述。

整合步骤

1. 创建Spring Boot项目

首先,使用Spring Initializr创建一个新的Spring Boot项目。在项目中添加以下依赖:

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-redis</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>

2. 配置Redis

application.yml中添加Redis的配置信息:

spring:
  redis:
    host: localhost
    port: 6379

3. 创建Redis配置类

创建一个配置类来配置Redis连接工厂和Redis模板。

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.GenericToStringSerializer;
 
@Configuration
public class RedisConfig {
 
    @Bean
    public RedisConnectionFactory redisConnectionFactory() {
        return new LettuceConnectionFactory();
    }
 
    @Bean
    public RedisTemplate<String, Object> redisTemplate() {
        RedisTemplate<String, Object> template = new RedisTemplate<>();
        template.setConnectionFactory(redisConnectionFactory());
        template.setValueSerializer(new GenericToStringSerializer<>(Object.class));
        return template;
    }
}

4. 创建商品实体类

创建一个商品实体类,用于表示商品信息。

public class Product {
 
    private String id;
    private String name;
    private int sales;
 
    // getters and setters
}

5. 创建Redis服务类

创建一个服务类,用于与Redis交互

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
 
import java.util.List;
import java.util.Set;
 
@Service
public class ProductService {
 
    @Autowired
    private RedisTemplate<String, Object> redisTemplate;
 
    private static final String PRODUCT_RANK_KEY = "product_rank";
 
    public void updateProductSales(String productId, int sales) {
        redisTemplate.opsForZSet().incrementScore(PRODUCT_RANK_KEY, productId, sales);
    }
 
    public Set<Object> getTopProducts(int top) {
        return redisTemplate.opsForZSet().reverseRange(PRODUCT_RANK_KEY, 0, top - 1);
    }
}

6. 创建控制器类

创建一个控制器类,提供API接口用于更新商品销售量和获取排行榜。

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
 
import java.util.Set;
 
@RestController
@RequestMapping("/products")
public class ProductController {
 
    @Autowired
    private ProductService productService;
 
    @PostMapping("/updateSales")
    public void updateSales(@RequestParam String productId, @RequestParam int sales) {
        productService.updateProductSales(productId, sales);
    }
 
    @GetMapping("/top")
    public Set<Object> getTopProducts(@RequestParam int top) {
        return productService.getTopProducts(top);
    }
}

7. 测试功能

运行Spring Boot应用程序,使用以下curl命令测试API接口。

更新商品销售量:

curl -X POST "http://localhost:8080/products/updateSales?productId=1&sales=10"

获取排行榜:

curl -X GET "http://localhost:8080/products/top?top=10"

关键代码解析

Redis配置类

Redis配置类RedisConfig用于配置Redis连接工厂和Redis模板。Lettuce是Spring Data Redis的默认客户端,具有高性能和非阻塞IO的优点。通过设置Redis模板的序列化器,确保Redis中的数据以正确的格式存储和读取。

商品实体类

商品实体类Product包含商品的基本信息,如ID、名称和销售量。通过getters和setters方法,可以轻松获取和设置商品属性。

Redis服务类

Redis服务类ProductService负责与Redis交互。通过RedisTemplate提供的操作,可以方便地更新商品的销售量并获取商品排行榜。


updateProductSales方法:使用incrementScore方法根据商品ID更新商品的销售量。

getTopProducts方法:使用reverseRange方法获取销售量最高的前N个商品。

控制器类

控制器类ProductController提供RESTful API接口,供前端或其他服务调用。


updateSales方法:接收商品ID和销售量参数,调用ProductService的updateProductSales方法更新商品销售量。

getTopProducts方法:接收前N个商品的参数,调用ProductService的getTopProducts方法获取商品排行榜。

通过以上步骤和代码示例,可以成功地在Spring Boot项目中整合Redis,并实现商品排行榜的更新和查询功能。Redis作为一个高性能的内存数据库,可以极大地提高商品排行榜的响应速度和更新效率。


相关文章
|
6月前
|
NoSQL Java 关系型数据库
微服务——SpringBoot使用归纳——Spring Boot 中集成Redis——Redis 介绍
本文介绍在 Spring Boot 中集成 Redis 的方法。Redis 是一种支持多种数据结构的非关系型数据库(NoSQL),具备高并发、高性能和灵活扩展的特点,适用于缓存、实时数据分析等场景。其数据以键值对形式存储,支持字符串、哈希、列表、集合等类型。通过将 Redis 与 Mysql 集群结合使用,可实现数据同步,提升系统稳定性。例如,在网站架构中优先从 Redis 获取数据,故障时回退至 Mysql,确保服务不中断。
266 0
微服务——SpringBoot使用归纳——Spring Boot 中集成Redis——Redis 介绍
|
6月前
|
缓存 NoSQL Java
基于SpringBoot的Redis开发实战教程
Redis在Spring Boot中的应用非常广泛,其高性能和灵活性使其成为构建高效分布式系统的理想选择。通过深入理解本文的内容,您可以更好地利用Redis的特性,为应用程序提供高效的缓存和消息处理能力。
501 79
|
7月前
|
NoSQL Java Redis
Springboot使用Redis实现分布式锁
通过这些步骤和示例,您可以系统地了解如何在Spring Boot中使用Redis实现分布式锁,并在实际项目中应用。希望这些内容对您的学习和工作有所帮助。
674 83
|
3月前
|
机器学习/深度学习 数据采集 人机交互
springboot+redis互联网医院智能导诊系统源码,基于医疗大模型、知识图谱、人机交互方式实现
智能导诊系统基于医疗大模型、知识图谱与人机交互技术,解决患者“知症不知病”“挂错号”等问题。通过多模态交互(语音、文字、图片等)收集病情信息,结合医学知识图谱和深度推理,实现精准的科室推荐和分级诊疗引导。系统支持基于规则模板和数据模型两种开发原理:前者依赖人工设定症状-科室规则,后者通过机器学习或深度学习分析问诊数据。其特点包括快速病情收集、智能病症关联推理、最佳就医推荐、分级导流以及与院内平台联动,提升患者就诊效率和服务体验。技术架构采用 SpringBoot+Redis+MyBatis Plus+MySQL+RocketMQ,确保高效稳定运行。
246 0
|
6月前
|
存储 人工智能 NoSQL
SpringBoot整合Redis、ApacheSolr和SpringSession
本文介绍了如何使用SpringBoot整合Redis、ApacheSolr和SpringSession。SpringBoot以其便捷的配置方式受到开发者青睐,通过引入对应的starter依赖,可轻松实现功能整合。对于Redis,可通过配置RedisSentinel实现高可用;SpringSession则提供集群Session管理,支持多种存储方式如Redis;整合ApacheSolr时,借助Zookeeper搭建SolrCloud提高可用性。文中详细说明了各组件的配置步骤与代码示例,方便开发者快速上手。
108 11
|
编解码 NoSQL Java
使用Spring Boot + Redis 队列实现视频文件上传及FFmpeg转码的技术分享
【8月更文挑战第30天】在当前的互联网应用中,视频内容的处理与分发已成为不可或缺的一部分。对于视频平台而言,高效、稳定地处理用户上传的视频文件,并对其进行转码以适应不同设备的播放需求,是提升用户体验的关键。本文将围绕使用Spring Boot结合Redis队列技术来实现视频文件上传及FFmpeg转码的过程,分享一系列技术干货。
713 4
|
8月前
基于springboot+thymeleaf+Redis仿知乎网站问答项目源码
基于springboot+thymeleaf+Redis仿知乎网站问答项目源码
254 36
|
6月前
|
NoSQL Java API
微服务——SpringBoot使用归纳——Spring Boot 中集成Redis——Spring Boot 集成 Redis
本文介绍了在Spring Boot中集成Redis的方法,包括依赖导入、Redis配置及常用API的使用。通过导入`spring-boot-starter-data-redis`依赖和配置`application.yml`文件,可轻松实现Redis集成。文中详细讲解了StringRedisTemplate的使用,适用于字符串操作,并结合FastJSON将实体类转换为JSON存储。还展示了Redis的string、hash和list类型的操作示例。最后总结了Redis在缓存和高并发场景中的应用价值,并提供课程源代码下载链接。
1623 0
|
6月前
|
NoSQL Java Redis
微服务——SpringBoot使用归纳——Spring Boot 中集成Redis——Redis 安装
本教程介绍在 VMware 虚拟机(CentOS 7)或阿里云服务器中安装 Redis 的过程,包括安装 gcc 编译环境、下载 Redis(官网或 wget)、解压安装、修改配置文件(如 bind、daemonize、requirepass 等设置)、启动 Redis 服务及测试客户端连接。通过 set 和 get 命令验证安装是否成功。适用于初学者快速上手 Redis 部署。
138 0
|
10月前
|
NoSQL Java API
springboot项目Redis统计在线用户
通过本文的介绍,您可以在Spring Boot项目中使用Redis实现在线用户统计。通过合理配置Redis和实现用户登录、注销及统计逻辑,您可以高效地管理在线用户。希望本文的详细解释和代码示例能帮助您在实际项目中成功应用这一技术。
367 4