基于SpringBoot+redis如何实现一个点赞功能?

本文介绍了基于SpringBoot和redis实现点赞功能的详细过程,包括Redis缓存设计、数据库设计、数据库操作以及定时任务持久化存储。通过Redis存储点赞状态,使用Hash数据结构,并通过Quartz定时任务将Redis中的数据定时写入数据库。
摘要由CSDN通过智能技术生成

Python微信订餐小程序课程视频

https://edu.csdn.net/course/detail/36074

Python实战量化交易理财系统

https://edu.csdn.net/course/detail/35475

基于SpringBoot+redis如何实现一个点赞功能?

解析:

基于 SpringCloud, 用户发起点赞、取消点赞后先存入 Redis 中,再每隔两小时从 Redis 读取点赞数据写入数据库中做持久化存储。

点赞功能在很多系统中都有,但别看功能小,想要做好需要考虑的东西还挺多的。 点赞、取消点赞是高频次的操作,若每次都读写数据库,大量的操作会影响数据库性能,所以需要做缓存。

至于多久从 Redis 取一次数据存到数据库中,根据项目的实际情况定吧,我是暂时设了两个小时。

项目需求需要查看都谁点赞了,所以要存储每个点赞的点赞人、被点赞人,不能简单的做计数。

文章分四部分介绍:

Redis 缓存设计及实现

  • 数据库设计
  • 数据库操作
  • 开启定时任务持久化存储到数据库

一、Redis 缓存设计及实现

1.1 Redis 安装及运行

Redis 安装请自行查阅相关教程。

说下Docker 安装运行 Redis

docker run -d -p 6379:6379 redis:4.0.8

如果已经安装了 Redis,打开命令行,输入启动 Redis 的命令

redis-server

1.2 Redis 与 SpringBoot 项目的整合

1. 在 pom.xml 中引入依赖

?

| 12 | org.springframework.bootspring-boot-starter-data-redis |

2. 在启动类上添加注释 @EnableCaching

?

| 1234567891011 | @SpringBootApplication``@EnableDiscoveryClient``@EnableSwagger2``@EnableFeignClients``(basePackages = "com.solo.coderiver.project.client"``)``@EnableCaching``public class UserApplication {  public static void main(String[] args) {``SpringApplication.run(UserApplication.``class``, args);``}``} |

3. 编写 Redis 配置类 RedisConfig

?

| 1234567891011121314151617181920212223242526272829303132333435363738394041424344 | import com.fasterxml.jackson.annotation.JsonAutoDetect;``import com.fasterxml.jackson.annotation.PropertyAccessor;``import com.fasterxml.jackson.databind.ObjectMapper;``import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;``import org.springframework.context.annotation.Bean;``import org.springframework.context.annotation.Configuration;``import org.springframework.data.redis.connection.RedisConnectionFactory;``import org.springframework.data.redis.core.RedisTemplate;``import org.springframework.data.redis.core.StringRedisTemplate;``import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer; import java.net.UnknownHostException;  @Configuration``public class RedisConfig {  @Bean``@ConditionalOnMissingBean``(name = "redisTemplate"``)``public RedisTemplate redisTemplate(``RedisConnectionFactory redisConnectionFactory)``throws UnknownHostException {  Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.``class``);``ObjectMapper om = new ObjectMapper();``om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);``om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);``jackson2JsonRedisSerializer.setObjectMapper(om); RedisTemplate template = new RedisTemplate();``template.setConnectionFactory(redisConnectionFactory);``template.setKeySerializer(jackson2JsonRedisSerializer);``template.setVal

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值