昨天完成了 redis 的简单安装 Redis 学习日志之 Linux 下的安装,今天就在项目当中简单整合使用一下
整合环境说明
JDK1.8 版本
idea 开发工具
springboot2.1.0 版本
为什么选择 Redission?
springboot2.0 之前的版本默认支持的是 Jedis 但是在 2.0 后换成了 Lettuce。
java 连接 redis 最多的就是 Jedis,Redisson,Lettuce 这三种方式
简单说明介绍:Redis 的三个框架:Jedis,Redisson,Lettuce
最后选择了 Redission,因为 Redisson 的宗旨是促进使用者对 Redis 的关注分离,从而让使用者能够将精力更集中地放在处理业务逻辑上。
在 POM 当中引入对应 JAR
根据 Redission 官方整合文档进行引入和使用:
<!-- redisson -->
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson-spring-boot-starter</artifactId>
<version>3.10.4</version>
</dependency>
创建配置类 RedissonConfig
官方参数配置说明(中文)
编写测试类进行测试
在进行测试之前,由于使用的是阿里云服务器,所以需要在安全组当中开放 6379 端口,不然连接不上。
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class BlogApplicationTests {
@Resource
private RedissonClient redissonClient;
@Test
public void RedissionTest(){
RBucket<String> key = redissonClient.getBucket("newday");
key.set("新的数据");
System.out.println("获取到新存入的数据:"+key.get());
// 获取字符串格式的数据
RBucket<String> keyObj = redissonClient.getBucket("myname");
String s = keyObj.get();
System.out.println("获取到昨天存入的数据:"+s);
}
}
测试结果:
获取到新存入的数据:新的数据
[ ERROR] [2019-03-14 10:37:37] [redisson-netty-1-9] org.redisson.client.handler.CommandDecoder [204] - Unable to decode data. channel: [id: 0x704603a9, L:/192.168.0.147:10879 - R:47.94.139.213/47.94.139.213:6379], reply: ReplayingDecoderByteBuf(ridx=9, widx=9), command: (GET), params: [myname]
java.io.IOException: java.lang.NullPointerException
可以获取到项目当中新存入的数据,但是无法获取到昨天通过 redis-cli 存入的数据。
错误信息提示:无法解码数据,猜测可能是 redis-cli 存数据的编码和 redission 的编码不一致导致的。
最后网上找了很多的资料,找到了一个叫序列化策略的东西。大致的情况就是说 redis-cli 存数据时的序列化策略是 string,但是 redission 的默认序列化策略是 Jackson JSON 编码 Redission 官网配置参数序列化说明
修改配置类 RedissionConfig 如下
@Bean
public RedissonClient getRedisson(){
Config config = new Config();
//单机模式 依次设置redis地址和密码
config.useSingleServer().
setAddress("redis://IP地址:6379").
setPassword("你的密码");
config.setCodec(new StringCodec());
return Redisson.create(config);
}
最后结果如下:
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.1.0.RELEASE)
获取到新存入的数据:新的数据
获取到昨天存入的数据:ycf
到这里简单的使用就完成了。
总结
1 RedissonClient 这个类很重要,可以看到数据的读取都是通过这个类进行的。
2 这么多种序列化方式,所以序列化可能是个坑,后面需要注意。
3 官方文档的说明很详细,没事可以多看看。
参考资料
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于