博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Msgpack有没有兴趣了解一下?
阅读量:4227 次
发布时间:2019-05-26

本文共 1611 字,大约阅读时间需要 5 分钟。

在我们做开发的时候经常会考虑到客户端服务器通信到问题,简单的来说就是客户端首发数据的问题。

那么,对于收发的数据这个内容,其实大有讲究,关于收发数据,我们通常情况下都会毫不犹豫的会说json数据,xml数据,基本上就这么多了,现在基本上都是json数据为主了,那我们今天来介绍的是比json还好用的数据结构------msgpack。

比json好用的数据其实有很多,例如上次我们提到过的protobuf,这是google提供的一个数据结构,能改很大程度上改善传送数据的大小和结构,默认读取的数据都会解析成字符串。那我们为什么会选则使用msgpack呢?

首先引用msgpack官网用一句话总结:

640?wx_fmt=png

msgpack会将数据打包成二进制的数据,它的数据格式与json类似,但是在存储时对数字、多字节字符、数组等都做了很多优化,减少了无用的字符,二进制格式,也保证不用字符化带来额外的存储空间的增加,所以在很大程度上减少来传输数据的大小。如果说把json数据的大小比作西瓜大小,那么protobuf就是苹果大小,msgpack呢,则是红豆大小,所以msgpack使用优势还是很明显的!

下面我们来看看来自msgpack官网的第二张图:

640?wx_fmt=png

一组json数据长度是是27个bytes,因为使用json这样的数据格式,在这个格式上就会消耗9个字节(分号,大括号之类的,这些数据其实),然后在数据的表示上也会有优化

,例如,关于数据Ture,在msgpack里面直接给一个字节就可以表示true(0xc3),关于结构化数据,例如字符串,数组等,类型后面加 1~4个字节,用来存字符串的长度,如果是字符串长度是256以内的,只需要1个字节,MsgPack能存的最长的字符串,是(2^32 -1 ) 最长的4G的字符串大小。如果是字典的类型的数据的话,需要加1~4个字节表示后面有多少个项。

关于如何使用Msgpack?

msgpack这么好用,我们应该如何使用它呢?

这和json用起来是一样的,无非就是打包和解包。这里我们采用python来演示一下。

想在python中使用msgpack,就需要安装msgpack模块,我们还是老样子,使用pip进行安装:

pip install msgpack

安装完之后导入这个模块,就可以使用了。

import msgpack msgpack.packb([1, 2, 3], use_bin_type=True) '\x93\x01\x02\x03' msgpack.unpackb(_, raw=False) [1, 2, 3]

如代码所示,我们采用packb对数据进行打包,使用unpackd进行解包。

我们还可以借助于bytesIO打包数据:

import msgpack from io import BytesIO buf = BytesIO() for i in range(100):    buf.write(msgpack.packb(i, use_bin_type=True)) buf.seek(0) unpacker = msgpack.Unpacker(buf, raw=False) for unpacked in unpacker: print(unpacked)

在使用packb和unpackb方法时可以默认只传一个参数,也就是要打包/解包的数据,其他都可以默认不传。

除了使用packed方法,msgpack很人性化的提供了另一种打包和解包的方法,这个方法和json打包/解包的方法一样,那就是dumps和loads方法了:

import msgpack a = msgpack.dumps([1, 2, 3], use_bin_type=True) msgpack.loads(a, raw=False)

以上就是小编这次给大家带来的msgpack的介绍了。

640?wx_fmt=gif

转载地址:http://thnqi.baihongyu.com/

你可能感兴趣的文章
Pro Oracle Collaboration Suite 10g
查看>>
Oracle SQL Tuning Pocket Reference
查看>>
Pro XML Development with Java Technology
查看>>
Pro OGRE 3D Programming
查看>>
Pro ASP.NET 2.0 in VB 2005, Special Edition
查看>>
Pro ASP.NET 2.0 in C# 2005, Special Edition
查看>>
PowerPoint 2007 for Starters: The Missing Manual [ILLUSTRATED]
查看>>
Rails for Java Developers [ILLUSTRATED]
查看>>
LINQ: The Future of Data Access in C# 3.0
查看>>
Everyday Scripting with Ruby: For Teams, Testers, and You [ILLUSTRATED]
查看>>
Beginning Excel Services
查看>>
Professional Rich Internet Applications: AJAX and Beyond
查看>>
Foundations of PEAR: Rapid PHP Development
查看>>
LINQ for Visual C# 2005
查看>>
LINQ for VB 2005
查看>>
Practical Subversion, Second Edition
查看>>
Essential MATLAB for Engineers and Scientists, Third Edition
查看>>
Pro SMS 2003
查看>>
Cisco: A Beginner's Guide, Fourth Edition (Beginner's Guide
查看>>
Google Earth For Dummies
查看>>