解决Redis键乱码的奥秘(redis键乱码的东西)
Redis是一种流行的内存 key-value 数据库,因为其迅速、低延迟的数据存取,在很多应用场景中被广泛使用。Redis 键(Key)的存储格式是 binary safe,即当 key 中存储了非 ASCII 字符,这时候在 Redis-cli 上查看时可能会出现乱码,这是因为 Redis-cli 并不能很好的处理非 ASCII 字符。
一般情况下,Redis 的 key 并不会存储特殊字符,但是由于一些问题,Redis key 可能会出现乱码问题,比如当你从关系数据库拉回 key 并 set 到 redis 时候会导致乱码。解决这种情况有几种常见解决方案:
第一种方法是根据 key 的实际编码来进行强制转换,比如我们可以使用 iconv 函数将 key 从 ISO-8859-1 转换为 UTF-8:
$redis->set(‘key’, iconv(‘ISO-8859-1’, ‘UTF-8’, “mi clave es: 杰克”));
第二种方法是使用 phpredis 库,它可以支持 key 的解析,里面有专门的函数可以解析字符编码:
use Redis;
$redis = new Redis();
$redis->connect(‘127.0.0.1’, 6379);
$redis->set(‘key’, “\xE6\x9D\xB0\xE5\x85\x8B”);
$redis->_redis_decode_key(‘key’);
也可以通过在 redis.conf 配置文件中指定字符编码来更改 Redis-cli 编码:
/etc/redis/redis.conf
:
:
#Use default system encoding
syslog-encoding utf-8
使用以上方法可以解决绝大部分 Redis 键乱码的问题,但是仍有一些不可预知的乱码存在,这时应该尝试在 redis.conf 中指定默认编码来进一步避免出现乱码情况。