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

springboot配置redis

文章目录

  • 前置
  • 依赖配置
  • yml 配置
  • 自定义配置(非必要)
  • 正常使用

前置

你使用的是 springboot 项目,使用 yml 来进行配置,properties 同理

依赖配置

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

这个依赖会自动引入:

spring-data-redis(Spring Data Redis 核心库)

lettuce-core(默认的 Redis 客户端,基于 Netty 的高性能客户端)

yml 配置

有 3 大 redis 客户端:Jedis、Redisson、Lettuce,其中在 spring boot2 之后,redis连接默认就采用了 lettuce

spring:
  redis:
    host: localhost  # Redis 服务器地址
    port: 6379       # Redis 服务器端口,默认是 6379
    password:        # Redis 密码(如果没有密码,可以省略)
    database: 0      # 使用的数据库索引,默认是 0
    timeout: 2000    # 连接超时时间(毫秒)
    lettuce:
      pool:
        max-active: 8      # 连接池最大连接数
        max-idle: 8        # 连接池最大空闲连接数
        min-idle: 0        # 连接池最小空闲连接数
        max-wait: -1ms     # 连接池最大阻塞等待时间(-1 表示无限制)

自定义配置(非必要)

配置完成 yml 后,你无需再配置 RedisTemplate 和 StringRedisTemplate 的 Configuration 代码了,因为 Spring Boot 会自动配置 RedisTemplate 和 StringRedisTemplate,你可以直接注入它们来操作 Redis

但是如果你非要自己在做额外的配置,那么你可以写如下这样的代码:

@Configuration  
public class RedisConfig {  
 
    @Bean  
    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {  
        RedisTemplate<String, Object> template = new RedisTemplate<>();  
        template.setConnectionFactory(redisConnectionFactory);  
 
        // 使用StringRedisSerializer来序列化和反序列化redis的key值  
        StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();  
        template.setKeySerializer(stringRedisSerializer);  
        template.setHashKeySerializer(stringRedisSerializer);  
 
        // 使用GenericJackson2JsonRedisSerializer来序列化和反序列化redis的value值  
        GenericJackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new GenericJackson2JsonRedisSerializer<>();  
        ObjectMapper objectMapper = new ObjectMapper();  
        objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);  
        objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);  
        jackson2JsonRedisSerializer.setObjectMapper(objectMapper);  
        template.setValueSerializer(jackson2JsonRedisSerializer);  
        template.setHashValueSerializer(jackson2JsonRedisSerializer);  
 
        template.afterPropertiesSet();  
        return template;  
    }  
}

正常使用

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

@Service
public class RedisService {

    @Autowired
    private RedisTemplate<String, Object> redisTemplate;

    @Autowired
    private StringRedisTemplate stringRedisTemplate;

    // 存储数据
    public void setValue(String key, String value) {
        stringRedisTemplate.opsForValue().set(key, value);
    }

    // 获取数据
    public String getValue(String key) {
        return stringRedisTemplate.opsForValue().get(key);
    }

    // 存储对象
    public void setObject(String key, Object value) {
        redisTemplate.opsForValue().set(key, value);
    }

    // 获取对象
    public Object getObject(String key) {
        return redisTemplate.opsForValue().get(key);
    }
}

http://www.kler.cn/a/537215.html

相关文章:

  • Flask
  • 有用的sql链接
  • 苹果公司宣布正式开源 Xcode 引擎 Swift Build145
  • 【Linux】25.进程信号(1)
  • 初窥强大,AI识别技术实现图像转文字(OCR技术)
  • 13.PPT:诺贝尔奖【28】
  • RTOS基础(TODO)
  • Jupyter Notebook使用指南--虚拟环境
  • 使用scoop 下载速度慢怎么办
  • Day38【AI思考】-彻底打通线性数据结构间的血脉联系
  • 位置定位与IP属地:异同解析与实际应用
  • ios应用想要下载到手机上只能苹果签名吗
  • IDEA+DeepSeek让Java开发起飞
  • go的sync包学习
  • 数据库性能优化(sql优化)_统计信息_yxy
  • 深入理解Docker:为你的爬虫项目提供隔离环境
  • C#+halcon机器视觉九点标定算法
  • 利用 Python 爬虫获取按关键字搜索淘宝商品的完整指南
  • 初探DeepSeek
  • PbootCMS 修改跳转提示,修改笑脸时间
  • CEF132 编译指南 Windows 篇 - 安装 Git 和 Python (三)
  • 【前端】Svelte的Writeable Store使用
  • 1.攻防世界 baby_web
  • 第三个Qt开发实例:利用之前已经开发好的LED驱动在Qt生成的界面中控制LED2的亮和灭
  • 【redis】数据类型之string
  • 一条sql 在MySQL中是如何执行的