目录
一、搭建Memcached
【定义】:
●Memcache是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。简单的说就是将数据调用到内存中,然后从内存中读取,从而大大提高读取速度。
●Memcache是danga的一个项目,最早是LiveJournal 服务的,最初为了加速 LiveJournal 访问速度而开发的,后来被很多大型的网站采用。LJ每秒动态页面访问量几千次,用户700万。Memcached将数据库负载大幅度降低,更好的分配资源,更快速访问。
●Memcached是以守护程序方式运行于一个或多个服务器中,随时会接收客户端的连接和操作。
【Memcache和memcached】:
Memcache是这个项目的名称,而memcached是它服务器端的主程序文件名
【memcache与redis的区别和联系】:
●redis:支持比较多的数据类型(String/list/set/sortset/hash),redis支持集合计算的(set类型支持),每个key最大数据存储量为1G,redis是新兴的内存缓存技术,对各方面支持不完善,支持持久化操作。
●memcache:老牌的内存缓存技术,对相关领域支持比较丰富,window和linux都可以使用,各种框架(tp/yii等等)都支持使用,session的信息可以非常方便的保存到该memcache中,每个key保存的数据量最大为1M,支持的数据类型比较单一,就是String类型,不支持持久化。
●两者的相同之处在于把数据保存在内存中。
环境部署:
centos7.4 memcached服务端 IP地址:20.0.0.20
centos7.4 memcached客户端 IP地址:20.0.0.21
1.1 搭建memcached服务器(server)
1.1.1 修改主机名
hostnamectl set-hostname memcached
su
1.1.2 上传软件包并解压
cd /opt
tar zxvf libevent-2.1.8-stable.tar.gz ‘//解压事件库’
tar zxvf memcached-1.5.6.tar.gz '//解压源码包’
1.1.3 编译安装memcache和事件库
yum install gcc gcc-c++ make -y ‘//安装编译器’
cd libevent-2.1.8-stable/
./configure --prefix=/usr/local/libevent ‘//指定libevent目录’
make && make install
cd …
cd memcached-1.5.6/
./configure
–prefix=/usr/local/memcached
–with-libevent=/usr/local/libevent
make && make install
解释:
–prefix=/usr/local/memcached \ '//指定memcache路径
–with-libevent=/usr/local/libevent '//关联libevent事件库’
1.1.4 memcache优化
ln -s /usr/local/memcached/bin/ /usr/local/bin/
‘//建立memcache命令软连接’*
memcached -d -m 32m -p 11211 -u root
'//-d守护进程 ;-m缓存大小32M ;-p端口11211;-u:指定用户登录’
netstat -ntap |grep memcache
'//检查是否开启成功’
tcp 0 0 0.0.0.0:11211 0.0.0.0:* LISTEN 41801/memcached
tcp6 0 0 :::11211 ::😗 LISTEN 41801/memcached
1.1.5 memcache测试
yum install telnet -y
'//安装Telnet软件’
telnet 127.0.0.1 11211
'//使用telnet连接memcache’
Trying 127.0.0.1…
Connected to 127.0.0.1.
Escape character is ‘^]’.
1.2 搭建memcache客户端(client)
注意:在LAMP架构基础上搭建
可以参考我的博客:https://blog.csdn.net/weixin_48191138/article/details/108315065
1.2.1 修改主机名
hostnamectl set-hostname client
su
1.2.2 上传软件包并安装配置优化
cd /opt
tar zxvf memcache-2.2.7.tgz
cd memcache-2.2.7/
/usr/local/php5/bin/phpize
'//生成memcache配置文件’
./configure
–enable-memcache
–with-php-config=/usr/local/php5/bin/php-config
make && make install
解释:
–enable-memcache
‘//开启memcache’
–with-php-config=/usr/local/php5/bin/php-config
'//关联php配置文件’
Installing shared extensions: /usr/local/php5/lib/php/extensions/no-debug-zts-20131226/ '//共享文件位置,后面要用
vim /usr/local/php5/php.ini
…省略内容
‘//搜索extension_dir’
; Directory in which the loadable extensions (modules) reside.
; http://php.net/extension-dir
; extension_dir = “./”
; On windows:
; extension_dir = “ext” ‘//在下方插入两段内容’
extension_dir =usr/local/php5/lib/php/extensions/no-debug-zts-20131226/
‘//指向共享文件位置’
extension = memcache.so
‘//指向memcache模块’
…省略内容
1.3 测试服务端(client)
vim /usr/local/httpd/htdocs/index.php
<?php $memcache=new Memcache(); $memcache->connect('20.0.0.20',11211); $memcache->set('key','Memcache test Successfull!',0,60); $result=$memcache->get('key'); unset($memcache); echo$result; ?>systemctl restart httpd
浏览器访问20.0.0.21/index.php
二、数据库基本操作
2.1 常用选项
set:表示按照相应的存储该数据,没有的时候增加,有的覆盖。
add:表示按照相应的添加该数据,但是如果该已经存在则会操作失败。
replace:表示按照相应的替换数据,但是如果该不存在则操作失败
cas:检查更新,更新因子需要相等
append:键值后追加数据
prepend:键值前追加数据
delete:删除
flush_all:清楚所有缓存数据
2.2 连接数据库
telnet 127.0.0.1 11211
'//使用telnet连接memcache’
add 添加:
add username 0 0 5
//0:不使用序列号,0:不设置过期时间,5:指定字节长度
12345
//字节长度不为5则会报错
STORED
查看输入的键值:
get username
//查看
VALUE username 0 5
12345
END
gets username
//查看
VALUE username 0 5 1
//1:更新因子,每次更新+1
12345
END
replace 是更新的意思,如果当前的键值名称不存在,就会更新失败
set 也是更新的意思,如果当前的键值名称不存在,会新建一个键值
replace username 0 0 2
12
STORED
gets username
VALUE username 0 2 2
12
END
cas 更新,依据更新因子进行更新,相同则更新
cas username 0 0 5 2
//更新因子需要相同’
12345
STORED
get username
VALUE username 0 5
12345
END
键值后追加数据:
append username 0 0 3
'//username后追加三个字节’
abc
STORED
get username
VALUE username 0 8
12345abc
END
键值前追加数据:
prepend username 0 0 3
//username前追加三个字节
abc
STORED
get username
VALUE username 0 11
abc12345abc
END
删除键值:
delete username
//删除username
DELETED
清除所有缓存数据 flush_all
flush_all
OK
get username
END
quit
Connection closed by foreign host.