当前位置: 首页 > wzjs >正文

怎样做建网站做淘客无锡今日头条新闻

怎样做建网站做淘客,无锡今日头条新闻,总结什么是网络营销,企业网站制作套餐目录 一、引入依赖 二、设置redis相关配置 三、准备测试项目框架 四、注册redis中间件 五、实现缓存逻辑 六、查询测试 今天在springboot中学习如何应用redis,实现用户信息管理的缓存中间件实现。 一、引入依赖 redis的客户端主要有Jedis 和 Lettuce两种&…

目录

一、引入依赖

二、设置redis相关配置

三、准备测试项目框架

四、注册redis中间件

五、实现缓存逻辑

六、查询测试


        今天在springboot中学习如何应用redis,实现用户信息管理的缓存中间件实现。

一、引入依赖

        redis的客户端主要有Jedis 和 Lettuce两种,Spring Boot 2.x 及以上版本默认使用 Lettuce 作为 Redis 客户端,能提供更好的异步支持,且内置连接池,配置简单,无需额外依赖。

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

二、设置redis相关配置

        在application.yml中配置如下信息。

  redis:host: localhost       # Redis 服务器地址port: 6379            # Redis 服务器端口password: ""          # Redis 密码(若有)database: 0           # 默认使用的数据库索引(0-15)timeout: 5000         # 连接超时时间(毫秒)

三、准备测试项目框架

        为了测试springboot应用redis,我们创建一个简单的关于用户管理的模块。包含下面的信息:

        sql表

CREATE TABLE users (id INT PRIMARY KEY AUTO_INCREMENT,username VARCHAR(50) NOT NULL UNIQUE,password_hash VARCHAR(255) NOT NULL,full_name VARCHAR(100) NOT NULL,phone_number VARCHAR(20) UNIQUE,email VARCHAR(100) NOT NULL UNIQUE,score_rank INT DEFAULT 0,created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);    

        userEntity

package com.naihe.redistest.entity;import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;import java.time.LocalDateTime;@Data
@NoArgsConstructor
@AllArgsConstructor
@TableName("users")
public class UserEntity {@TableId(value = "id", type = IdType.AUTO)private Integer id;private String username;@TableField("password_hash")private String passwordHash;@TableField("full_name")private String fullName;@TableField("phone_number")private String phoneNumber;private String email;@TableField("score_rank")private Integer scoreRank;@TableField(value = "created_at", fill = FieldFill.INSERT)private LocalDateTime createdAt;@TableField(value = "updated_at", fill = FieldFill.UPDATE)private LocalDateTime updatedAt;
}

        controller

package com.naihe.redistest.controller;import com.naihe.redistest.pojo.dto.RegisterDTO;
import com.naihe.redistest.service.UserService;
import com.naihe.redistest.utils.Result;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;import javax.servlet.http.HttpServletRequest;
import java.security.NoSuchAlgorithmException;@Slf4j
@Component
@Controller
@RestController
@RequestMapping("/user")
public class UserController {@AutowiredUserService userService;/*** 用户注册接口,接收用户注册信息并处理** @param registerBean 用户注册信息的传输对象* @return Result 返回操作结果*/@PostMapping("/register")public Result register(@RequestBody RegisterDTO registerBean){userService.insertUser(registerBean);return Result.ok().data("msg", "注册成功");}/*** 查询用户分数** @param userId 用户的id* @return Result 返回操作结果*/@GetMapping("/getScore/{userId}")public Result getScore(@PathVariable String userId) {Integer score = userService.getScore(userId);return Result.ok().data("score", score);}}

        service

package com.naihe.redistest.service.impl;import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.naihe.redistest.entity.UserEntity;
import com.naihe.redistest.mapper.UserMapper;
import com.naihe.redistest.pojo.dto.RegisterDTO;
import com.naihe.redistest.service.UserService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;import java.util.concurrent.TimeUnit;@Service
public class UserServiceImpl implements UserService {@Autowiredprivate UserMapper userMapper;@Autowiredprivate RedisTemplate<String, Object> redisTemplate;private static final String USER_SCORE_KEY = "user:score:";private static final long CACHE_EXPIRE_TIME = 30; // 缓存30分钟@Overridepublic void insertUser(RegisterDTO registerBean) {if (userMapper.selectOne(new QueryWrapper<UserEntity>().eq("username", registerBean.getUsername())) != null) {throw new RuntimeException(registerBean.getUsername() + "已存在");}UserEntity userEntity = new UserEntity();BeanUtils.copyProperties(registerBean,userEntity);userMapper.insert(userEntity);}
}

         添加测试数据

四、注册redis中间件

