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

县政府门户网站建设情况爱上链外链购买平台

县政府门户网站建设情况,爱上链外链购买平台,网络营销推广方法和工具有哪些?,企业级网站开发技术本文是博主整理项目时整理出来的,项目使用 SpringBoot 框架,使用 Redis 作为缓存组件,用于缓存部分热点接口数据。 文章目录 一、Redis 的前置配置1、引入依赖2、单机配置3、集群配置4、两种配置路径解读 二、创建 Redis 配置类1、简易版 Red…

Redis
本文是博主整理项目时整理出来的,项目使用 SpringBoot 框架,使用 Redis 作为缓存组件,用于缓存部分热点接口数据。


文章目录

    • 一、Redis 的前置配置
      • 1、引入依赖
      • 2、单机配置
      • 3、集群配置
      • 4、两种配置路径解读
    • 二、创建 Redis 配置类
      • 1、简易版 RedisConfig
      • 2、复杂版 RedisConfig
    • 三、RedisTemplate 类
    • 四、创建 Redis 操作类
    • 五、opsForValue 方法
    • 六、在代码中使用 Redis

一、Redis 的前置配置

项目如果要使用 Redis 服务,那么项目就要引入 Redis 服务,就像你需要人帮忙,就需要先把人找到并带过来。

1、引入依赖

在 pom.xml 文件中添加 Spring Boot 的 Redis 依赖。通常使用 spring-boot-starter-data-redis,它集成了 Spring Data Redis 和 Redis 客户端。

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

2、单机配置

单机配置最基础的 Redis 配置方式,适用于单机模式。配置路径直接在 spring.redis 下。主要配置了 Redis 的主机地址、端口和密码。如果没有密码,可以省略 password 字段。适用于简单的单机 Redis 部署,不涉及集群或哨兵模式。

使用 application.properties 文件配置。

spring.redis.host=localhost
spring.redis.port=6379
spring.redis.password=your_password # 如果没有密码,可以省略

使用 application.yml 文件配置。

spring:redis:host: localhostport: 6379password: your_password # 如果没有密码,可以省略

3、集群配置

这种配置方式更详细,支持集群模式和更多高级配置。配置路径在 spring.data.redis 下。在配置中明确指定了使用 Lettuce 作为 Redis 客户端。支持集群模式 cluster ,可以指定多个节点。提供了更多高级配置,如连接池配置和管道缓冲区大小。适用于 Redis 集群模式或需要高级配置(如连接池、超时时间等)的场景。更适合生产环境,因为集群模式可以提高可用性和性能。

spring:data:redis:client-type: lettuce # 指定使用Lettuce作为Redis客户端(有多种客户端,可自行了解)timeout: 6000 # 设置Redis操作的超时时间为6000毫秒cluster:max-redirects: 3 # 设置集群模式下最大重定向次数为3nodes: 10.100.4.205:8001,10.100.4.205:8002,10.100.4.205:8003 # 指定Redis集群节点地址lettuce:pipe:buffer-size: 3000 # 设置Lettuce管道缓冲区大小为3000字节pool:max-wait: -1 # 设置连接池最大等待时间为-1,表示无限制等待max-active: 64 # 设置连接池最大连接数为64min-idle: 5 # 设置连接池最小空闲连接数为5max-idle: 10 # 设置连接池最大空闲连接数为10

4、两种配置路径解读

在 Spring Boot 中,spring.redisspring.data.redis 两种路径虽有不同,但本质上是一致的。

  • spring.redis:这是 Spring Boot 提供的默认 Redis 配置路径,适用于简单的单机 Redis 配置。
  • spring.data.redis:这是 Spring Data Redis 提供的配置路径,支持更复杂的 Redis 配置,如集群、哨兵、连接池等高级功能。
  • 推荐 spring.data.redis 路径,它提供了更全面的配置选项,支持的各种高级特性。

Spring Boot 支持自动配置这两种方式,自动配置机制会根据 application.propertiesapplication.yml 文件中的配置,自动创建 Redis 客户端实例,如 StringRedisTemplateRedisTemplate 。只需要正确填写配置文件,Spring Boot 会根据配置自动初始化 Redis 客户端,并注入到代码中,无需手动编写配置代码。

二、创建 Redis 配置类

Redis 是一个 NoSQL 数据库,用于存储键值对形式的数据,但是存到数据库的格式可能和我们使用的对象格式不同,如何保证存入数据和取出数据保持一致,就是下面的代码。创建一个配置类来配置 RedisTemplate ,这是操作 Redis 的核心类。

下面有两个简易的使用示例来演示如何使用 RedisTemplate :

