memcached-安装,工作原理

搭建memcached服务器:
memcached 提供分布式内存缓存服务,多个memcached服务器同时运行,但相互之间的缓存数据不同。一般使用目的是,缓存数据查询结果,减少数据访问次数,提高动态web应用的速度。
因为内存的固有特点 (不会永久存储 断电后数据丢失 空间有限 价格较贵),所以缓存存储数据具有小数据 、尽快被存储 、频繁被访问 、可再生的特点时,使用memcached服务。

这是一款开源且跨平台的软件 ,支持Linux windows Unix(FreeBSD) Mac OS X Solaris (此系统必须要memcached 1.2.5以上版本)

在ip地址是192.168.0.20的服务器部署memcached服务,服务环境:
192.168.0.11_client http://192.168.0.100/b.html
192.168.0.100_web_server —–> /var/www/html/b.html
192.168.0.20_mem 500M空间数据缓存

需要下载的软件包:
libevent-2.0.15-stable.tar.gz 运行环境包(memcached进程运行调用的事件程序)
memcached-1.4.5.tar.gz 提供memcached服务软件包
配置安装环境:

[root@pc205 桌面]# 
rpm    -q    gcc   gcc-c++   make
make-3.81-20.el6.x86_64
gcc-4.4.7-4.el6.x86_64
gcc-c++-4.4.7-4.el6.x86_64

安装libevent:

[root@pc205 桌面]#
tar -zxvf libevent-2.0.15-stable.tar.gz
cd libevent-2.0.15-stable
./configure   
make 
make   install 

安装memcached:

tar -zxvf memcached-1.4.5.tar.gz
cd memcached-1.4.5
./configure   
make 
make   install

启动memcached服务 :

[root@pc205 bin]# ./memcached -h
./memcached: error while loading shared libraries: libevent-2.0.so.5: cannot open shared object file: No such file or directory#无法找到libevent-2.0.so.5文件,无法启动
find   /        -name 'libevent-2.0.so.5'#查找该文件
结果:/usr/local/lib/libevent-2.0.so.5#查找结果,该文件存在,但是系统没有找到。系统没有查找该地址。

系统默认查找库文件地址为:/lib和/usr/lib,所以我们要把libevent软件提供库文件位置 添加到系统里:

[root@pc205 bin]# cat  /etc/ld.so.conf.d/libevent.conf#方法一:新建配置文件,指定库文件地址
/usr/local/lib/#该文件的内容
[root@pc205 bin]# ldconfig #刷新,重新加载文件,-v查看过程

cd /usr/local/bin/#启动memcached
./memcached -h

-h 查看帮助信息
-p tcp端口号 默认11211
-l 指定使用的 ip地址,默认使用所有地址接收用户的连接请求
-u 进程运行时的所有者 必须是root 用户
-m 划分多少物理内存给memcached服务做数据缓存空间 默认 64MB
-n 最小的物理存储单元默认48字节
-c 默认最大并发连接数1024
-f 划分最小存储单元时的增长因子倍数 默认 1.25倍
-d 在后台运行
-vvv 显示详细信息(启动信息 客户端连接信息 客户端存取数据信息)可以看到数据块分配情况

存储数据的方式:(涉及linux的内存管理方式,比较晦涩)

Page(页)分配给Slab的内存空间,默认是1MB。分配给Slab之后根据slab的大小切分成chunk。安装预先规定的大小,将分配的内存分割成各种特定长度的块(chunk),并把尺寸相同的块分成组就是chunk集合。
Chunk 用于缓存记录的内存空间。
Slab Class 特定大小的chunk的组。

cd /usr/local/bin
./memcached    -u  root    -m  100M   -n  10  -f   2   -d#开启memcached服务,所有者root,根据-m-n-f的参数划分成(10*2n)大小不等,数量不等的数据块,再根据实际存放数据的大小确定最节省空间的存放位置。以守护进程的方式运行,jobs命令查看不到。
killall -9 memcached#关闭memcached服务

测试memcached能否让客户连接自己,之后存数据 和 取数据:
memcached只提供存储空间,连接工具客户自己提供,存储/取数据的工具都由客户端自己提供。

命令格式:
set/get key values
存 /取 名 值

[root@pc205 ~]# telnet  192.168.0.20 11211
Trying 192.168.0.20...
Connected to 192.168.0.20.
Escape character is '^]'.
set age 0 180 2#0代码格式存放,存放时间180秒,存放2个字符值
99
STORED
get age#获取age的值
VALUE age 0 2
99
END
quit#退出
Connection closed by foreign host.

分布式存储原理:安装php,C#后就会自带读取数据的工具和相应的调度算法(例如hash算法)。
存储数据的过程(写):
set key values
先获取memcached 服务器台数数量。然后根据key和服务器台数 用 hash 做运算,根据运算结果选择memcached服务器,进行数据存储。
取数据的过程(读):
get key
先获取memcached 服务器台数数量,然后根据key和服务器台数 用 hash 做运算,根据运算结果查找数据存放memcached服务器,到相应的服务器查找。

缓存空间管理:
使用名为Least Recently Used(LRU)机制来分配空间删除“最近最少使用”的记录。当memcached的内存空间不足时,从最近未被使用的记录中搜索,并将其空间分配给新的记录(-M 参数禁止LRU功能,内存用尽时memcached会返回错误,不建议使用 memcached -M -m 1024)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值