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