为了账号安全,请及时绑定邮箱和手机立即绑定

有大佬遇到过这个问题吗:redis zadd添加进去的值为什么被序列化

有大佬遇到过这个问题吗:redis zadd添加进去的值为什么被序列化

撒科打诨 2019-08-21 18:26:03
通过php代码去弄总是会被序列化127.0.0.1:6379>ZRANGEkey0-1WITHSCORES1)"i:1;"2)"1"3)"s:6:\"google\";"4)"1"5)"i:4;"6)"2"7)"s:4:\"i:1;\";"8)"2"127.0.0.1:6379>ZRANGEkey0-1WITHSCORES但是我在cli下可以直接添加正常.这是为什么?127.0.0.1:6379>zaddkey1google(integer)1127.0.0.1:6379>ZRANGEkey0-1WITHSCORES1)"google"2)"1"3)"i:1;"4)"1"5)"s:6:\"google\";"6)"1"7)"i:4;"8)"2"9)"s:4:\"i:1;\";"10)"2"127.0.0.1:6379>
查看完整描述

2 回答

?
偶然的你

TA贡献1841条经验 获得超3个赞

因为rediskv模式只能存字符串呀,PHP的数组怎么变为字符串呢,默认就是序列化,取的时候反序列化大多数情况下,我们都是手动转为JSON字符串再存进redis里面的,这样其他程序读取的时候会比较方便
========更新========
phpredis扩展的序列化参数有三个值,分别是
$redis->setOption(Redis::OPT_SERIALIZER,Redis::SERIALIZER_NONE);//don'tserializedata
$redis->setOption(Redis::OPT_SERIALIZER,Redis::SERIALIZER_PHP);//usebuilt-inserialize/unserialize
$redis->setOption(Redis::OPT_SERIALIZER,Redis::SERIALIZER_IGBINARY);//useigBinaryserialize/unserialize
使用$redis->getOption(Redis::OPT_SERIALIZER);方法看看配置了哪一个
                            
查看完整回答
反对 回复 2019-08-21
?
呼啦一阵风

TA贡献1802条经验 获得超6个赞

找到问题了这样就解决了关闭序列化
$redis->setOption(Redis::OPT_SERIALIZER,Redis::SERIALIZER_NONE);//don'tserializedata
$redis->setOption(Redis::OPT_SERIALIZER,Redis::SERIALIZER_PHP);//usebuilt-inserialize/unserialize
$redis->setOption(Redis::OPT_SERIALIZER,Redis::SERIALIZER_IGBINARY);//useigBinaryserialize/unserialize
$redis->setOption(Redis::OPT_PREFIX,'myAppName:');//usecustomprefixonallkeys
                            
查看完整回答
反对 回复 2019-08-21
  • 2 回答
  • 0 关注
  • 492 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信