SpringBoot项目Redis使用

本文介绍了如何在SpringBoot项目中集成和配置Redis,包括添加依赖、设置数据库连接参数、序列化配置以及使用Value和Hash模式操作Redis。

SpringBoot项目Redis使用

引入依赖

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

对Redis的信息进行配置

  redis:
    database: 0 # 使用Redis的哪一个数据库,0-15 任选
    port: 6379 # 自己的Redis配置的端口
    host: localhost # 自己Redis的网络自己,我这里是本地
    password: xxxxxxx # 自己Redis配置的密码
    lettuce: # 关于lettuce这个默认也行
      pool:
        min-idle: 1
        max-active: 10
        max-idle: 10

为方便使用设置序列化器,使用时统一用RedisTemplate<String,Object>模式

这里就是注册一个Redis序列化的Bean方便使用

@Configuration
public class RedisConfig {
    @Bean
    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
        // 我们为了自己开发方便,一般直接使用 <String, Object>
        RedisTemplate<String, Object> template = new RedisTemplate<String, Object>();
        template.setConnectionFactory(redisConnectionFactory);
        // Json序列化配置
        Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
        ObjectMapper om = new ObjectMapper();
        om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
        om.activateDefaultTyping(LaissezFaireSubTypeValidator.instance,ObjectMapper.DefaultTyping.NON_FINAL);
        jackson2JsonRedisSerializer.setObjectMapper(om);
        // String 的序列化
        StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
        // key采用String的序列化方式
        template.setKeySerializer(stringRedisSerializer);
        // hash的key也采用String的序列化方式
        template.setHashKeySerializer(stringRedisSerializer);
        // value序列化方式采用jackson
        template.setValueSerializer(jackson2JsonRedisSerializer);
        // hash的value序列化方式采用jackson
        template.setHashValueSerializer(jackson2JsonRedisSerializer);
        template.afterPropertiesSet();
        return template;
    }
}

到这里基本就可以使用了

使用

我这里进行测试使用

使用key:string-value:string模式

首先直接使用一般的设置Value,这里的代码就是设置一对键值

@SpringBootTest
class SpringbootTemplateApplicationTests {

	@Resource
	RedisTemplate<String,Object> redisTemplate ;
	@Test
	void testRedis(){
		String phone = "12345678901";
		redisTemplate.opsForValue().set("test:code:"+ phone,"123456");
 		System.out.println(redisTemplate.opsForValue().get("test:code:"+phone));
	}
}

结果:

在这里插入图片描述

用图形化工具查看

符合预期的结果
在这里插入图片描述

使用Hash模式

使用代码:

@Test
	void testRedisHashValue(){
		String token = UUID.randomUUID().toString();
		User user = new User(1235432l,"xwhking","password","xiaoxiaowei");
		Map<String, Object> stringObjectMap = BeanUtil.beanToMap(user);
		redisTemplate.opsForHash().putAll("test:user:"+token,stringObjectMap);
		System.out.println(redisTemplate.opsForHash().entries("test:user:"+token));
	}

打印结果:

在这里插入图片描述

图形化结果查看:

在这里插入图片描述

直接存一个一个对象呢?会转化为JSON进行存储

只不过对这里取出来的值进行使用的时候要进行强制类型转换
使用代码:

void testRedisJson(){
		String token = UUID.randomUUID().toString();
		User user = new User(1235432l,"xwhking","password","xiaoxiaowei");
		redisTemplate.opsForValue().set("test:user:"+token,user);
		System.out.println(redisTemplate.opsForValue().get("test:user:"+token));  
	}

运行结果:

在这里插入图片描述

图形化结果:

在这里插入图片描述

### Spring Boot集成Redis详细教程及示例 #### 一、引入依赖 为了使Spring Boot项目能够使用Redis,需在`pom.xml`文件中加入如下依赖[^1]: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> ``` #### 二、配置连接信息 编辑项目的application.properties或者application.yml文件来设置Redis服务器的相关参数。例如,在yml格式下可以这样写: ```yaml spring: redis: host: localhost port: 6379 ``` #### 三、创建自定义配置类 通过`@Configuration`注解标记名为`RedisConfig`的Java类作为配置类,并利用`@Bean`注解实例化所需的组件对象,比如`redisConnectionFactory`和`redisTemplate`。对于后者来说,还需指定键值对序列化的具体实现方式——采用`StringRedisSerializer`处理key部分;而value则借助于`GenericJackson2JsonRedisSerializer`完成JSON形式的数据转换工作。 ```java import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer; import org.springframework.data.redis.serializer.StringRedisSerializer; @Configuration public class RedisConfig { @Bean public RedisConnectionFactory redisConnectionFactory() { // 这里省略具体的工厂构建逻辑... } @Bean public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory){ RedisTemplate<String,Object> template=new RedisTemplate<>(); template.setKeySerializer(new StringRedisSerializer()); template.setValueSerializer(new GenericJackson2JsonRedisSerializer()); template.setHashKeySerializer(new StringRedisSerializer()); template.setHashValueSerializer(new GenericJackson2JsonRedisSerializer()); template.setConnectionFactory(factory); return template; } } ``` #### 四、编写业务逻辑代码 当完成了以上准备工作之后就可以着手开发实际的应用程序了。此时只需简单地将之前准备好的`RedisTemplate`注入到目标Service层或Controller层即可轻松访问并操作远程存储中的数据资源。 ```java @Service public class MyServiceImpl implements MyService{ private final RedisTemplate<String, Object> redisTemplate; @Autowired public MyServiceImpl(RedisTemplate<String, Object> redisTemplate) { this.redisTemplate = redisTemplate; } @Override public void saveData(String key, Object value) { ValueOperations<String, Object> ops=redisTemplate.opsForValue(); ops.set(key,value); } @Override public Object getData(String key) { ValueOperations<String, Object> ops=redisTemplate.opsForValue(); return ops.get(key); } } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

xwhking

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

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

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

打赏作者

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

抵扣说明:

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

余额充值