> 백엔드 개발 > PHP 튜토리얼 > redis는 배열을 저장합니다(json_encode는 실패하고 직렬화는 성공합니다).

redis는 배열을 저장합니다(json_encode는 실패하고 직렬화는 성공합니다).

WBOY
풀어 주다: 2016-10-10 11:56:24
원래의
2101명이 탐색했습니다.

redis를 사용하여 배열을 저장하려면 문자열 형식으로 저장하세요.
PHP 자체 json_encode 및 json_decode를 사용하여 json으로 변환합니다(실패).
PHP 자체 직렬화 함수는 함수를 직렬화 및 역직렬화합니다(성공).
구체적인 차이점이 있나요? 성공과 실패의 원칙을 알려주실 분 계신가요?

답글 내용:

배열을 문자열 형식으로 저장하려면 redis를 사용하세요.
PHP 자체 json_encode 및 json_decode를 사용하여 json으로 변환합니다(실패).
PHP 자체 직렬화 함수는 함수를 직렬화 및 역직렬화합니다(성공).
구체적인 차이점이 있나요? 성공과 실패의 원칙을 알려주실 분 계신가요?

redis와는 거의 관련이 없는 것 같습니다. set 및 get의 JSON 문자열은 일관성이 있어야 합니다.

json_encode의 문자열과 json_decode의 결과를 직접 인쇄해 볼 수 있습니다.

json_decode($str, true)를 매개변수 없이 json_decode($str)로 작성하면 결과가 배열이 아닌 객체가 될 가능성이 있는 것 같아요.

직렬화와 JSON은 본질적으로 동일하지 않습니다. json은 데이터 형식입니다

직렬화란 실행 중인 환경의 데이터 객체를 스트림 데이터로 변환하여 파일로 저장하거나 다른 곳에서 사용할 수 있도록 네트워크를 통해 전송하는 것을 말합니다.
직렬화 해제 후 이 스트림 데이터를 언어 데이터로 복원합니다.
아래의 객체 각 언어에는 고유한 직렬화 방법이 있습니다

php에는 직렬화보다 더 효율적인 방법이 있습니다.
igbinary_serialize() 및
igbinary_unserialize()
이 두 가지 방법은 ibginary 모듈을 설치해야 합니다.
redis 사용 시 구성

<code>$reids->setOption(Redis::OPT_SERIALIZER,Redis::SERIALIZER_IGBINARY);
</code>
로그인 후 복사

Redis는 자동으로 직렬화합니다. 매번 직렬화하고 설정하는 대신, 가져올 때마다 역직렬화해야 합니다.

직렬화에 대해 PHP를 예로 들어

<code>class Person{
    private $_name = "default";
    public function get_name(){
        return $this->_name;
    }
}

$p = new Person;
$sp = serialize($p);

send2serverB($p);</code>
로그인 후 복사

서버 A에서 객체 인스턴스를 직렬화했고, 이 인스턴스를 서비스 B에서 사용해야 합니다
물론 서버 B에서도 정상적으로 역직렬화하려면 Person 클래스 선언이 필요합니다

<code>function recieve_handle($sp){
   $p = unserialize($p);
   // 反序列后, 能还原Person实例, 能使用实例的方法
   // json只是种保存元数据的格式, 无法保存对象
   $name = $p->get_name();
}</code>
로그인 후 복사

데이터를 저장하거나 전송(소위 I/O)해야 하기 때문에 직렬화에 대한 이야기가 있습니다.
Json은 일반적으로 사용되는 데이터 스트림 형식이지만 메타데이터만 저장할 수 있고 복잡한 개체 속성을 표현할 수는 없습니다. 및 방법

데이터는 utf8이어야 합니다.
gbk는 인코딩할 수 없습니다

즉, json_encode는 객체를 직렬화할 수 없습니다

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