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

通过php代码去弄总是会被序列化
127.0.0.1:6379>ZRANGEkey0-1WITHSCORES
1)"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)1
127.0.0.1:6379>ZRANGEkey0-1WITHSCORES
1)"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>
撒科打诨
浏览 493回答 2
2回答

偶然的你

因为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);方法看看配置了哪一个

呼啦一阵风

找到问题了这样就解决了关闭序列化$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
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript