`
85977328
  • 浏览: 1898585 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

memcached(十五)binary vs text protocols

 
阅读更多
memcached服务端支持2种传输协议,还有一种XMemcached对于Kestrel的支持实现

text protocol
文本协议传输的时候,序列化会产生大量的冗余内容。例如255,会使用3个字节。但是调试方便,在服务端可以清晰的看到文本内容。

binary protocol
二进制协议传输的时候,序列化产生的内容较少。内容紧凑。比如255,则使用1个字节。但是调试的时候,在服务器上命令行看内容,不容易调试。

Kestrel protocol(非服务器官方)
1 发包服务持续将数据SET到队列KQ中
2 收包服务持续将数据从队列KE中GET出来
FIFO,适用于异步消息传输。
Kestrel基本参照Memcached协议,可恢复,确保服务重启后可以保存重启前的消息队列,不会丢消息。依靠XMemcahed,可以做Kestrel集群,分布式扩充Kestrel服务。


代码示例
package com.panguso.phl;

import net.rubyeye.xmemcached.MemcachedClientBuilder;
import net.rubyeye.xmemcached.XMemcachedClientBuilder;
import net.rubyeye.xmemcached.command.BinaryCommandFactory;
import net.rubyeye.xmemcached.command.KestrelCommandFactory;
import net.rubyeye.xmemcached.command.TextCommandFactory;
import net.rubyeye.xmemcached.utils.AddrUtil;

/**
 * @author piaohailin
 * @date   2014-1-12
*/
public class ProtocolTest {

    /**
     * @param args
     * @author piaohailin
     * @date   2014-1-12
    */
    public static void main(String[] args) {
        MemcachedClientBuilder builder = new XMemcachedClientBuilder(AddrUtil.getAddresses("10.10.160.155:11211"));
        //二进制协议
        builder.setCommandFactory(new BinaryCommandFactory());
        //文本协议
        builder.setCommandFactory(new TextCommandFactory());
        //FIFO:非官方的
        builder.setCommandFactory(new KestrelCommandFactory());
    }

}



结论
笼统的说,追求性能的话,还是二进制协议更好。

3
0
分享到:
评论
2 楼 cfanllm 2014-11-02  
使用其他的协议就没有这种问题。
1 楼 cfanllm 2014-11-02  
您好,请问在使用binary protocol的时候日志控制台打印出来了乱码,请问这是什么情况呢,请指点!
DEBUG 2014-11-02 23:30:36 net.rubyeye.xmemcached.impl.MemcachedHandler Check session (%s) is alive,send heartbeat
DEBUG 2014-11-02 23:30:36 com.google.code.yanf4j.core.impl.AbstractSession After encoding�
DEBUG 2014-11-02 23:30:36 com.google.code.yanf4j.core.impl.AbstractSession read 30 bytes from channel
DEBUG 2014-11-02 23:30:36 net.rubyeye.xmemcached.impl.Optimizer Optimieze merge buffer:�
DEBUG 2014-11-02 23:30:36 com.google.code.yanf4j.core.impl.AbstractSession read 30 bytes from channel
DEBUG 2014-11-02 23:30:36 com.google.code.yanf4j.core.impl.AbstractSession send buffers:

相关推荐

    memcached-binary:使用二进制协议构建状态内存缓存客户端

    “memcached-binary:使用二进制协议构建状态内存缓存客户端” 这个标题指出了一个特定的软件项目,即`memcached-binary`,它是一个客户端库,用于与memcached服务器通信。这里的关键点是“二进制协议”,这意味着该...

    Python库 | python-binary-memcached-0.24.1.tar.gz

    资源分类:Python库 所属语言:Python 资源全名:python-binary-memcached-0.24.1.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    memcached 64位 window

    标题"memcached 64位 window"指的是在Windows操作系统上运行的64位版本的Memcached缓存系统。Memcached是一种分布式内存对象缓存系统,广泛用于减轻数据库负载,提高Web应用的性能。由于是64位版本,这意味着它可以...

    memcached安装软件 libevent magent memcached

    Memcached是一款高性能、分布式内存对象缓存系统,广泛应用于Web应用中,用于减轻数据库的负载。它通过在内存中存储数据来提供快速的数据访问,从而提高应用的性能。本篇文章将详细讲解如何安装和配置memcached,...

    memcached windows稳定版

    在终端(也即cmd命令界面)下输入 ‘c:\memcached\memcached.exe -d install’ 安装 3. 再输入: ‘c:\memcached\memcached.exe -d start’ 启动。NOTE: 以后memcached将作为windows的一个服务每次开机时自动启动...

    memcached安装包以及MemCachedClient

    **Memcached 安装与使用详解** Memcached 是一款高性能的分布式内存缓存系统,用于在Web应用中减轻数据库负载。它将数据存储在内存中,以键值对的形式提供快速访问,尤其适用于高并发场景。Memcached 使用简单,可...

    memcached服务器端memcached.exe 下载

    标题“memcached服务器端memcached.exe 下载”指的是获取memcached服务端的可执行文件,`memcached.exe`是Windows环境下运行memcached服务的程序。这个绿色版的memcached意味着它无需安装,下载解压后即可直接运行,...

    linux下memcached安装

    Linux下的Memcached安装教程 Memcached是一款高性能、分布式内存对象缓存系统,广泛应用于Web应用中,用于减轻数据库负载,提高数据访问速度。在Linux环境下安装Memcached,可以帮助我们优化服务器性能,提升应用...

    windows下memcached+memcached.dll 5.3.8

    标题中的“Windows下memcached+memcached.dll 5.3.8”指的是在Windows操作系统上安装和使用Memcached服务的场景,其中`memcached.dll 5.3.8`是Memcached服务器的一个特定版本的动态链接库文件。Memcached是一款高...

    安装Memcached及Memcached配置

    Memcached 是一个高性能的分布式内存对象缓存系统,常用于减轻数据库负载,提高Web应用的响应速度。在本文中,我们将详细介绍如何安装和配置Memcached,以及如何查询其运行状态。 1. **安装Memcached** - 首先,你...

    memcached.exe及memcached.dll

    **Memcached:高性能分布式内存缓存系统** Memcached是一款开源、高性能、分布式内存对象缓存系统,用于在动态系统中减少数据库负载,提升应用程序性能。它通过存储数据和对象到内存中,使得频繁访问的数据可以更快...

    memcached-2.1.0.tgz

    2. **memcache** - 这是较旧的扩展,基于libmemcache,它不支持一些较新的memcached特性,例如Binary Protocol和SASL。 安装`memcached`扩展时,需要确保系统已经安装了`libmemcached`和`libevent`库。`...

    python-memcached python-memcached

    Python-memcached是Python语言的一个库,用于与Memcached缓存系统进行交互。Memcached是一种高性能、分布式内存对象缓存系统,广泛应用于Web应用中,用于减轻数据库的负载,提高数据访问速度。Python-memcached库则...

    memcached php 各版本的dll

    2. **配置参数**:可能列出一些重要的配置选项,如`memcached.sess_binary`、`memcached.sess_consistent_hash`等,以及它们的作用和默认值。 3. **代码示例**:展示如何在PHP代码中使用Memcached API进行缓存操作,...

    memcached实例

    **Memcached 实例详解** Memcached 是一个高性能的分布式内存对象缓存系统,它能够将数据存储在内存中,以减少数据库的访问压力,提高应用的响应速度。本实例将带你深入了解如何安装 Memcached 客户端,并学习如何...

    php7 的memcached扩展php_memcached.dll扩展

    Memcached是一种分布式内存对象缓存系统,广泛应用于Web应用程序,以提高数据读取速度,减轻数据库负载。在PHP环境中,使用Memcached扩展可以方便地存储和检索数据,尤其适用于处理高并发场景。 `...

    Windows 下安装 Memcached1

    ### Windows 下安装 Memcached #### 一、概述 本文旨在详细介绍如何在Windows环境下安装Memcached。Memcached是一款高性能、分布式内存对象缓存系统,用于加速动态Web应用,减轻数据库负担。由于官方并未直接提供...

Global site tag (gtag.js) - Google Analytics