목차
memchache 将对象序列化后保存
查看源代码
结论
데이터 베이스 MySQL 튜토리얼 memcache 怎么存储的对象

memcache 怎么存储的对象

Jun 07, 2016 pm 02:50 PM
memcache 저장 물체 어떻게

memchache 将对象序列化后保存 memcahce将值序列化成字节数组,然后存储到缓存中。 如下例,我们将user对象序列化到文件a.txt中,同时将user保存到缓存中,通过比较文件和缓存中的值 发现,两者是一样的。 public class User implements Serializable { priv

memchache 将对象序列化后保存

memcahce将值序列化成字节数组,然后存储到缓存中。

如下例,我们将user对象序列化到文件a.txt中,同时将user保存到缓存中,通过比较文件和缓存中的值
发现,两者是一样的。

<code class=" hljs java"><span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">User</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">Serializable</span>{</span>

    <span class="hljs-keyword">private</span> String name;
    <span class="hljs-keyword">private</span> String address;



    <span class="hljs-keyword">public</span> <span class="hljs-title">User</span>(String name, String address) {
        <span class="hljs-keyword">super</span>();
        <span class="hljs-keyword">this</span>.name = name;
        <span class="hljs-keyword">this</span>.address = address;
    }
}</code>
로그인 후 복사
<code class=" hljs cs"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">void</span> <span class="hljs-title">main</span>(String[] args) throws InterruptedException, ExecutionException, FileNotFoundException, IOException {
         MemcachedClient mcc =  <span class="hljs-keyword">null</span>;
          <span class="hljs-keyword">try</span>{
             <span class="hljs-comment">// 本地连接 Memcached 服务</span>
              mcc = <span class="hljs-keyword">new</span> MemcachedClient(<span class="hljs-keyword">new</span> InetSocketAddress(<span class="hljs-string">"127.0.0.1"</span>, <span class="hljs-number">11211</span>));
             System.<span class="hljs-keyword">out</span>.println(<span class="hljs-string">"Connection to server sucessful."</span>);



          }<span class="hljs-keyword">catch</span>(Exception ex){
             System.<span class="hljs-keyword">out</span>.println( ex.getMessage() );
          }

          User u = <span class="hljs-keyword">new</span> User(<span class="hljs-string">"junwang"</span>,<span class="hljs-string">"qingdao city"</span>);

          ObjectOutputStream oos = <span class="hljs-keyword">new</span> ObjectOutputStream(<span class="hljs-keyword">new</span> FileOutputStream(<span class="hljs-keyword">new</span> File(<span class="hljs-string">"a.txt"</span>)) );
          oos.writeObject(u);


          Future fo =  mcc.<span class="hljs-keyword">set</span>(<span class="hljs-string">"myuser"</span>, <span class="hljs-number">5</span>*<span class="hljs-number">60</span>*<span class="hljs-number">1000</span>, u);
          <span class="hljs-comment">// 查看存储状态</span>
          System.<span class="hljs-keyword">out</span>.println(<span class="hljs-string">"set status:"</span> + fo.<span class="hljs-keyword">get</span>());

          <span class="hljs-comment">// 输出值</span>
          System.<span class="hljs-keyword">out</span>.println(<span class="hljs-string">"myuser value in cache - "</span> + mcc.<span class="hljs-keyword">get</span>(<span class="hljs-string">"myuser"</span>));

          <span class="hljs-comment">// 关闭连接</span>
           mcc.shutdown();
       }</code>
로그인 후 복사

这里写图片描述

查看源代码

查看源代码,可以发现正是将对象序列化,然后保存。证明了我们上述的猜想。

<code class=" hljs cs">BaseSerializingTranscoder.java

<span class="hljs-keyword">protected</span> <span class="hljs-keyword">byte</span>[] <span class="hljs-title">serialize</span>(Object o) {
    <span class="hljs-keyword">if</span> (o == <span class="hljs-keyword">null</span>) {
      <span class="hljs-keyword">throw</span> <span class="hljs-keyword">new</span> NullPointerException(<span class="hljs-string">"Can't serialize null"</span>);
    }
    <span class="hljs-keyword">byte</span>[] rv=<span class="hljs-keyword">null</span>;
    ByteArrayOutputStream bos = <span class="hljs-keyword">null</span>;
    ObjectOutputStream os = <span class="hljs-keyword">null</span>;
    <span class="hljs-keyword">try</span> {
      bos = <span class="hljs-keyword">new</span> ByteArrayOutputStream();
      os = <span class="hljs-keyword">new</span> ObjectOutputStream(bos);
      os.writeObject(o);
      os.close();
      bos.close();
      rv = bos.toByteArray();
    } <span class="hljs-keyword">catch</span> (IOException e) {
      <span class="hljs-keyword">throw</span> <span class="hljs-keyword">new</span> IllegalArgumentException(<span class="hljs-string">"Non-serializable object"</span>, e);
    } <span class="hljs-keyword">finally</span> {
      CloseUtil.close(os);
      CloseUtil.close(bos);
    }
    <span class="hljs-keyword">return</span> rv;
  }
