自学内容网 自学内容网

中间件:SpringBoot集成Redis

1. Redis简介

Redis(Remote Dictionary Server)是一个开源的内存数据库,支持多种数据结构,具有极高的性能。它通常用作缓存、中间件,支持持久化和主从复制,广泛应用于高并发、低延迟的场景

(1) 数据类型

Redis 支持以下五种基本数据类型:

  • String:最常用的类型,可存储字符串、整数、浮点数
  • List:双向链表,支持元素的插入、删除,适用于队列场景
  • Set:无序集合,支持交集、并集、差集等操作
  • Hash:类似于Java中的Map结构,适合存储对象数据
  • ZSet(Sorted Set):有序集合,带分数的元素集合,适用于排行榜、排名系统等场景

(2) 关键优势

  • 高性能:单线程模型,支持每秒百万级请求
  • 丰富的数据结构:可以满足多样化的场景需求
  • 持久化机制:支持数据落盘(RDB和AOF两种方式)
  • 分布式:支持主从复制,便于构建高可用集群

2. Redis的基本使用

(1) 配置

安装 Redis 后,配置文件通常为 redis.conf,常用配置包括端口、最大连接数、持久化设置等

  • 端口:默认端口为 6379
  • 持久化:通过 RDB 或 AOF 来设置数据持久化的方式

(2) 启动

可以通过命令 redis-server 启动 Redis,也可以指定配置文件来启动:

redis-server /path/to/redis.conf

(3) 连接

可以通过命令行客户端 redis-cli 或通过编程方式(如Jedis、Lettuce)连接 Redis

(4) 基本操作

  • 设置键值
    SET key value
    
  • 获取键值
    GET key
    
  • 删除键
    DEL key
    

(5) 可视化工具

常用 Redis 可视化管理工具:

  • Redis Desktop Manager:跨平台的 GUI 管理工具
  • Another Redis Desktop Manager (RDM):开源 Redis 管理工具
  • FastoRedis:基于 C++ 的 Redis 客户端

3. Jedis操作Redis

Jedis 是 Java 语言的 Redis 客户端,提供了方便的 API 操作 Redis

(1) 常用方法API

  • set:设置键值
  • get:获取键值
  • del:删除键
  • exists:检查键是否存在
  • expire:设置键过期时间

(2) 基本操作

Jedis jedis = new Jedis("localhost", 6379);
jedis.set("key", "value");
String value = jedis.get("key");

(3) 连接池

为了提高性能和复用连接,Jedis 支持连接池:

JedisPool jedisPool = new JedisPool(new JedisPoolConfig(), "localhost");
try (Jedis jedis = jedisPool.getResource()) {
    jedis.set("key", "value");
}

4. SpringBoot操作Redis

通过 SpringBoot 的 spring-boot-starter-data-redis 来简化对 Redis 的操作

(1) spring-boot-starter-data-redis

在 SpringBoot 项目中,添加以下依赖:

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

(2) 基本操作

RedisTemplate 是 SpringBoot 中用于操作 Redis 的核心类,支持多种数据类型的操作

@Autowired
private RedisTemplate<String, Object> redisTemplate;

redisTemplate.opsForValue().set("key", "value");
Object value = redisTemplate.opsForValue().get("key");

(3) 封装

可以通过封装 Redis 工具类简化 Redis 的常用操作:

public class RedisUtils {
    @Autowired
    private RedisTemplate<String, Object> redisTemplate;

    public void set(String key, Object value) {
        redisTemplate.opsForValue().set(key, value);
    }

    public Object get(String key) {
        return redisTemplate.opsForValue().get(key);
    }
}

5. SpringBoot集成Redis使用Cache缓存

Spring Boot 集成 Redis 后,支持使用 Cache 注解实现缓存功能

(1) RedisConfig配置

需要配置 Redis 的连接信息和序列化方式,避免存储乱码:

@Configuration
public class RedisConfig {
    @Bean
    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
        RedisTemplate<String, Object> template = new RedisTemplate<>();
        template.setConnectionFactory(factory);
        template.setKeySerializer(new StringRedisSerializer());
        template.setValueSerializer(new GenericJackson2JsonRedisSerializer());
        return template;
    }
}

(2) Cache注解

Spring 提供了 @Cacheable、@CachePut 和 @CacheEvict 注解,用于缓存管理:

  • @Cacheable:方法执行结果缓存
  • @CachePut:更新缓存
  • @CacheEvict:清除缓存
@Cacheable(value = "users", key = "#id")
public User getUserById(Long id) {
    return userRepository.findById(id).orElse(null);
}

(3) JSON注解

为了在 Redis 中以 JSON 形式存储数据,可以配置 GenericJackson2JsonRedisSerializer 来序列化和反序列化数据

通过以上配置和方法,可以将 SpringBoot 与 Redis 集成,提供缓存能力,有效提升应用性能

这份总结涵盖了Redis的基础概念、操作方式以及SpringBoot中的实际应用


原文地址:https://blog.csdn.net/Pre_W/article/details/142862392

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!