学生简单网站制作教程,全国最大的关键词挖掘,成都今天发生的重大新闻,室内设计平面图包括#x1f49d;#x1f49d;#x1f49d;欢迎来到我的博客#xff0c;很高兴能够在这里和您见面#xff01;希望您在这里可以感受到一份轻松愉快的氛围#xff0c;不仅可以获得有趣的内容和知识#xff0c;也可以畅所欲言、分享您的想法和见解。  推荐:kwan 的首页,持续学… 欢迎来到我的博客很高兴能够在这里和您见面希望您在这里可以感受到一份轻松愉快的氛围不仅可以获得有趣的内容和知识也可以畅所欲言、分享您的想法和见解。  推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老导航 檀越剑指大厂系列:全面总结 java 核心技术点,如集合,jvm,并发编程 redis,kafka,Spring,微服务,Netty 等常用开发工具系列:罗列常用的开发工具,如 IDEA,Mac,Alfred,electerm,Git,typora,apifox 等数据库系列:详细总结了常用数据库 mysql 技术点,以及工作中遇到的 mysql 问题等懒人运维系列:总结好用的命令,解放双手不香吗?能用一个命令完成绝不用两个操作数据结构与算法系列:总结数据结构和算法,不同类型针对性训练,提升编程思维,剑指大厂  非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。 ✨✨ 欢迎订阅本专栏 ✨✨ 博客目录 一、配置 Redis 连接二、使用 Jedis 操作 Redis三、使用 RedisTemplate 操作 Redis  摘要本文介绍了如何在 Spring Boot 项目中集成 Redis并利用 Redis 实现缓存功能。文章包括配置 Redis 连接、使用 Jedis 和 RedisTemplate 两种方式进行操作的示例代码并探讨了它们的优缺点。 随着互联网应用的不断发展对于数据的高效读写和缓存处理变得越来越重要。而 Redis 作为一款高性能的缓存数据库被广泛应用于各种大型系统中。本文将介绍如何在 Spring Boot 项目中集成 Redis并利用 Redis 实现缓存功能。 一、配置 Redis 连接 
在 Spring Boot 项目中我们可以通过配置文件来指定 Redis 的连接参数。以 YAML 格式的配置文件为例示例如下 
spring:redis:database: 3password: xxxxtimeout: 60000 #连接超时host: 10.xxx.14.40port: 6379jedis:pool:max-idle: 6 #最大空闲数max-active: 100 #最大连接数min-idle: 2 #最小空闲数以上配置了 Redis 的数据库编号、密码、连接超时时间以及连接池的相关参数。 
二、使用 Jedis 操作 Redis 
Jedis 是 Java 操作 Redis 的一款常用客户端库。下面是使用 Jedis 进行操作的示例代码。 
首先我们需要创建一个 JedisConfig 类用于配置 Jedis 连接池 
Slf4j
Configuration
public class JedisConfig {Value(${spring.redis.host})private String host;Value(${spring.redis.port})private int port;Value(${spring.redis.timeout})private Integer timeout;Value(${spring.redis.password})private String password;Value(${spring.redis.database})private Integer database;Value(${spring.redis.jedis.pool.max-active})private int maxActive;Value(${spring.redis.jedis.pool.max-idle})private int maxIdle;Value(${spring.redis.jedis.pool.min-idle})private int minIdle;Beanpublic JedisPool jedisPool() {JedisPoolConfig jedisPoolConfig  new JedisPoolConfig();jedisPoolConfig.setMaxIdle(maxIdle);jedisPoolConfig.setMinIdle(minIdle);jedisPoolConfig.setMaxTotal(maxActive);JedisPool jedisPool  new JedisPool(jedisPoolConfig, host, port, timeout, default, password, database);log.info(JedisPool Connection Success:  host  \t  port);return jedisPool;}
}在上述代码中我们通过Configuration 注解将 JedisConfig 类标识为配置类并通过Bean 注解将 jedisPool 方法返回的 JedisPool 对象注册为 Spring 的 Bean。 
接下来我们可以创建一个 JedisUtils 类用于获取 Jedis 资源和释放连接 
Component
public class JedisUtils {Autowiredprivate JedisPool jedisPool;/*** 获取Jedis资源*/public Jedis getJedis() {return jedisPool.getResource();}/*** 释放Jedis连接*/public void close(Jedis jedis) {if (jedis ! null) {jedis.close();}}
}在上述代码中我们通过Autowired 注解将 JedisPool 对象注入到 JedisUtils 类中。通过调用 getJedis 方法我们可以获取一个 Jedis 资源对象用于后续的操作。在完成操作后调用 close 方法释放 Jedis 连接以便连接可以被连接池重复利用。 
接下来我们可以创建一个 JedisClient 类用于具体的操作 Redis 
Slf4j
Component
public class JedisClient {Autowiredprivate JedisUtils jedisUtils;/*** 根据key查询value值*/public String get(String key) {Jedis jedis  jedisUtils.getJedis();try {if (!jedis.exists(key)) {log.info(key:{}在Redis中查不到数据., key);} else {return jedis.get(key);}} catch (Exception e) {log.error(Jedis get操作出错, e);} finally {jedisUtils.close(jedis);}return null;}/*** 设置key-value*/public void set(String key, String value) {Jedis jedis  jedisUtils.getJedis();try {jedis.set(key, value);} catch (Exception e) {log.error(Jedis set操作出错, e);} finally {jedisUtils.close(jedis);}}/*** 删除key*/public void delete(String key) {Jedis jedis  jedisUtils.getJedis();try {jedis.del(key);} catch (Exception e) {log.error(Jedis delete操作出错, e);} finally {jedisUtils.close(jedis);}}
}在上述代码中我们通过Autowired 注解将 JedisUtils 对象注入到 JedisClient 类中以获取 Jedis 资源。然后我们可以定义一些常见的 Redis 操作方法例如 get、set 和 delete。 
最后我们可以在需要使用缓存的地方调用 JedisClient 类进行 Redis 操作。例如 
RestController
public class UserController {Autowiredprivate JedisClient jedisClient;GetMapping(/user/{id})public User getUserById(PathVariable(id) String id) {String key  user:  id;String value  jedisClient.get(key);if (value ! null) {return JSON.parseObject(value, User.class);} else {User user  userService.getUserById(id);if (user ! null) {jedisClient.set(key, JSON.toJSONString(user));}return user;}}
}在上述代码中我们首先根据缓存的 key 值查询 Redis 中是否存在对应的 value 值。如果存在则直接从 Redis 中获取缓存数据。如果不存在则从数据库中获取数据并将数据存入 Redis 中以供下次使用。 
三、使用 RedisTemplate 操作 Redis 
除了使用 Jedis 进行 Redis 操作外Spring Boot 还提供了另一种方式使用 RedisTemplate。下面是使用 RedisTemplate 进行操作的示例代码。 首先我们需要创建一个 RedisConfig 类用于配置 RedisTemplate 
Configuration
public class RedisConfig {Value(${spring.redis.host})private String host;Value(${spring.redis.port})private int port;Value(${spring.redis.timeout})private Integer timeout;Value(${spring.redis.password})private String password;Value(${spring.redis.database})private Integer database;Beanpublic RedisConnectionFactory redisConnectionFactory() {RedisStandaloneConfiguration config  new RedisStandaloneConfiguration(host, port);config.setDatabase(database);config.setPassword(RedisPassword.of(password));LettuceConnectionFactory connectionFactory  new LettuceConnectionFactory(config);connectionFactory.setTimeout(timeout);return connectionFactory;}Beanpublic RedisTemplateString, Object redisTemplate(RedisConnectionFactory connectionFactory) {RedisTemplateString, Object redisTemplate  new RedisTemplate();redisTemplate.setConnectionFactory(connectionFactory);// 设置key和value的序列化方式redisTemplate.setKeySerializer(new StringRedisSerializer());redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());return redisTemplate;}
}在上述代码中我们通过Configuration 注解将 RedisConfig 类标识为配置类并通过Bean 注解分别注册了 redisConnectionFactory 和 redisTemplate 对象。在 redisTemplate 方法中我们设置了 key 和 value 的序列化方式这里使用了 StringRedisSerializer 和 GenericJackson2JsonRedisSerializer。 
接下来我们可以在需要使用缓存的地方注入 RedisTemplate 对象并调用相应的方法进行 Redis 操作。例如 
RestController
public class UserController {Autowiredprivate RedisTemplateString, Object redisTemplate;GetMapping(/user/{id})public User getUserById(PathVariable(id) String id) {String key  user:  id;User user  (User) redisTemplate.opsForValue().get(key);if (user ! null) {return user;} else {user  userService.getUserById(id);if (user ! null) {redisTemplate.opsForValue().set(key, user);}return user;}}
}在上述代码中我们通过 RedisTemplate 的 opsForValue 方法获取 ValueOperations 对象并调用 get 方法从 Redis 中获取缓存数据。如果数据不存在则从数据库中 觉得有用的话点个赞  呗。 ❤️❤️❤️本人水平有限如有纰漏欢迎各位大佬评论批评指正 如果觉得这篇文对你有帮助的话也请给个点赞、收藏下吧非常感谢!   Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