mysql实现点赞和取消_新入职的妹子问我Redis是如何实现点赞、取消点赞的?

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

点赞功能在很多系统中都有,但别看功能小,想要做好需要考虑的东西还挺多的。

点赞、取消点赞是高频次的操作,若每次都读写数据库,大量的操作会影响数据库性能,所以需要做缓存。

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

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

文章分四流量交易部分介绍:

Redis 缓存设计及实现

数据库设计

数据库操作

开启定时任务持久化存储到数据库

一、Redis 缓存设计及实现

1.1 Redis 安装及运行

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

说下Docker 安装运行 Redis

dockerrun-d-p6379:6379redis:4.0.8

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

redis-server

1.2 Redis 与 SpringBoot 项目的整合

1.在 pom.xml 中引入依赖

org.springframework.boot

spring-boot-starter-data-redis

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

@SpringBootApplication

@EnableDiscoveryClient

@EnableSwagger2

@EnableFeignClients(basePackages="com.solo.coderiver.project.client")

@EnableCaching

publicclassUserApplication{

publicstaticvoidmain(String[]args){

SpringApplication.run(UserApplication.class,args);

}

}

3.编写 Redis 配置类 RedisConfig

importcom.fasterxml.jackson.annotation.JsonAutoDetect;

importcom.fasterxml.jackson.annotation.PropertyAccessor;

importcom.fasterxml.jackson.databind.ObjectMapper;

importorg.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;

importorg.springframework.context.annotation.Bean;

importorg.springframework.context.annotation.Configuration;

importorg.springframework.data.redis.connection.RedisConnectionFactory;

importorg.springframework.data.redis.core.RedisTemplate;

importorg.springframework.data.redis.core.StringRedisTemplate;

importorg.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;

importjava.net.UnknownHostException;

@Configuration

publicclassRedisConfig{

@Bean

@ConditionalOnMissingBean(name="redisTemplate")

publicRedisTemplateredisTemplate(

RedisConnectionFactoryredisConnectionFactory)

throwsUnknownHostException{

Jackson2JsonRedisSerializerjackson2JsonRedisSerializer=newJackson2JsonRedisSerializer(Object.class);

ObjectMapperom=newObjectMapper();

om.setVisibility(PropertyAccessor.ALL,JsonAutoDetect.Visibility.ANY);

om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);

jackson2JsonRedisSerializer.setObjectMapper(om);

RedisTemplatetemplate=newRedisTemplate();

template.setConnectionFactory(redisConnectionFactory);

template.setKeySerializer(jackson2JsonRedisSerializer);

template.setValueSerializer(jackson2JsonRedisSerializer);

template.setHashKeySerializer(jackson2JsonRedisSerializer);

template.setHashValueSerializer(jackson2JsonRedisSerializer);

template.afterPropertiesSet();

returntemplate;

}

@Bean

@ConditionalOnMissingBean(StringRedisTemplate.class)

publicStringRedisTemplatestringRedisTemplate(

RedisConnectionFactoryredisConnectionFactory)

throwsUnknownHostException{

StringRedisTemplatetemplate=newStringRedisTemplate();

template.setConnectionFactory(redisConnectionFactory);

returntemplate;

}

}

至此 Redis 在 SpringBoot 项目中的配置已经完成,可以愉快的使用了。

1.3 Redis 的数据结构类型

Redis 可以存储键与5种不同数据结构类型之间的映射,这5种数据结构类型分别为String(字符串)、List(列表)、Set(集合)、Hash(散列)和 Zset(有序集合)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值