java客户端连接redis并设置序列化处理

1、导入依赖

<!--继承父依赖-->
<parent>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-parent</artifactId>
   <version>2.3.12.RELEASE</version>
   <relativePath/> <!-- lookup parent from repository -->
</parent>

<dependencies>
    <!--spring-data-redis依赖-->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-redis-reactive</artifactId>
		</dependency>
    <!--springboot依赖-->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter</artifactId>
		</dependency>
    <!--连接池依赖-->
		<dependency>
			<groupId>org.apache.commons</groupId>
			<artifactId>commons-pool2</artifactId>
		</dependency>
    <!--junit依赖-->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>io.projectreactor</groupId>
			<artifactId>reactor-test</artifactId>
			<scope>test</scope>
		</dependency>
    <!--json与java对象转换依赖-->
		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-databind</artifactId>
		</dependency>
	</dependencies>


2、yml配置


spring-data-redis集成了lettuce(线程安全)和jedis(线程不安全),这里配置的是lettuce,两者均为Redis的客户端。

spring:
  redis:
    port: 6379
    host: localhost
    password:
    lettuce:
      pool:
        max-active: 8
        max-idle: 0
        min-idle: 0
        max-wait: 100ms
# 最大空闲连接 (maxIdle):这个参数指定了连接池中可以保持的最大空闲连接数。
#当连接池中的连接数量超过这个值时,多余的空闲连接将被回收。如果你的应用程序具有较高的并发连接数量,
#你可以适当增大这个值,以便连接池中始终保持足够的可用连接。
# 最小空闲连接 (minIdle):这个参数指定了连接池中默认保持的最小空闲连接数。\
#当连接池中的空闲连接数量低于这个值时,连接池会创建新的连接来补充空闲连接的数量。
#这样可以避免每次需要连接时都创建新的连接,提高性能和响应速度。你可以根据你的应用程序的需要适当地调整这个值。

image.png

image.png


3、RedisTemplate


RedisTemplate是Spring Data Redis框架提供的一个用于与Redis数据库交互的核心工具类。它提供了一系列用于操纵Redis数据库的方法,可以方便地进行数据存储、读取和删除操作。通过RedisTemplate,开发者可以使用一种更高级别的抽象来操纵Redis数据库,而不必与低级的Redis命令打交道。同时,RedisTemplate也提供了与Spring框架无缝集成的功能,使得在Spring应用中使用Redis变得更加方便。
但是直接使用这个操作工具类,会出现下面这中情况

image.png


而且在redis可视化端查看是二进制字符

image.png


这个工具类会默认使用jdk默认的序列化方式


4、改进方式:StringRedisTemplate


StringRedisTemplate是Spring Data Redis框架提供的一个封装Redis String类型数据操作的工具类。它是RedisTemplate的一个具体实现,专门用于操作Redis中的字符串数据(String类型)

@Test//redis中写入字符串
public  void  redisTest(){
   stringRedisTemplate.opsForValue().set("name", "duhong");
   String name =stringRedisTemplate.opsForValue().get("name");
   System.out.println(name);
}
@Test//redis中写入对象,将对象转成json字符串再进行存取
public  void  redisTest1() throws JsonProcessingException {
   User user=new User("duhong",12);
   //java对象与json字符串的转换
   ObjectMapper objectMapper = new ObjectMapper();
   String s = objectMapper.writeValueAsString(user);
   stringRedisTemplate.opsForValue().set("user", s);
   String userJson =stringRedisTemplate.opsForValue().get("user");
   User user1 = objectMapper.readValue(userJson, User.class);
   System.out.println(user1.toString());
}

  • 19
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要在Java中获取Redis中的Protobuf序列数据,你需要使用RedisJava客户库和Protobuf的Java库。以下是一个简单的示例代码,显示如何将Protobuf对象序列并存储到Redis中,并从Redis中获取并反序列Protobuf对象。 首先,确保你已经添加了Redis和Protobuf的相关依赖。 ```java import redis.clients.jedis.Jedis; import com.google.protobuf.InvalidProtocolBufferException; public class RedisProtobufExample { public static void main(String[] args) { // 创建一个Redis连接 Jedis jedis = new Jedis("localhost"); // 创建一个Protobuf对象 YourProtobufMessage message = YourProtobufMessage.newBuilder() .setId(1) .setName("John Doe") .setEmail("johndoe@example.com") .build(); // 将Protobuf对象序列为字节数组 byte[] serializedMessage = message.toByteArray(); // 存储序列的字节数组到Redis中 jedis.set("protobufData", serializedMessage); // 从Redis中获取序列的字节数组 byte[] retrievedData = jedis.get("protobufData"); try { // 将字节数组反序列为Protobuf对象 YourProtobufMessage retrievedMessage = YourProtobufMessage.parseFrom(retrievedData); System.out.println(retrievedMessage); } catch (InvalidProtocolBufferException e) { e.printStackTrace(); } // 关闭Redis连接 jedis.close(); } } ``` 在上面的示例代码中,你需要替换`YourProtobufMessage`为你实际使用的Protobuf消息类型。你还需要根据你的Redis配置修改Redis连接的相关参数。 这是一个简单的例子,你可以根据自己的需求进行扩展和修改。希望对你有帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

杜小白也想的美

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

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

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

打赏作者

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

抵扣说明:

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

余额充值