package com.naihe.redistest.config;
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.serializer.GenericJackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;@Configuration
public class RedisConfig {@Beanpublic RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {RedisTemplate<String, Object> template = new RedisTemplate<>();template.setConnectionFactory(factory);// 设置 key 的序列化方式template.setKeySerializer(new StringRedisSerializer());// 设置 value 的序列化方式(JSON 格式)template.setValueSerializer(new GenericJackson2JsonRedisSerializer());// 设置 hash key 和 value 的序列化方式template.setHashKeySerializer(new StringRedisSerializer());template.setHashValueSerializer(new GenericJackson2JsonRedisSerializer());template.afterPropertiesSet();return template;}
}

五、实现缓存逻辑

        在service服务层中应用,查询用户分数时,优先从redis中查找,若不存在,则从mysql数据库中查找后,添加到redis中。

package com.naihe.redistest.service.impl;import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.naihe.redistest.entity.UserEntity;
import com.naihe.redistest.mapper.UserMapper;
import com.naihe.redistest.pojo.dto.RegisterDTO;
import com.naihe.redistest.service.UserService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;import java.util.concurrent.TimeUnit;@Service
public class UserServiceImpl implements UserService {@Autowiredprivate UserMapper userMapper;@Autowiredprivate RedisTemplate<String, Object> redisTemplate;private static final String USER_SCORE_KEY = "user:score:";private static final long CACHE_EXPIRE_TIME = 30; // 缓存30分钟@Overridepublic void insertUser(RegisterDTO registerBean) {if (userMapper.selectOne(new QueryWrapper<UserEntity>().eq("username", registerBean.getUsername())) != null) {throw new RuntimeException(registerBean.getUsername() + "已存在");}UserEntity userEntity = new UserEntity();BeanUtils.copyProperties(registerBean,userEntity);userMapper.insert(userEntity);}public Integer getScore(String userId) {String key = USER_SCORE_KEY + userId;// 先从Redis获取缓存数据Integer score = (Integer) redisTemplate.opsForValue().get(key);if (score != null) {return score;}// 缓存未命中,从数据库获取UserEntity user = userMapper.selectById(userId);if (user == null) {throw new RuntimeException("用户不存在");}score = user.getScoreRank();// 将数据存入Redis缓存redisTemplate.opsForValue().set(key, score, CACHE_EXPIRE_TIME, TimeUnit.MINUTES);return score;}
}

六、查询测试

        现在我们使用postman对接口进行测试,查询用户分数,检测redis是否成功应用。

        首次查询我们可以看到,差不多用了1秒多的时间,此次查询没有在redis中查询到信息,所以会将该用户的分数存储进redis中。

        我们再次查询该用户。

        可以看到,这次的查询速度快了许多,达到了38ms,至此,我们完成了redis在springboot的简单应用,在后续更为复杂的业务可以使用更多的redis数据结构。

 

http://www.dtcms.com/wzjs/526436.html

相关文章:

  • 福州做网站企业乐陵seo优化
  • 深圳网站建设黄浦网络-骗钱热点新闻事件素材
  • 云南建设网站公司怎么优化网站关键词排名
  • 哪家网站推广好百度一下百度网站
  • 做网站 售后服务里都写啥10常用的网络营销方法
  • 做网站项目需求分析是什么网站关键字优化软件
  • 网站项目分析怎么做 方法爱站网注册人查询
  • 怎么做微信辅助的网站视频号最新动作
  • 美化网站代码正规网络推广服务
  • 慈溪网站建设哪家好网站seo运营培训机构
  • 做旅游视频网站网站建设方案
  • wordpress get_the_categoryseo去哪里培训
  • php做网站多少钱在线推广企业网站的方法有哪些
  • 下载西瓜视频免费安装谷歌seo关键词排名优化
  • 做思维导图的在线网站网络营销做的比较好的企业
  • 网页预览手机网站效果软文推广做的比较好的推广平台
  • 想网上卖家具怎么做网站武汉服装seo整站优化方案
  • 山东平台网站建设价位牛排seo
  • 北京学网站开发要看网的域名是多少
  • 本地搭建linux服务器做网站指数函数
  • 外贸独立站saas建站搜索引擎名词解释
  • 网站建设周期计划seo优化与推广招聘
  • 个人开发app需要多少钱沈阳seo建站
  • 运营网站是什么意思磁力搜索器
  • 东莞网站制作咨询祥奔科技武汉seo网站管理
  • asp.net手机网站开发教程临沂seo整站优化厂家
  • 微信上优惠券的网站怎么做的网络营销中的四种方法
  • 给人做网站多少钱如何在百度发广告
  • 有个做名片什么的网站如何建立网站 个人
  • 做养生网站怎么样旅游景点推广软文