</code>
로그인 후 복사

结论

值的存储,都是序列化成字节数组,然后保存

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

GIGABYTE 마더보드에서 키보드 부팅 기능을 설정하는 방법(GIGABYTE 마더보드에서 키보드 부팅 모드 활성화) GIGABYTE 마더보드에서 키보드 부팅 기능을 설정하는 방법(GIGABYTE 마더보드에서 키보드 부팅 모드 활성화) Dec 31, 2023 pm 05:15 PM

Gigabyte 마더보드에서 키보드 시작을 설정하는 방법 먼저, 키보드 시작을 지원해야 한다면 PS2 키보드여야 합니다! ! 설정 단계는 다음과 같습니다. 1단계: 부팅 후 Del 또는 F2를 눌러 BIOS에 들어가고, BIOS의 고급(Advanced) 모드로 들어갑니다. 일반 마더보드는 기본적으로 마더보드의 EZ(Easy) 모드로 들어갑니다. F7을 눌러 고급 모드로 전환합니다. ROG 시리즈 마더보드는 기본적으로 BIOS로 들어갑니다. 고급 모드(간체 중국어를 사용하여 설명) 2단계: - [고급] - [고급 전원 관리(APM)]를 선택합니다. [PS2 키보드로 깨우기] 옵션 찾기 4단계: 이 옵션 기본값은 비활성화입니다. 아래로 당기면 세 가지 다른 설정 옵션이 표시됩니다. 즉, 컴퓨터를 켜려면 [스페이스바]를 누르고 그룹을 누르세요.

화웨이는 내년에 혁신적인 MED 스토리지 제품을 출시할 예정입니다. 랙 용량은 10PB를 초과하고 전력 소비량은 2kW 미만입니다. 화웨이는 내년에 혁신적인 MED 스토리지 제품을 출시할 예정입니다. 랙 용량은 10PB를 초과하고 전력 소비량은 2kW 미만입니다. Mar 07, 2024 pm 10:43 PM

이 웹사이트는 3월 7일 화웨이의 데이터 스토리지 제품 라인 사장인 Zhou Yuefeng 박사가 최근 MWC2024 컨퍼런스에 참석하여 웜 데이터(WarmData)와 콜드 데이터(ColdData)용으로 설계된 차세대 OceanStorArctic 자전 스토리지 솔루션을 구체적으로 시연했다고 보도했습니다. Huawei의 데이터 스토리지 제품 라인 사장 Zhou Yuefeng은 일련의 혁신적인 솔루션을 출시했습니다. 이미지 출처: 이 사이트에 첨부된 Huawei의 공식 보도 자료는 다음과 같습니다. 이 솔루션의 가격은 자기 테이프보다 20% 저렴하며, 전력 소비는 하드 디스크보다 90% 낮습니다. 해외 기술 매체인 blockandfiles에 따르면, Huawei 대변인은 자기전기 저장 솔루션에 대한 정보도 공개했습니다. Huawei의 자기전자 디스크(MED)는 자기 저장 매체의 주요 혁신입니다. 1세대 ME

Shenzhou Xuanlong m7e8s3에서 독립 그래픽 카드를 직접 연결하는 방법은 무엇입니까? Shenzhou Xuanlong m7e8s3에서 독립 그래픽 카드를 직접 연결하는 방법은 무엇입니까? Jan 04, 2024 am 09:24 AM

Shenzhou Xuanlong m7의 독립 그래픽 카드 직접 연결을 활성화하는 방법 Shenzhou Xuanlong m7의 독립 그래픽 카드의 직접 연결 기능을 활성화하려면 다음 단계를 따르십시오. 독립 그래픽 카드의 드라이버를 설치했습니다. Shenzhou 공식 웹사이트나 독립 그래픽 카드 제조업체의 공식 웹사이트로 이동하여 그래픽 카드 모델에 적합한 최신 드라이버를 다운로드하고 설치할 수 있습니다. 2. 컴퓨터 바탕 화면의 빈 공간을 마우스 오른쪽 버튼으로 클릭하고 팝업 메뉴에서 "NVIDIA 제어판"을 선택합니다(AMD 그래픽 카드인 경우 "AMDRadeon 설정" 선택). 3. 제어판에서 "3D 설정" 또는 유사한 이름의 옵션을 찾아 클릭하여 들어갑니다. 4. "3D 설정"에서 "전역 설정" 또는 비슷한 이름의 옵션을 찾아야 합니다. 여기에서 고유한 사용을 지정할 수 있습니다.

PHP의 요청 객체란 무엇입니까? PHP의 요청 객체란 무엇입니까? Feb 27, 2024 pm 09:06 PM

