memcached内存数据库——部署及操作
发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,概述 Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcac
千家信息网最后更新 2025年12月03日memcached内存数据库——部署及操作
概述
Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信。
特点
1、协议简单;2、基于libevent的事件处理;3、内置内存存储方式;4、memcached不互相通信的分布式。存储方式
为了提高性能,memcached中保存的数据都存储在memcached内置的内存存储空间中。由于数据仅存在于内存中,因此重启memcached、重启操作系统会导致全部数据消失。另外,内容容量达到指定值之后,就基于LRU(Least Recently Used)算法自动删除不使用的缓存。memcached本身是为缓存而设计的服务器,因此并没有过多考虑数据的永久性问题。
工作原理
Memcached处理的原子是每一个(key,value)对(以下简称kv对),key会通过一个hash算法转化成hash-key,便于查找、对比以及做到尽可能的散列。同时,memcached用的是一个二级散列,通过一张大hash表来维护。
Memcached有两个核心组件组成:服务器端(server)和客户端(client),在一个memcached的查询中,client先通过计算key的hash值来确定kv对所处在的server位置。当server确定后,客户端就会发送一个查询请求给对应的server,让它来查找确切的数据。因为这之间没有交互以及多播协议,所以memcached交互带给网络的影响是最小化的。
实验环境
memcached服务器 192.168.13.128 (memcached-1.5.6.tar.gz、libevent-2.1.8-stable.tar.gz)memcache客户端 192.168.13.129 (memcache-2.2.7.tgz 、LAMP)1,部署memcached服务器
[root@server ~]# yum install -y gcc gcc-c++ make ##安装环境组件[root@server ~]# mount.cifs //192.168.100.3/LNMP-C7 /mnt/Password for root@//192.168.100.3/LNMP-C7: [root@server ~]# cd /mnt/memcached/[root@server memcached]# tar zxvf libevent-2.1.8-stable.tar.gz -C /opt/ ##事件通知库 [root@server memcached]# tar zxvf memcached-1.5.6.tar.gz -C /opt/ ##解压事件库服务端[root@server memcached]# cd /opt/libevent-2.1.8-stable/[root@server libevent-2.1.8-stable]# ./configure \ ##配置> --prefix=/usr/local/libevent ##安装路径[root@server libevent-2.1.8-stable]# make && make install ##编译安装[root@server libevent-2.1.8-stable]# cd /opt/memcached-1.5.6/[root@server memcached-1.5.6]# ./configure \> --prefix=/usr/local/memcached \> --with-libevent=/usr/local/libevent ##关联libevent事件通知库[root@server memcached-1.5.6]# make && make install[root@server memcached-1.5.6]# ln -s /usr/local/memcached/bin/* /usr/local/bin/ ##建立软连接[root@server memcached-1.5.6]# memcached -d -m 32m -p11211 -uroot ##开启服务##-d守护进程 ;-m缓存大小32M ;-p端口11211[root@server memcached-1.5.6]# netstat -ntap | grep memcached ##查看端口[root@server memcached-1.5.6]# systemctl stop firewalld.service [root@server memcached-1.5.6]# setenforce 0[root@server memcached-1.5.6]# yum install telnet -y ##安装telnet软件[root@server memcached-1.5.6]# telnet 127.0.0.1 11211 ##本地测试登录add username 0 0 7 ##0:不设置序列号0:不设置过期事件7:字节长度1234567STOREDadd users 0 0 7123ERRORget username ##查看VALUE username 0 71234567ENDgets username ##查看VALUE username 0 7 1 ##1:更新次数1234567END2,在memcache客户端安装lamp结构
##lamp结构见前博客有具体操作##测试数据工作是否正常[root@client php-5.6.11]# mysql -u root -pabc123 //进入数据库CREATE DATABASE sky; //创建一个数据库为 skyGRANT all ON sky.* TO 'skyuser'@'%' IDENTIFIED BY 'admin123'; //提权flush privileges; //刷新数据库##修改PHP首页[root@client php-5.6.11]# vim /usr/local/httpd/htdocs/index.php Success!!"; else echo "Fail!!"; mysql_close(); ?>3,在客户端安装memcache客户端
[root@client ~]# yum install autoconf -y[root@client ~]# cd /mnt/memcached/[root@client memcached]# tar zvxf memcache-2.2.7.tgz -C /opt/[root@client memcached]# cd /opt/memcache-2.2.7/[root@client memcache-2.2.7]# /usr/local/php5/bin/phpize ##增加PHP模块生成脚本[root@client memcache-2.2.7]# ./configure \> --enable-memcache \ ##开启memcache> --with-php-config=/usr/local/php5/bin/php-config ##关联PHP配置文件[root@client memcache-2.2.7]# make && make install/usr/local/php5/lib/php/extensions/no-debug-zts-20131226/ ##共享文件位置,后面需要用到[root@client memcache-2.2.7]# vim /usr/local/php5/php.ini ##修改php配置文件extension_dir = "/usr/local/php5/lib/php/extensions/no-debug-zts-20131226/" ##共享文件位置extension = memcache.so ##指向memcache模块4,用客户端检测服务端是否正常连接
[root@client memcache-2.2.7]# vim /usr/local/httpd/htdocs/index.phpconnect('192.168.13.128',11211); ##连接Memcached服务器地址$memcache->set('key','Memcache test Successfull!',0,60);$result=$memcache->get('key');unset($memcache);echo$result;?>[root@client memcache-2.2.7]# service httpd stop ##重启[root@client memcache-2.2.7]# service httpd start##浏览器访问
5,memcache数据库基本操作
新建数据:
add username 0 0 7 //添加数据(两个0表示:不进行压缩和序列化标识,数据过期时间为永不过期;标识号是7就需要输入7位数。)allways //输入一个7位数查询数据:
get username //查询数据gets username更新数据:
set username 0 0 10 //更新信息,若键名不存在,则自行添加everythingreplace username 0 0 8 //更新信息,若键名不存在,则报错12345678检测/查看 更新数据:
gets username //检测更新VALUE username 0 8 412345678追加数据:
append username 0 0 7 //键值后追加数据exampleprepend username 0 0 2 //键值前追加数据un清除数据:
delete username //清除指定的键值数据flush_all //清除所有缓存数据OK查看服务器统计信息:
stats //显示状态信息stats items //返回所有键值对的统计信息stats cachedump 1 0 //返回指定存储空间的键值对 stats slabs //显示各个slab的信息stats sizes //输出所有item的大小和个数stats reset //清空统计数据谢谢阅读!
数据
服务
客户
客户端
数据库
信息
服务器
缓存
存储
更新
内存
事件
文件
查询
位置
进程
检测
统计
配置
两个
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
java添加数据库锁lock
软件开发行业的进项是什么
竞速数据库管理的优势
小米云端数据库
ncbi下载序列选哪一个数据库
个性化网络安全产品
河北网络技术信息热线
小米c软件开发工程师招聘
scp文件到多台服务器
法院开展网络安全自查报告
sql清空表中的数据库表
计算机网络安全ppt内容
广东省网络安全培训机构
数据库bit类型用什么
怎么在手机上查看数据库
计算机软件开发外包方式
数据库生日查询年龄区间
软件开发公司一对一
亲少年网络安全
把客户端ip转换成服务器ip
建立全区河湖水域划界数据库
关系数据库并运算
廊坊市互联网科技
山东省人大常委会网络安全处
网络安全手抄报参赛复杂
python如何修改服务器ip
境外服务器境内怎么登录
银行软件开发中心和理财子公司
江西质量软件开发服务价钱
数据库是进程么