当前位置: 首页 > news >正文

libmemcached库api接口讲解一

前言:好多接口的用法都不怎么会,得学习一下具体的用法


memcached_st

✅ 一个连接 memcached 服务集群的“客户端实例”对象,用于管理连接、执行读写操作、设置行为、维护哈希环等一切功能。

它在使用中通常通过下面的方式创建:

memcached_st* memc = memcached_create(NULL);

平时调用的函数比如:

memcached_set(memc, ...)memcached_get(memc, ...)memcached_behavior_set(memc, ...)memcached_server_add(memc, ...)

都需要传入 memcached_st* 类型的参数(即你创建的那个 memc 变量),所有操作都基于这个

memcached_servers_reset() 是 libmemcached 中的一个函数,用于:

✅ 清空并重置一个 memcached_st 客户端实例中的服务器列表,包括内部的连接状态、哈希环(Ketama continuum)等。

很好,这四个函数是 libmemcached 的核心 API,分别用于配置和操作 Memcached 客户端。下面是它们各自的详细说明和用途:


1. 🔧 memcached_behavior_set(memc, ...)

✅ 功能:

设置客户端的行为参数(behavior),比如:

  • 是否使用一致性哈希
  • 是否使用非阻塞 I/O
  • 是否启用压缩、二进制协议等

🔍 例子:

memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_DISTRIBUTION, MEMCACHED_DISTRIBUTION_CONSISTENT);

这行代码的意思是:设置客户端使用一致性哈希(Ketama)进行 key 分布。

🔧 常用设置项:

设置项描述
MEMCACHED_BEHAVIOR_NO_BLOCK使用非阻塞 I/O
MEMCACHED_BEHAVIOR_TCP_KEEPALIVE保持 TCP 长连接
MEMCACHED_BEHAVIOR_BINARY_PROTOCOL使用二进制协议
MEMCACHED_BEHAVIOR_HASH设置 Hash 算法(如 MD5、CRC)

📚 官方文档:memcached_behavior_set


2. 🖧 memcached_server_add(memc, ...)

✅ 功能:

向客户端添加一个 Memcached 服务器(IP 地址 + 端口),可以调用多次添加多个服务器。

🔍 例子:

memcached_server_add(memc, "127.0.0.1", 11211);

代表向客户端添加本地的一个 Memcached 服务节点。

🧠 说明:

  • 这是构建哈希环或普通服务器列表的前提
  • 如果你不添加任何服务器,memcached_set()memcached_get() 是不能工作的

3. 📝 memcached_set(memc, key, key_length, value, value_length, expiration, flags)

✅ 功能:

向服务器写入一对 key-value 数据

🔍 例子:

memcached_set(memc, "mykey", 5, "myvalue", 7, 0, 0);

参数说明:

参数含义
key要存储的键名
key_length键名长度
value要存储的值
value_length值长度
expiration过期时间(0 表示永不过期)
flags自定义的整型标志位,可用于存储元数据

📚 官方文档:memcached_set


4. 🔍 memcached_get(memc, key, key_length, &value_length, &flags, &rc)

✅ 功能:

从服务器获取指定 key 对应的值

🔍 例子:

char* value = memcached_get(memc, "mykey", 5, &value_length, &flags, &rc);

参数说明:

参数含义
key / key_length要查找的 key 和它的长度
&value_length返回值的长度
&flags获取的标志位(可用于识别数据类型)
&rc返回码,判断操作是否成功

注意事项:

  • 返回值是动态分配的,你要用 free(value) 手动释放
  • 如果 rc != MEMCACHED_SUCCESS,说明没找到或出错

📚 官方文档:memcached_get


http://www.xdnf.cn/news/449659.html

相关文章:

  • 开发者的测试复盘:架构分层测试策略与工具链闭环设计实战
  • c++之 sort()排序
  • Unity 小提示与小技巧[特殊字符]
  • 基于C#实现中央定位服务器的 P2P 网络聊天系统
  • 大二java第一面小厂(挂)
  • C++【STL】(2)string
  • 直流电机风速仪
  • 免费Ollama大模型集成系统——Golang
  • 50天50个小项目 (Vue3 + Tailwindcss V4) ✨ |搭建项目框架
  • lua 作为嵌入式设备的配置语言
  • windows系统下编译libdxfrw项目进行dxf文件解析至qt项目中
  • Standalone 模式配置及运行
  • RabbitMQ是什么?应用场景有哪些?
  • 赋能行业数字化转型-报关单识别接口
  • 通用软件项目技术报告 - 导读II
  • 跨域的几种方案
  • MySQL 存储函数[特殊字符] VS 存储过程[特殊字符]
  • 二手车估值接口介绍
  • sql sql复习
  • python如何设置excel单元格边框样式
  • C++ 在 Windows 的开发经验与解决方案
  • 【Linux网络】TCP全连接队列
  • Android学习总结之kotlin篇(二)
  • 更换git位置并在pycharm中重新配置
  • Vue.js 组件开发指南
  • 力扣144题:二叉树的前序遍历(递归)
  • 倍福 TC3 PID 功能块 引脚功能及PID控制用法
  • windows运行bat闪退
  • 「Mac畅玩AIGC与多模态37」开发篇32 - 基于工作流的双插件信息整合与展示优化
  • 抢跑「中央计算+区域控制」市场,芯驰科技高端智控MCU“芯”升级