Memcached 开源项目安装与使用指南
【免费下载链接】memcached memcached development tree 项目地址: https://gitcode.com/gh_mirrors/mem/memcached
概述
Memcached 是一个高性能、多线程、基于事件的内存键值缓存存储系统,专为分布式系统设计。它通过将数据存储在内存中来提供极快的读写速度,广泛应用于Web应用、数据库缓存、会话存储等场景。
本文将为您提供从源码编译安装到生产环境部署的完整指南,包含详细的配置说明、使用示例和最佳实践。
系统要求与依赖
基本依赖
- libevent: 事件通知库(必需)
- libseccomp: Linux系统调用过滤(可选,增强安全性)
- OpenSSL: TLS/SSL支持(可选,启用加密通信)
- autotools: 从Git源码构建时需要的工具
各系统安装依赖
# Ubuntu/Debian
sudo apt-get update
sudo apt-get install autotools-dev automake libevent-dev libseccomp-dev openssl libssl-dev pkg-config
# CentOS/RHEL
sudo yum install autoconf automake libevent-devel libseccomp-devel openssl-devel pkgconfig
# Fedora
sudo dnf install autoconf automake libevent-devel libseccomp-devel openssl-devel pkgconfig
安装方法
方法一:从源码编译安装(推荐)
1. 获取源码
git clone https://gitcode.com/gh_mirrors/mem/memcached.git
cd memcached
2. 构建与安装
# 标准构建
./autogen.sh
./configure
make
sudo make install
# 启用TLS支持
./configure --enable-tls
make
sudo make install
# 启用代理功能
./configure --enable-proxy
make
sudo make install
3. 验证安装
memcached -h
# 应显示memcached的帮助信息
方法二:使用包管理器
# Ubuntu/Debian
sudo apt-get install memcached
# CentOS/RHEL
sudo yum install memcached
# Fedora
sudo dnf install memcached
配置详解
主要配置参数
| 参数 | 说明 | 默认值 | 示例 |
|---|---|---|---|
-p | 监听端口 | 11211 | -p 11211 |
-m | 最大内存(MB) | 64 | -m 1024 |
-c | 最大连接数 | 1024 | -c 4096 |
-l | 监听IP地址 | 所有接口 | -l 127.0.0.1 |
-d | 守护进程模式 | 否 | -d |
-u | 运行用户 | 当前用户 | -u memcache |
-v | 详细输出 | 否 | -vv(更详细) |
-t | 线程数 | 4 | -t 8 |
配置文件示例
创建 /etc/memcached.conf:
# Memcached 配置文件
# 监听端口
-p 11211
# 最大内存使用(MB)
-m 2048
# 最大连接数
-c 4096
# 绑定IP地址
-l 127.0.0.1,::1
# 运行用户
-u memcache
# 详细日志
-vv
# 线程数
-t 8
# 内存分配策略
-M
# 键的最大长度
-I 1m
# SASL认证(可选)
-S
启动与管理
手动启动
# 前台运行(调试模式)
memcached -p 11211 -m 1024 -c 4096 -vv
# 后台守护进程
memcached -d -p 11211 -m 2048 -c 4096 -u memcache
系统服务管理
# 使用systemctl
sudo systemctl start memcached
sudo systemctl stop memcached
sudo systemctl restart memcached
sudo systemctl status memcached
# 启用开机启动
sudo systemctl enable memcached
监控与统计
# 使用telnet查看状态
telnet 127.0.0.1 11211
stats
stats items
stats slabs
quit
# 使用memcached-tool工具
memcached-tool 127.0.0.1:11211 stats
memcached-tool 127.0.0.1:11211 display
客户端使用示例
Python 客户端示例
import memcache
# 连接Memcached服务器
mc = memcache.Client(['127.0.0.1:11211'], debug=0)
# 设置键值对
mc.set('user:1001', {'name': '张三', 'email': 'zhangsan@example.com'})
# 获取数据
user_data = mc.get('user:1001')
print(user_data)
# 设置过期时间(30秒)
mc.set('session:token123', 'user_data', time=30)
# 自增操作
mc.incr('page_views', 1)
# 删除数据
mc.delete('user:1001')
PHP 客户端示例
<?php
// 连接Memcached
$memcached = new Memcached();
$memcached->addServer('127.0.0.1', 11211);
// 设置数据
$memcached->set('cache_key', 'cache_value', 3600); // 1小时过期
// 获取数据
$value = $memcached->get('cache_key');
echo $value;
// 批量操作
$memcached->setMulti([
'key1' => 'value1',
'key2' => 'value2',
'key3' => 'value3'
], 1800);
// 删除数据
$memcached->delete('cache_key');
?>
Java 客户端示例
import net.spy.memcached.MemcachedClient;
import java.net.InetSocketAddress;
public class MemcachedExample {
public static void main(String[] args) throws Exception {
// 创建客户端
MemcachedClient client = new MemcachedClient(
new InetSocketAddress("127.0.0.1", 11211)
);
// 设置数据(10分钟过期)
client.set("user:1001", 600, "用户数据");
// 获取数据
Object value = client.get("user:1001");
System.out.println(value);
// 自增操作
client.incr("counter", 1, 1);
// 关闭连接
client.shutdown();
}
}
高级功能
1. TLS/SSL 加密通信
# 启动带TLS的Memcached
memcached -p 11211 -Z -o ssl_chain_cert=server.pem -o ssl_key=server.key
# 客户端连接示例(Python)
import ssl
context = ssl.create_default_context()
# 配置TLS连接...
2. SASL 认证
# 启用SASL认证
memcached -S -o sasl
# 创建SASL用户
saslpasswd2 -a memcached -c username
3. 代理模式
# 构建带代理功能的版本
./configure --enable-proxy
make
# 启动代理
memcached -p 11211 -o proxy_config=proxy.lua
性能优化指南
内存分配策略
监控指标说明
| 指标 | 说明 | 健康值范围 |
|---|---|---|
curr_connections | 当前连接数 | < 最大连接数的80% |
cmd_get | Get命令次数 | - |
cmd_set | Set命令次数 | - |
get_hits | 缓存命中次数 | 命中率 > 90% |
get_misses | 缓存未命中次数 | - |
evictions | 数据淘汰次数 | 应尽量低 |
bytes | 已使用内存 | < 最大内存的85% |
优化建议
- 内存分配:根据对象大小分布调整Slab大小
- 连接池:使用连接池避免频繁创建连接
- 超时设置:合理设置连接和操作超时
- 监控告警:设置关键指标监控和告警
- 备份策略:重要数据应有备份机制
故障排除
常见问题及解决方案
-
连接拒绝
# 检查服务状态 systemctl status memcached # 检查端口监听 netstat -tlnp | grep 11211 # 检查防火墙 iptables -L -n -
内存不足
# 查看内存使用情况 echo "stats" | nc 127.0.0.1 11211 | grep bytes # 调整内存大小 memcached -m 4096 -M # 增加内存并禁用LRU自动淘汰 -
性能问题
# 监控性能指标 memcached-tool 127.0.0.1:11211 stats # 调整线程数 memcached -t 8 # 根据CPU核心数调整
安全最佳实践
- 网络隔离:仅允许可信IP访问
- 认证启用:使用SASL进行身份验证
- 加密传输:启用TLS加密通信
- 权限控制:使用非root用户运行
- 日志监控:启用详细日志并定期审计
集群部署方案
一致性哈希算法
客户端分片示例
from hashlib import md5
import memcache
class MemcachedCluster:
def __init__(self, servers):
self.servers = servers
self.clients = [memcache.Client([s], debug=0) for s in servers]
def _get_client(self, key):
# 使用一致性哈希选择服务器
hash_val = int(md5(key.encode()).hexdigest(), 16)
server_index = hash_val % len(self.servers)
return self.clients[server_index]
def set(self, key, value, time=0):
client = self._get_client(key)
return client.set(key, value, time)
def get(self, key):
client = self._get_client(key)
return client.get(key)
# 使用集群
cluster = MemcachedCluster([
'192.168.1.10:11211',
'192.168.1.11:11211',
'192.168.1.12:11211'
])
cluster.set('user:1001', 'data')
总结
Memcached 作为一个成熟的高性能内存缓存系统,在分布式应用中发挥着重要作用。通过本文的安装配置指南、使用示例和最佳实践,您应该能够:
- 成功部署Memcached服务
- 配置适合您业务需求的参数
- 在各种编程语言中使用Memcached
- 监控和优化性能
- 实施安全最佳实践
记住,缓存策略应该根据具体的业务场景来设计,合理的缓存过期时间、内存分配和监控告警是保证系统稳定运行的关键。
下一步建议:
- 深入阅读官方文档了解高级特性
- 在实际项目中实践各种缓存模式
- 建立完善的监控和告警体系
- 定期进行性能测试和优化
【免费下载链接】memcached memcached development tree 项目地址: https://gitcode.com/gh_mirrors/mem/memcached
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