1、简易版 RedisConfig

@Configuration
public class RedisConfig {// 简易版 key - value,存储 String 形式@Beanpublic RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {RedisTemplate<String, Object> template = new RedisTemplate<>();template.setConnectionFactory(factory);template.setKeySerializer(new StringRedisSerializer());template.setValueSerializer(new StringRedisSerializer());return template;}}

2、复杂版 RedisConfig

@Configuration // 标记当前类为配置类
public class RedisConfig { // 定义Redis配置类private static final String REDIS_ADDR_PREFIX = "redis://"; // 定义Redis地址前缀常量@Bean // 标记方法为Bean定义方法,定义RedisTemplate Beanpublic RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory lettuceConnectionFactory) { // 创建RedisTemplate实例RedisTemplate<String, Object> template = new RedisTemplate<>(); // 设置Redis连接工厂template.setConnectionFactory(lettuceConnectionFactory); // 配置序列化器,创建ObjectMapper实例ObjectMapper objectMapper = new ObjectMapper(); // 设置所有属性可见objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); // 启用默认类型objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); // 创建Jackson2JsonRedisSerializer实例Jackson2JsonRedisSerializer<Object> serializer = new Jackson2JsonRedisSerializer<>(Object.class); // 设置ObjectMapperserializer.setObjectMapper(objectMapper); // 创建StringRedisSerializer实例StringRedisSerializer stringRedisSerializer = new StringRedisSerializer(); // 将String或者Hash都用String序列化形式序列化,反序列化取出时使用Jackson2template.setKeySerializer(stringRedisSerializer); // 设置键序列化器template.setValueSerializer(serializer); // 设置值序列化器template.setHashKeySerializer(stringRedisSerializer); // 设置哈希键序列化器template.setHashValueSerializer(serializer); // 设置哈希值序列化器template.afterPropertiesSet(); // 初始化模板属性return template; // 返回RedisTemplate实例}@Bean // 标记方法为Bean定义方法,定义BeanPostProcessor Beanpublic BeanPostProcessor lettuceConnectionFactoryBeanProcessor() { // 创建匿名内部类实例return new BeanPostProcessor() { // 重写postProcessBeforeInitialization方法@Overridepublic Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException { // 判断Bean是否为LettuceConnectionFactory实例if (bean instanceof LettuceConnectionFactory) { // 转换为LettuceConnectionFactory实例LettuceConnectionFactory factory = (LettuceConnectionFactory) bean; // 设置管道刷新策略factory.setPipeliningFlushPolicy(LettuceConnection.PipeliningFlushPolicy.buffered(50)); }return bean; // 返回Bean实例}};}
}

三、RedisTemplate 类

RedisTemplate 是 Spring Data Redis 框架提供的一个用于操作 Redis 数据库的高级抽象类。它封装了对 Redis 的底层操作,能够以一种更简洁、更安全、更符合 Spring 框架风格的方式与 Redis 进行交互。

RedisTemplate 提供了一套丰富的 API,用于执行 Redis 的各种命令,封装 Redis 操作。

  • 键操作:set(key, value)、get(key)、delete(key) 等。
  • 数据结构操作:支持 Redis 中的字符串(String)、列表(List)、集合(Set)、哈希(Hash)和有序集合(ZSet)等数据结构。
  • 事务操作:支持 Redis 的事务功能,可以通过 multi()exec() 方法来实现。
  • Lua 脚本执行:可以执行 Redis 的 Lua 脚本,用于复杂的原子操作。

RedisTemplate 允许开发者指定键和值的序列化方式,可以做到类型安全和序列化。虽然 Redis 存储的数据是字节数组,但 RedisTemplate 可以通过序列化器将 Java 对象转换为字节数组。通过自定义序列化器,可以解决 Redis 中存储和读取数据时的类型安全问题。

  • StringRedisSerializer:用于字符串类型的键和值。
  • Jackson2JsonRedisSerializer:将对象序列化为 JSON 格式,常用这个序列化器。
  • GenericJackson2JsonRedisSerializer:支持泛型的 JSON 序列化。

RedisTemplate 是 Spring Data Redis 框架的一部分,与 Spring 的其他组件(如事务管理、依赖注入等)无缝集成。

