通过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);方法看看配置了哪一个
呼啦一阵风
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
添加回答
举报
0/150
提交
取消