SpringBoot连接Redis


一、前言

连接 Redis 到 Spring Boot 可以通过以下步骤完成:

1. 添加 Redis 相关依赖

pom.xml 文件中添加 Redis 相关的依赖项,如果你使用 Maven,可以添加如下依赖:

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

这个依赖包含了 Spring Boot 对 Redis 的自动配置和必要的依赖项。

2. 配置 Redis 连接信息

application.propertiesapplication.yml 中配置 Redis 的连接信息。以下是一个简单的示例:

使用 application.properties 配置文件:

# Redis connection configuration
spring.redis.host=localhost
spring.redis.port=6379
spring.redis.password=your_redis_password

使用 application.yml 配置文件:

# Redis connection configuration
spring:
  redis:
    host: localhost
    port: 6379
    password: your_redis_password

根据你的实际情况修改 host(主机名或 IP 地址)、port(端口号)和 password(如果有密码的话)。如果 Redis 在本地运行,并且没有设置密码,可以省略 spring.redis.password

3. 使用 RedisTemplate 进行操作

在 Spring Boot 中,可以使用 RedisTemplate 来执行 Redis 操作。在你的服务类或控制器中注入 RedisTemplate,然后使用它来操作 Redis 数据。

例如,创建一个 Redis 服务类:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;

@Service
public class RedisService {

    @Autowired
    private RedisTemplate<String, String> redisTemplate;

    // 设置键值对
    public void setValue(String key, String value) {
        redisTemplate.opsForValue().set(key, value);
    }

    // 设置键值对,并指定过期时间
    public void setValueWithExpire(String key, String value, long timeout, TimeUnit unit) {
        redisTemplate.opsForValue().set(key, value, timeout, unit);
    }

    // 获取键对应的值
    public String getValue(String key) {
        return redisTemplate.opsForValue().get(key);
    }

    // 删除指定的键
    public Boolean deleteKey(String key) {
        return redisTemplate.delete(key);
    }

    // 检查键是否存在
    public Boolean keyExists(String key) {
        return redisTemplate.hasKey(key);
    }

    // 设置键的过期时间
    public Boolean expireKey(String key, long timeout, TimeUnit unit) {
        return redisTemplate.expire(key, timeout, unit);
    }

    // 获取键的剩余过期时间(单位:秒)
    public Long getKeyExpire(String key) {
        return redisTemplate.getExpire(key, TimeUnit.SECONDS);
    }

    // 自增操作
    public Long increment(String key, long delta) {
        return redisTemplate.opsForValue().increment(key, delta);
    }

    // 自减操作
    public Long decrement(String key, long delta) {
        return redisTemplate.opsForValue().increment(key, -delta);
    }

    // 如果键不存在则设置值,返回是否设置成功
    public Boolean setValueIfAbsent(String key, String value) {
        return redisTemplate.opsForValue().setIfAbsent(key, value);
    }

    // 获取指定范围内的字符串
    public String getRange(String key, long start, long end) {
        return redisTemplate.opsForValue().get(key, start, end);
    }

    // 追加字符串到键上的已有值的末尾
    public Integer append(String key, String value) {
        return redisTemplate.opsForValue().append(key, value);
    }

    // 删除指定键的指定范围内的值
    public Boolean deleteRange(String key, long start, long end) {
        redisTemplate.opsForValue().set(key, "", start, end);
        return true;
    }

    // 获取并设置指定键的值
    public String getAndSet(String key, String value) {
        return redisTemplate.opsForValue().getAndSet(key, value);
    }

    // 在列表头部插入值
    public Long leftPush(String key, String value) {
        return redisTemplate.opsForList().leftPush(key, value);
    }

    // 在列表尾部插入值
    public Long rightPush(String key, String value) {
        return redisTemplate.opsForList().rightPush(key, value);
    }

    // 获取列表范围内的值
    public java.util.List<String> getList(String key, long start, long end) {
        return redisTemplate.opsForList().range(key, start, end);
    }

    // 在集合中添加成员
    public Long addToSet(String key, String... values) {
        return redisTemplate.opsForSet().add(key, values);
    }

    // 获取集合中的所有成员
    public java.util.Set<String> getSet(String key) {
        return redisTemplate.opsForSet().members(key);
    }

    // 在有序集合中添加成员
    public Boolean addToZSet(String key, String value, double score) {
        return redisTemplate.opsForZSet().add(key, value, score);
    }

    // 获取有序集合中指定范围内的成员
    public java.util.Set<String> getRangeByScore(String key, double min, double max) {
        return redisTemplate.opsForZSet().rangeByScore(key, min, max);
    }

    // 删除有序集合中的成员
    public Long removeFromZSet(String key, String... values) {
        return redisTemplate.opsForZSet().remove(key, values);
    }
}

在上面的示例中,我们注入了 RedisTemplate,并定义了 setValuegetValue 方法来设置和获取 Redis 中的键值对。

4. 使用 RedisRepository 进行操作(可选)

如果你喜欢使用 Repository 接口来操作 Redis,可以创建一个继承自 RedisRepository 的接口。例如:

import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface MyRedisRepository extends CrudRepository<MyObject, String> {
    // 可以添加自定义的操作方法
}

在这个接口中,MyObject 是你的 Redis 对象类型,它必须包含一个标识字段(通常是 String 类型的 id)。

5. 启动应用程序

启动你的 Spring Boot 应用程序,Spring Boot 将根据你的配置连接到 Redis,并使用 RedisTemplateRedisRepository 进行操作。

通过以上步骤,你可以在 Spring Boot 应用程序中成功连接并操作 Redis 数据库。

6. 测试

    @Autowired
    private RedisService redisService;
    
    @Test
    void contextLoads35(){
        redisService.setValueWithExpire("name","测试", 5,TimeUnit.SECONDS);
        String name = redisService.getValue("name");
        System.out.println(name);
    }
  • 13
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

和烨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值