缘起
话说PHP操作Memcache有两个常用的模块: Memcache和Memcached;不过,请注意,这两个模块是不能混用的,如:使用Memcache写,使用Memcached读。
原因
话说Memcache协议中有一个叫做flag的东西,可以指定内容是否被压缩等等。Memcache模块和Memcached模块对该flag的定义是不一样的,如下:
Memcache
#define MMC_SERIALIZED 1
#define MMC_COMPRESSED 2
Memcached
#define MEMC_VAL_IS_STRING 0
#define MEMC_VAL_IS_LONG 1
#define MEMC_VAL_IS_DOUBLE 2
#define MEMC_VAL_IS_BOOL 3
#define MEMC_VAL_IS_SERIALIZED 4
#define MEMC_VAL_IS_IGBINARY 5
#define MEMC_VAL_IS_JSON 6
#define MEMC_VAL_IS_MSGPACK 7
#define MEMC_VAL_COMPRESSED (1<<0)
#define MEMC_VAL_COMPRESSION_ZLIB (1<<1)
#define MEMC_VAL_COMPRESSION_FASTLZ (1<<2)
比较
1. Memcache只定义了压缩和序列化
2. Memcached 定义了数据类型、压缩、序列化、压缩方式