我正在尝试这样做。
我有一个对象列表(自定义对象),我想将它们全部保存在Redis的单个寄存器中,是否有可能以某种方式将它们保存为ajax?我正在读杰克逊,但我无法弄清楚如何。
到目前为止我只有这个
@Autowired
private StringRedisTemplate redisTmpl;
我可以像这样保存
redisTmpl.opsForValue().set("foo", "bar");
工作得很好,但我想保存我的对象列表(使用此StringRedisTemplate
而不是Bar。
知道该怎么做吗?
或者也许用另一种方式?但我需要只用一个密钥保存所有列表。
由于
答案 0 :(得分:2)
我找到了办法......
要保存所有列表,您可以通过这种方式使用jackson
ObjectMapper mapper = new ObjectMapper();
String jsonInString = mapper.writeValueAsString(myList);
后来你只是以同样的方式保存它
redisTmpl.opsForValue().set("foo", jsonInString);
答案 1 :(得分:0)
如果您可以将对象序列化为JSON
,则可以将其作为字符串存储在redis中。但为此您可能需要为您的类创建序列化/反序列化方法。
答案 2 :(得分:0)
你应该使用spring支持将你的值转换为JSON,如下例所示。它还会将您的密钥直接转换为字符串。
<bean id="serializer" class="org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer">
<constructor-arg>
<value type="java.lang.Class">your.class.path.to.be.saved.in.redis</value>
</constructor-arg>
</bean>
<bean id="template" class="org.springframework.data.redis.core.RedisTemplate"
p:connection-factory-ref="redisConnectionFactory">
<property name="valueSerializer" ref="serializer"/>
<property name="keySerializer">
<bean class="org.springframework.data.redis.serializer.StringRedisSerializer"/>
</property>
</bean>
答案 3 :(得分:0)
您也可以尝试Redisson。它支持许多编解码器,如Jackson JSON
,Avro
,Smile
,CBOR
,MsgPack
,Kryo
,FST
,{{1 },LZ4
和Snappy
。它非常容易使用:
JDK Serialization
答案 4 :(得分:0)
使用redisson,您可以这样做:
ObjectMapper mapper = new ObjectMapper();
RList<MyObject> list = redissonCLient.getList("myKey");
list.add(mapper.writeValueAsString(new MyObject("test")));
上面的代码将使用MyObjects值以JSON格式保存Redis列表。
要检索列表,您可以执行以下操作:
RList<MyObject> list = redissonCLient.getList("myKey");
List<MyObject> myObjects = mapper.readValue(list.toString(), new TypeReference<List<MyObject>>(){});