当前位置: 首页 > 后端技术 > Java

响应式读写redis

时间:2023-04-01 22:38:22 Java

要使用的组件:org.springframework.bootspring-boot-starter-data-redis-reactive2.6.2ymlconfiguration:spring:redis:host:127.0.0.1port:6379有两个自动加载的bean需要注意:看代码:LettuceConnectionConfiguration.java,@Bean@ConditionalOnMissingBean(RedisConnectionFactory.class)LettuceConnectionFactoryredisConnectionFactory(ObjectProviderbuilderCustomizers,ClientResourcesclientResources){返回createLettuceConnectionFactory(clientConfig);}因为在上面描述代码中有参数需要,@ConditionalOnMissingBean(RedisConnectionFactory.class)效果生成。再看看RedisReactiveAutoConfiguration.java@Bean@ConditionalOnMissingBean(name="reactiveRedisTemplate")@ConditionalOnBean(ReactiveRedisConnectionFactory.class)publicReactiveRedisTemplatereactiveRedisTemplate(ReactiveRedisConnectionFactoryreactiveRedisConnectionFactory,ResourceLoaderresourceLoader){JdkSerializationRedisSerializerjdkSerializer=newJdkLoaderializer();获取RedisSerializer();RedisSerializationContextserializationContext=RedisSerializationContext.newSerializationContext().key(jdkSerializer).value(jdkSerializer).hashKey(jdkSerializer).hashValue(jdkSerializer).build();返回新的ReactiveRedisTemplate<>(reactiveRedisConnectionFactory,serializationContext);}所以呢,使用的时候,可以直接使用@AutowiredReactiveStringRedisTemplateabc;@GetMapping("/redis")发布cMonoredis(){ReactiveValueOperationsops=abc.opsForValue();返回ops.set("测试","黑色");或者还有另一种方法:@BeanReactiveStringRedisTemplatereactiveRedisTemplate(ReactiveRedisConnectionFactoryfactory){returnnewReactiveStringRedisTemplate(factory);}@AutowiredReactiveStringRedisTemplatereactiveRedisTemplate;注意这里的变量名最好是reactiveRedisTemplate,否则会报错Fieldabcinxxxrequiredasinglebean,but2werefound:-reactiveRedisTemplate:definedbymethod'reactiveRedisTemplate'incom.example.WebfluxApplication-reactiveStringRedisTemplate:defined通过类路径资源[org/springframework/boot/autoconfigure/data/redis/RedisReactiveAutoConfiguration.class]中的方法'reactiveStringRedisTemplate'