Memcached 协议
2022-09-21 本文已影响0人
右耳菌
1. Memcached 简介
1.1 Memcached 是什么?
是一种
- 高性能
- 多线程基于事件处理机制
- k-v缓存系统
相关网址:
- https://github.com/memcached/memcached
- https://github.com/memcached/memcached/wiki/TutorialCachingStory (故事形式讲述memcached)
1.2 Memcached 协议是什么?
-
协议:
本质是通信双方为了达成一项操作而制定的一种数据交互规范:双方都能识别,能够阐明意图,保证顺序; -
Memcached协议:
- memcached服务的具象化,以特定的格式规范来提供统一标准的memcached服务;
- 任何只要遵守该格式的客户端都能够和memcached服务建立连接,享受memcached服务;
- memcached服务端和客户端通过网络[TCP,UDP]或者unix domain socket[主机内进程间通信]进行相关服务协议交互;
- 通常使用11211端口监听,使用libevent框架进行事件处理;
-
Text Protocol
文本协议,当客户端和服务端建立好连接后,直接通过文本行进行交互 -
Binary Protocol
memcached 1.4.0之后推出的一种基于二进制的结构化协议
2. 文本和二进制协议
2.1 文本协议
官方介绍: https://github.com/memcached/memcached/blob/master/doc/protocol.txt
命令格式:
1.存储命令格式:
<command name><key><flags> <exptime><bytes>[noreply]\r\n
<data block>\r\n
存储命令格式:
set hello 0 90 9\r\n
memcached\r\n
STORED\r\n
2.取值命令格式:
command name> <key>[noreply]\r\n
取值命令格式:
get hello\r\n
Value hello 0 9\r\n
Memcached\r\n
END\r\n
2.2 二进制协议
官方介绍: https://github.com/memcached/memcached/wiki/BinaryProtocolRevamped
命令格式:
2.3 协议对比
3. Memcached 命令
官网: https://github.com/memcached/memcached/wiki/Commands
3.1 存储相关命令
- set key flags exptime bytes [noreply] value
- add key flags exptime bytes [noreply] value
- replace key flags exptime bytes [noreply] value
- append key flags exptime bytes [noreply] value
- prepend key flags exptime bytes [noreply] value
- cas key flags exptime bytes unique_cas_token [noreply] value
3.2 读取命令
- get key1 key2 key3
- gets key1 key2 key3
3.3 其他命令
- delete key [noreply]
- incr key increment_value
- decr key decrement_value
- flush_all [time] [noreply]
4. Memcached 使用场景
所有不需要redis复杂数据结构的场景都可以使用
- 文本: key 250
- 二进制: 65535
- value: 最小1K,默认1M,最大1G
特定场景:CAS命令
如果觉得有收获,欢迎点赞和评论,更多知识,请点击关注查看我的主页信息哦~