Java 代码:
bash
@Bean
// 静态代理模式: Redis 客户端代理类增强
public StringRedisTemplateProxy stringRedisTemplateProxy(RedisKeySerializer redisKeySerializer,
StringRedisTemplate stringRedisTemplate,
RedissonClient redissonClient) {
stringRedisTemplate.setKeySerializer(redisKeySerializer); // UTF-8 实例化过
return new StringRedisTemplateProxy(stringRedisTemplate, redisDistributedProperties, redissonClient);
}
bash
@Override
public void put(String key, Object value, long timeout, TimeUnit timeUnit) {
// actual 是正确中文信息
String actual = value instanceof String ? (String) value : JSON.toJSONString(value);
stringRedisTemplate.opsForValue().set(key, actual, timeout, timeUnit);
}
验证:
bash
redis-cli -p 6380 --raw
# 执行命令查看键 -> 中文乱码
KEYS *
index12306-ticket-service:train_station_remaining_ticket:2_åŒ---京å---_æå·žä¸œ
index12306-ticket-service:train_info:3
distributed_id_generator_config
index12306-ticket-service:train_station_remaining_ticket:1_济å---西_æå·žä¸œ
index12306-ticket-service:train_station_remaining_ticket:3_å---京_æµ·å®
index12306-ticket-service:train_station_price:3_åŒ---京_å¾·å·ž
index12306-ticket-service:region_train_station:åŒ---京_æå·ž
index12306-ticket-service:train_station_remaining_ticket:4_åŒ---京å---_æå·
解决方法:
-> 由于 Redis 中存储的键名本身是乱码格式 -> 清除数据 -> 重新写入
bash
127.0.0.1:6380> FLUSHDB
OK
127.0.0.1:6380> KEYS *
127.0.0.1:6380> KEYS *
index12306-ticket-service:train_station_remaining_ticket:3_嘉兴_海宁
index12306-ticket-service:train_station_price:3_北京_杭州
index12306-ticket-service:train_station_remaining_ticket:1_南京南_杭州东
index12306-ticket-service:train_station_remaining_ticket:1_济南西_宁波
index12306-ticket-service:train_station_remaining_ticket:3_南京_嘉兴