PHP의 요청 객체는 클라이언트가 서버로 보낸 HTTP 요청을 처리하는 데 사용되는 객체입니다. Request 객체를 통해 요청 메소드, 요청 헤더 정보, 요청 매개변수 등과 같은 클라이언트의 요청 정보를 얻어 요청을 처리하고 응답할 수 있습니다. PHP에서는 $_REQUEST, $_GET, $_POST 등과 같은 전역 변수를 사용하여 요청된 정보를 얻을 수 있지만 이러한 변수는 객체가 아니라 배열입니다. 요청사항을 보다 유연하고 편리하게 처리하기 위해

우분투에서의 Git 설치 과정 우분투에서의 Git 설치 과정 Mar 20, 2024 pm 04:51 PM

Git은 빠르고 안정적이며 적응력이 뛰어난 분산 버전 제어 시스템입니다. 분산된 비선형 워크플로를 지원하도록 설계되어 모든 규모의 소프트웨어 개발 팀에 이상적입니다. 각 Git 작업 디렉터리는 모든 변경 사항에 대한 전체 기록을 보유하고 네트워크 액세스나 중앙 서버 없이도 버전을 추적할 수 있는 독립적인 저장소입니다. GitHub는 분산 개정 제어의 모든 기능을 제공하는 클라우드에 호스팅되는 Git 저장소입니다. GitHub는 클라우드에서 호스팅되는 Git 저장소입니다. CLI 도구인 Git과 달리 GitHub에는 웹 기반 그래픽 사용자 인터페이스가 있습니다. 이는 다른 개발자와 협력하고 스크립트 변경 사항을 추적하는 버전 제어에 사용됩니다.

MySQL 쿼리 결과 배열을 객체로 변환하는 방법은 무엇입니까? MySQL 쿼리 결과 배열을 객체로 변환하는 방법은 무엇입니까? Apr 29, 2024 pm 01:09 PM

MySQL 쿼리 결과 배열을 객체로 변환하는 방법은 다음과 같습니다. 빈 객체 배열을 만듭니다. 결과 배열을 반복하고 각 행에 대해 새 개체를 만듭니다. foreach 루프를 사용하여 각 행의 키-값 쌍을 새 개체의 해당 속성에 할당합니다. 개체 배열에 새 개체를 추가합니다. 데이터베이스 연결을 닫습니다.

나이키 신발의 정품과 가짜 신발 상자를 식별하는 방법(쉽게 식별하는 하나의 트릭 마스터) 나이키 신발의 정품과 가짜 신발 상자를 식별하는 방법(쉽게 식별하는 하나의 트릭 마스터) Sep 02, 2024 pm 04:11 PM

세계적인 스포츠 브랜드로서 나이키의 신발은 많은 주목을 받았다. 그러나 가짜 Nike 신발 상자를 포함하여 시중에는 수많은 위조 제품도 있습니다. 정품 신발 상자와 가짜 신발 상자를 구별하는 것은 소비자의 권익을 보호하는 데 중요합니다. 이 글에서는 진짜 신발 상자와 가짜 신발 상자를 구별하는 데 도움이 되는 몇 가지 간단하고 효과적인 방법을 제공합니다. 1: 외부 포장 제목 Nike 신발 상자의 외부 포장을 관찰하면 미묘한 차이가 많이 있음을 알 수 있습니다. 정품 Nike 신발 상자는 일반적으로 촉감이 부드럽고 뚜렷한 매운 냄새가 없는 고품질 종이 재질로 되어 있습니다. 정품 신발 상자의 글꼴과 로고는 일반적으로 명확하고 상세하며 흐릿하거나 색상 불일치가 없습니다. 2: 나이키 신발 상자의 로고 핫 스탬핑 제목은 일반적으로 정품 신발 상자의 핫 스탬핑 부분입니다.

CF 플레이 시 Savior y7000p 해상도는 어떻게 되나요? (Saviour y7000에서 CF 플레이 시 전체 화면 조정 방법) CF 플레이 시 Savior y7000p 해상도는 어떻게 되나요? (Saviour y7000에서 CF 플레이 시 전체 화면 조정 방법) Jan 07, 2024 am 10:13 AM

CF 재생 시 Savior Y7000P의 해상도는 얼마입니까? CF 재생 시 Savior Y7000P의 해상도는 1920*1080입니다. 이 컴퓨터에는 GTX1650 그래픽 카드와 i5-9300H 프로세서가 탑재되어 있기 때문에 성능이 비교적 좋고 CF 등의 게임 요구 사항을 충족하기에 충분합니다. 동시에 1920*1080은 현재 주류 e스포츠 모니터의 해상도이며 이미지 품질과 선명도가 충분합니다. 또한 요구 사항이 더 높은 플레이어가 있는 경우 게임 이미지 품질 설정을 적절하게 낮추어 보다 원활한 게임 경험을 얻을 수 있습니다. 보다 선명한 시각적 경험을 즐기기 위해 Savior y7000p의 해상도를 2560*1400으로 조정할 수 있습니다. 이렇게 하면 더 높은 품질의 이미지 디스플레이를 즐길 수 있습니다. Savior Y7000P 2022 모델 장착

See all articles