我正在使用springboot2.3.3和springdataredis。我用绝地武士做redis的客户。我有一个@repository类扩展了crudrepository。
@Repository
public interface BackedEventRepository extends CrudRepository<BackedEvent, String>{}
我存储的redis散列如下:
@RedisHash("backedEvent")
public class BackedEvent implements Serializable{
private static final long serialVersionUID = 4264000518258689567L;
@Id
private String id;
private byte[] value;
}
测试通过存储库类插入小数据。
@Test
void whenSavingBackedMessageThenSuccessfullyRetrieveMsg() throws Exception {
String id = RandomStringUtils.random(10);
BackedEvent backedMsg = BackedEvent.builder().id(id)
.value("this is a test".getBytes()).build();
repo.save(backedMsg);
Optional<BackedEvent> retBackedMsg = repo.findById(id);
assertThat(retBackedMsg.get().getId()).isEqualTo(backedMsg.getId());
assertThat(retBackedMsg.get().getValue()).isEqualTo(backedMsg.getValue());
}
我有一个集成测试,它在一个1.8mb的xml文件的inputstream中获取数据,并使用这些字节作为redis散列对象中的值。此测试失败
当它执行backedeventrepository.save(backedevent)时,出现以下错误:
org.springframework.data.redis.RedisConnectionFailureException: ERR Protocol error: invalid multibulk length; nested exception is redis.clients.jedis.exceptions.JedisConnectionException: ERR Protocol error: invalid multibulk length
尽管hmset redis命令已被弃用,但spring data redis似乎正在发出hmset command事件。
org.springframework.data.redis.connection.jedis.JedisHashCommands.hMSet(JedisHashCommands.java:345)
我知道redis的大容量容量是1mb。有没有办法克服这个问题?我希望能够发出一个save命令来保存“大”数据。这样做的目的是在redis中存储大于1mb的大量数据,因为1mb是Kafka主题的大小限制。
暂无答案!
目前还没有任何答案,快来回答吧!