Memcached介绍
是一个免费开源、高性能、具备分布式内存对象的缓存系统,能通过减轻数据库负载加速动态WEB应用
- 本质是一个内存key-value缓存
- 协议简单,是基于问本行的协议
- 不支持数据的持久化,服务器关闭后数据会全部消失
- memcached简洁而强大,便于快速开发,上手较快
- 没有安全机制
Memcached实际理念
- 简单的键/值存储
- 服务器不关心数据格式,只做数据存储
- 服务端功能简单,很多逻辑依赖客户端实现
- 客户端专注如何选择读取和写入的服务器,以及无法连接服务器要执行的操作;服务器专注如何存储和管理何时清除或重用内存
- memcached势力之间没有通信机制
- 每个命令的复杂度为O(1)
- 慢速机器上的查询应该在1ms以下运行。高端服务器的吞吐量可以达到百万每秒
- 缓存自动清除机制
- 缓存失效机制
获取资源
# 安装依赖 因为memcached是基于libevent的事件处理,所以需要安装libevent
[root@hadoop-master mnt]# yum install libevent-devel
# 获取资源
[root@hadoop-master mnt]# wget https://memcached.org/latest
# 重命名文件
[root@hadoop-master mnt]# mv latest memcached.tar.gz
# 解压文件
[root@hadoop-master mnt]# tar -zxvf memcached.tar.gz
# 得到文件
[root@hadoop-master mnt]# ll
drwxrwxr-x 7 hadoop hadoop 8192 7月 29 19:40 memcached-1.6.6
文件配置
# 进入文件
[root@hadoop-master mnt]# cd memcached-1.6.6
# 指定存储位置
[root@hadoop-master mnt]# ./configure --prefix=/mnt/memcached
# 执行make命令
[root@hadoop-master mnt]# make && make install
# 进入可执行文件
[root@hadoop-master mnt]# cd memcached/bin
# 启动服务 指定用户和端口(用户不指定会报错)
[root@hadoop-master mnt]# ./memcached -u root -p 11211
启动参数
# 进程与连接参数
-p <num> 监听的TCP端口(默认: 11211)
-U <num> 监听的UDP端口(默认: 11211, 0表示不监听)
-l <ip_addr> 监听的IP地址。(默认:INADDR_ANY,所有地址)
-d 作为守护进程来运行
-u <username> 设定进程所属用户(仅root用户可以使用)
-P 保存Memcached进程pid到指定文件
# 内存相关参数
-m <num> 所有slab class可用内存的上限(默认:64MB)
-M 服务内存不够时禁用LRU,如果内存满了会报错
-n key-value——flags分配的最小内存空间,默认是48字节
-f chunk size增长因子,默认是1.25
-L 启动大内存页,进啊各地内存浪费,提升性能
# 并发连接参数
-c 最大的并发连接数,默认是1024
-t 线程数,默认4,因为Memcached采用的是NIO,所以太多线程作用不大
-R 每个event最大请求数,默认是20
-C 禁用CAS(可禁止版本计数,减少开销)
# 测试参数
-v 提示信息(在事件循环中打印错误/警告信息。)
-vv 详细信息(还打印客户端命令/响应)
-vvv 超详细信息(还打印内部状态的变化)
客户端连接
# 使用telnet命令进入
[root@hadoop-master mnt]# telnet 192.168.16.40 11211
-bash: telnet: 未找到命令 # 表明当前系统中没有telnet命令
# 检测telnet命令是否安装
[root@hadoop-master mnt]# rpm -qa telnet
# 如没有输出需要安装telnet
[root@hadoop-master mnt]# yum install telnet
# 再次执行查看telnet
[root@hadoop-master mnt]# rpm -qa telnet
telnet-0.17-65.el7_8.x86_64 # 有版本输出表示已安装
# 再次进入客户端
[root@hadoop-master src]# telnet localhost 11211
Trying ::1...
Connected to localhost.
Escape character is '^]'.
此时memcached数据库已经安装好了
常用命令