  • 可以通过 Spring 的 @Bean 注解或 XML 配置来初始化 RedisTemplate。
  • 支持 Spring 的事务管理,可以通过 @Transactional 注解在事务中使用 RedisTemplate。
  • RedisTemplate 是线程安全的,可以在多线程环境中安全使用。

RedisTemplate 将 Redis 的原生异常(如 JedisException)转换为 Spring 的 DataAccessException,使得异常处理更加统一和符合 Spring 的风格。

四、创建 Redis 操作类

Redis 操作类是将 RedisTemplate 中的操作方法封装起来,用于提供存储方法。

@Service
public class RedisService {@Autowiredprivate RedisTemplate<String, Object> redisTemplate;public void setValue(String key, Object value) {redisTemplate.opsForValue().set(key, value);}public Object getValue(String key) {return redisTemplate.opsForValue().get(key);}}

该类使用了 RedisTemplate 中的 opsForValue 方法,曝露了 set 和 get 的方法用于存取缓存。

五、opsForValue 方法

RedisTemplate.opsForValue() 是 Spring Data Redis 提供的一个用于操作 Redis 中字符串类型数据的方法。通过这个方法,可以获取一个 ValueOperations 对象,进而对 Redis 中的键值对进行各种操作。

// 用于将指定的值存储到 Redis 中。
redisTemplate.opsForValue().set(key, value);// 根据键获取对应的值。
String value = redisTemplate.opsForValue().get(key);// 追加值:在现有值的末尾追加字符串。
redisTemplate.opsForValue().append(key, "appendValue");// 获取并设置值:获取旧值并设置新值。
String oldValue = redisTemplate.opsForValue().getAndSet(key, "newValue");// 设置值并设置过期时间:设置值的同时可以指定过期时间。
redisTemplate.opsForValue().set(key, value, timeout, TimeUnit.SECONDS);// 原子性设置值(仅当键不存在时):如果键不存在,则设置值并返回 true;否则返回 false。这个方法常用于实现分布式锁。
Boolean success = redisTemplate.opsForValue().setIfAbsent(key, value, timeout, TimeUnit.SECONDS);// 获取子字符串:获取键对应的值的子字符串。
String substring = redisTemplate.opsForValue().get(key, start, end);// 获取字符串长度:获取键对应的值的长度。
Long length = redisTemplate.opsForValue().size(key);

除了 opsForValue 方法外还有其他类型的操作方法:

  • opsForList:操作 LIst 列表。
  • opsForHash:操作 Hash 哈希。
  • opsForSet:操作 Set 集合。
  • opsForZSet:操作 ZSet 有序集合。

除了以上的方法之外还有其他方法,可自行查阅。

六、在代码中使用 Redis

在业务逻辑中注入 RedisService,并调用其方法来操作 Redis 。

@Component
public class YourService {@Autowiredprivate RedisService redisService;public void someMethod() {// 设置值redisService.setValue("key", "value");// 获取值Object value = redisService.getValue("key");System.out.println("Value from Redis: " + value);}
}

结语:通过以上方式,可以在 SpringBoot 项目中正确使用 Redis 缓存进行业务处理。

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

相关文章:

  • 简述网站建设基本步骤百度小说排行榜2019
  • 河池网站推广网络搜索词排名
  • 南皮网站建设网络广告的形式
  • 深圳市政府网站官网网络营销广告名词解释
  • 做网站 附加信息营销网站建设规划
  • wordpress一键仿站外包公司和劳务派遣
  • web前端开发和后端开发seo优化一般包括哪些内容
  • 幼儿园网站设计和建设seo自动优化工具
  • 大型网站费用2022好用值得推荐的搜索引擎
  • 计算机应用教程 网站的建设与维护专业黑帽seo
  • 烟台网站建设策划方案seo网站排名优化公司
  • 青岛营销型网站制作网络销售平台有哪些软件
  • 网站常用热点hot小图标广东网站se0优化公司
  • php网站后台开发教程陕西seo主管
  • 中小型企业网站开发我要登录百度
  • 交互设计师网站谷歌广告推广网站
  • 怎样在手机上做自己的网站百度免费推广
  • 网站下载的网页修改下面版权所有sem技术培训
  • 支付功能网站建设推推蛙贴吧优化
  • 有域名后怎么建网站网上互联网推广
  • 最近韩国日本免费高清观看国内seo公司哪家最好
  • 网站建设工作自查报告怎么自己做一个网址
  • 网站建设 牛商网技术提供百度信息
  • 定西做网站友妙招链接怎么弄
  • 有没有专门做设计的网站seo搜索引擎优化实训报告
  • 生产企业做网站有用吗百度福州分公司
  • 乌鲁木齐网站建设搭建东莞互联网推广
  • 华为公司网站建设方案模板下载seo管理系统创作
  • 怎么保证网站安全性百度 个人中心首页
  • 如何提高网站的安全性惠州搜索引擎seo