加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > PHP > 正文

php-redis – 有没有办法在Redis中存储PHP对象而不进行序列化?

发布时间:2020-05-31 00:37:13 所属栏目:PHP 来源:互联网
导读:我试图将用户的请求URL作为密钥存储,并将与该密钥对应的 PHP对象存储为Redis中的值.我尝试了以下方法: $redisClient = new Redis();$redisClient-connect(localhost, 6379);$redisClient-set($_SERVER[REQUEST_URI], $this-page);$redisTest = $red

我试图将用户的请求URL作为密钥存储,并将与该密钥对应的 PHP对象存储为Redis中的值.我尝试了以下方法:

$redisClient = new Redis();
$redisClient->connect('localhost',6379);
$redisClient->set($_SERVER['REQUEST_URI'],$this->page);
$redisTest = $redisClient->get($_SERVER['REQUEST_URI']);
var_dump($redisTest);

但是,使用此代码,存储在Redis中的URL键的值是字符串的类型,其值等于“Object”而不是实际的PHP对象.有没有办法存储PHP对象而不进行序列化?

正如您在 Redis data types中看到的,Redis仅支持以下5种数据类型:

>搅拌
>列表
>设置
>哈希
>分类集

因此,没有对象数据类型,因此您无法将对象直接存储为值.您必须先将其序列化(或者使用json_encode函数对其进行JSON编码).

串行化是否存在直接存储对象的问题?

更新:根据您在评论中所说的内容,您可以使用此answer中指出的方法

所以你可以使用:

$xml = $simpleXmlElem->asXML();

在序列化之前,然后在unserialize()之后,使用以下代码:

$simpleXmlElem = simplexml_load_string($xml);

这样,您不必直接序列化像SimpleXmlElement这样的PHP内置对象,也不会有任何问题.

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读