Memcache 内存对象缓存系统
简介:
Memcached 是一个高性能的分布式内存存储对象缓存系统,用于动态 WEB 应用以减轻数据库负载。
它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态、数据库驱动网站的速度。
Memcached 基于一个存储键/值对的 hashmap 。
其守护进程是用 C 写的,但是客户端可以用任何语言来编写,并通过 Memcached 协议与守护进程通信,且它不提供冗余; 当某个服务器停止运行或崩溃了,所有放在该服务器上的键/值对都将丢失。
下载地址:
http://jaist.dl.sourceforge.net/project/levent/libevent/libevent-2.0/libevent-2.0.22-stable.tar.gz
https://memcached.googlecode.com/files/memcached-1.4.15.tar.gz
1、安装 libevent 库
## 这是一个 memcached 所依赖的异步事件通知库
shell > tar zxf libevent-2.0.22-stable.tar.gz -C ../ shell > cd ../libevent-2.0.22-stable/ shell > ./configure ; make ; make install
2、安装 Memcached
shell > tar zxf memcached-1.4.15.tar.gz -C ../ shell > cd ../memcached-1.4.15/ shell > ./configure --prefix=/usr/local/memcached ; make ; make install
3、启动 Memcached
shell > /usr/local/memcached/bin/memcached -d -m 512 -p 11211 -u nobody -c 4096
## -l 监听地址,memcache 无身份验证功能,严禁在无防护情况下使用
## -d 以守护进程的形式运行
## -m 指定分配内存大小,单位 m
## -p 监听端口
## -u 运行用户
## -c 最大并发连接数
## -P PID 文件存放位置
## -f 增长因子
## 启动报错
/usr/local/memcached/bin/memcached: error while loading shared libraries: libevent-2.0.so.5: cannot open shared object file: No such file or directory
## 解决方法
shell > find / -name libevent-2.0.so.5 /usr/local/lib/libevent-2.0.so.5
shell > ln -s /usr/local/lib/libevent-2.0.so.5 /usr/lib64/
shell > /usr/local/memcached/bin/memcached -d -m 512 -p 11211 -u nobody -c 4096
shell > netstat -anpt | grep memcached tcp 0 0 0.0.0.0:11211 0.0.0.0:* LISTEN 13465/memcached tcp 0 0 :::11211 :::* LISTEN 13465/memcached
## 启动成功,监听所有地址,包括 ipv6 ,这样不安全,最好 -l 指定监听 IP
4、测试 Memcached
## 语法
command <key> <flags> <expiration time> <bytes> <value> command 包括:set add replace get delete key key 用于查找缓存值 flags 可以包括键值对的整型参数,客户机使用它存储关于键值对的额外信息 expiration time 在缓存中保存键值对的时间长度(以秒为单位,0 表示永远) bytes 在缓存中存储的字节点 value 存储的值(始终位于第二行)
shell > telnet 127.0.0.1 11211 # 登陆 memcached Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. set id 0 0 5 # 保存一个值 12345 STORED get id # 取值 VALUE id 0 5 12345 END replace id 0 0 5 # 更新值 88888 STORED get id # 查看是否更新 VALUE id 0 5 88888 END quit # 退出 Connection closed by foreign host. shell > telnet 127.0.0.1 11211 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. get id # 重新登陆还保存着 VALUE id 0 5 88888 END quit Connection closed by foreign host. shell > telnet 127.0.0.1 11211 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. get id VALUE id 0 5 88888 END delete id # 删除值 DELETED get id END quit Connection closed by foreign host.
分类:
(遗弃)MySQL、NoSQL
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· Ollama——大语言模型本地部署的极速利器
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· Windows编程----内核对象竟然如此简单?
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用