Ich habe für jeden Schlüssel in Redis eine JSON-Zeichenfolge eines Objekts gespeichert, aber als ich es herausnahm, waren einige seltsame Zeichen zu sehen
this.redisTemplate.opsForValue().set(key, objectMapper.writeValueAsString(XXX), 15 * 1000);
Dies ist der Wertcode:
String xxxJSON= this.redisTemplate.opsForValue().get(key);
XXX xxx = objectMapper.readValue(xxxJSON, XXX.class);
Das ist die Ausgabe:
redis取到的值==== NULNULNULNULNULNULNULNULNUL。。。。。{json 内容}
Das sehen Sie im Redis Manager
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00。。。。。。。。。。。。还有很多{json数据}
Die vorherige NUL-Protokollausgabe ist sichtbar, aber beim Kopieren ist sie voller Leerzeichen. Damit jeder den Effekt sehen kann, wird das handgeschriebene NUL angezeigt
Das Hauptproblem besteht darin, dass ich die abgerufenen Daten in ein Objekt konvertieren muss. Wenn ich die NUL davor entferne, kann sie in ein Objekt umgewandelt werden. Wenn ich sie jedoch kopiere, wird ein Fehler gemeldet Es wird mit Leerzeichen gefüllt.Andere Daten sind in Ordnung mit der Set-Liste. Es gibt kein Problem mit Strings oder Strings, nur JSON-Strings haben dieses Problem.
Versuchen Sie auch, s zu verwenden, um Leerzeichen abzugleichen und ersetzen und trimmen, um die führenden und nachgestellten Leerzeichen zu entfernen, aber das hat keine Auswirkung und die Zeichenfolge wird nicht transformiert
trim去掉空格可以用,测试的时候不是最新代码,"s"不能匹配,不知道怎么回事,另外Java Date对象存储到redis中,自动转化为时间戳,转化的时间戳比真实时间少了一个小时,原因都没找到,真坑啊
用的就是StringRedistemplate
用StringRedisTemplate代替RedisTemplate试试