三、NOSQL之Memcached缓存服务实战精讲第二部
1.Memcached服务安装
Memcached的安装比较简单,很多平台都是支持Memcached,常见的有:Linux 、Windows
服务端端:
- wget https://github.com/downloads/libevent/libevent/libevent-2.0.19-stable.tar.gz
- tar -zxvf libevent-2.0.19-stable.tar.gz
- cd libevent-2.0.19-stable
- ./configure
- make
- make install
- tar -zxvf memcached-1.4.0.tar.gz
- cd memcached-1.4.0
- ./configure
- make
- make install
2.启动memcached
查看路径:which memcached
[root@djw3 ~]# which memcached
/usr/local/bin/memcached
查看帮忙:/usr/local/bin/memcached -h
常用参数说明:-p 指定监听的端口
-l 指定监控的地址(默认本机所有网卡的地址都监听)
-m 分配多大的内存区(默认是64M)
-c 默认能承受多少并发,默认是1024
-u 指定用户
-d 后台运行
-P pid文件,当前的进程写入到哪个文件,系统通过PID管理文件方便
-vv 以very vrebose模式启动,出错的时候用此命令系统
登陆:memcached -p 11211 -u root -m 16m -c10240 -d
查看:lsof -i :11211
如果要启动的话,在启动一个不同的端口,相同的命令就可以了。
3.操作memcached存放数据
1) 用nc命令 (nc命令想要连接到某处)
存:printf "set key008 0 0 10\r\noldboy0987\r\n"|nc 127.0.0.1 11211
[root@djw3 ~]# printf "set key008 0 0 10\r\noldboy0987\r\n"|nc 127.0.0.1 11211
STORED --->stored 标识添加成功
取:printf "get key008\r\n"|nc 127.0.0.1 11211
[root@djw3 ~]# printf "get key008\r\n"|nc 127.0.0.1 11211
VALUE key008 0 10
oldboy0987
END
删除: printf "delete key008\r\n" |nc 127.0.0.1 11211
2) telnet 命令操作数据
telnet 127.0.0.1 11211 ---反应过慢,一般不推荐
[root@djw3 ~]# telnet 127.0.0.1 11211
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
set key 0 0 10
oldboy
在telnet中,通过stats 可以看见memcached状态,通过quit可以退出
printf "stats\r\n"|nc 127.0.0.1 11211
4.Memcached的操作语法
<command name> <key> <flags> <exptime> <bytes>
set key 0 0 10
exptime:0表示不过期,其他表示到期就删除
flag:可以理解为一个标识符
bytes:数据占用哪个区块长度,比如10bytes的区块长度
5.关于Memcached的关闭
1)如果数据不是重要的话:pkill memcached、kill 进程号
2)指定pid开启后,关闭pid:
开启:memcached -p 11211 -u root -m 16m -c10240 -d -P /var/run/11211.pid
关闭:kill `cat /var/run/11211.pid`
注意;1) nginx、apache、mysql都可以通过pid的方式杀掉 2) pid进程号是杀除了,但是文件会保留下来,如下:
[root@djw3 run]# ll /var/run/
total 84
-rw-r--r-- 1 root root 6 Nov 12 03:03 11211.pid
-rw-r--r-- 1 root root 6 Nov 12 03:04 11213.pid
-rw-r--r-- 1 root root 4 Nov 9 19:40 auditd.pid
6.企业工作场景中如何配置memcached ?
在工作中,一般都是开发人员提出需求,说要部署一个memcache,做为数据缓存。我们运维接到需求,需要和开发确定,(显得水平高)内存指定多大,根据业务有多少数据要缓存来确定。还要确定业务重要性,进而采取负载均衡,分布式等架构,最后确定并发连接数。
实际的部署,一般都是安装memcached服务端,并确保能够连接上。
7.Lnmp一体环境安装Memcached客户端
1) 下载客户端: wget http://pecl.php.net/get/memcache-2.2.5.tgz
2) 安装客户端memcached:
tar zxvf memcache-2.2.5.tgz
cd memcache-2.2.5
/application/php/bin/phpize
./configure --enable-memcache --with-php-config=/application/php/bin/php-config --with-zlib-dir
make
make install
查看,安装会有的模块:
[root@djw1 memcache-2.2.5]# ll /application/php5.3.27/lib/php/extensions/no-debug-non-zts-20090626/
total 2324
-rwxr-xr-x 1 root root 414245 Jun 13 14:45 eaccelerator.so
-rwxr-xr-x 1 root root 1070977 Jun 14 02:15 imagick.so
-rwxr-xr-x 1 root root 246656 Jun 15 13:01 memcache.so
配置php.ini文件内容
extension_dir = "/application/php/lib/php/extensions/no-debug-non-zts
-20090626/"
extension = memcache.so
检查客户端memcached是否安装成功:

只有安装了memcached客户端,那么php等程序才能通过memcached客户端的库访问memcached服务器的服务
测试代码:
<?php
$memcache = new Memcache;
$memcache->connect('127.0.0.1', 11211) or die ("Could not connect");
$memcache->set('key001', 'oldboy001');
$memcache->set('key002', 'oldboy002');
$get_value01 = $memcache->get('key001');
$get_value02 = $memcache->get('key002');
echo $get_value02."<br>";
echo $get_value01;
?>
测试结果:

8.memcached的应用
1)数据库前端的内存缓存 2)集群中的session共享存储
9.如何实现集群中的session共享存储
在例如负载均衡架构中,我们需要保持会话共享,那么就需要所有的web服务器都公用session,可以选择NFS,但是如果选择memcache,会更加的快速,因此,如下配置就可以实现memcached的session共享。
在php.ini文件中配置如下:
session.save_handler = memcache
session.save_path = "tcp:// 192.168.0.102:11211"
10. memcached的分布式集群
memcached需要用url_hash算法,在nginx的模块中有一致性hash算法。访问一个web服务器后,指定到唯一的一台memcached上。
11.memcached服务的多种操作管理方式
1)客户端请求memcached如果没有,就会请求数据库,同时是由客户端将数据传到memcached.
2) 如果客户端更新数据,那么就将数据放到数据库上,这时数据库有两种选择,一种是直接更新memcached,一种是通知memcached过期了,删除数据。下次请求时有客户端放到memcached上面。
三、NOSQL之Memcached缓存服务实战精讲第二部的更多相关文章
- 二、NOSQL之Memcached缓存服务实战精讲第一部
1.Memcached是一套数据缓存系统或软件. 用于在动态应用系统中缓存数据库的数据,减少数据库的访问压力,达到提升网站系统性能的目的:Memcached在企业应用场景中一般是用来作为数据库的cac ...
- Java生鲜电商平台-SpringCloud微服务开发中的数据架构设计实战精讲
Java生鲜电商平台-SpringCloud微服务开发中的数据架构设计实战精讲 Java生鲜电商平台: 微服务是当前非常流行的技术框架,通过服务的小型化.原子化以及分布式架构的弹性伸缩和高可用性, ...
- openstack (3)---------部署memcached缓存服务,keystone服务
一.memcached概念 Memcached 是一个开源的.高性能的分布式内存对象缓存系统.通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高网站访问速度,加速动态WEB应用.减轻数据库负载 ...
- [网站日志]当Memcached缓存服务挂掉时性能监视器中的表现
我们用的Memcached缓存服务是阿里云OCS,今天晚上遇到了一次OCS挂掉的情况(计划中的升级),看一下性能监视器中的表现,也许对分析黑色1秒问题有帮助. 应用日志中错误: 2014-06-05 ...
- Keepalived原理与实战精讲--VRRP协议
. 前言 VRRP(Virtual Router Redundancy Protocol)协议是用于实现路由器冗余的协议,最新协议在RFC3768中定义,原来的定义RFC2338被废除,新协议相对还简 ...
- (转)不看绝对后悔的Linux三剑客之sed实战精讲
不看绝对后悔的Linux三剑客之sed实战精讲 原文:http://blog.51cto.com/hujiangtao/1923718 二.Linux三剑客之sed命令精讲 1,前言 我们都知道,在L ...
- (转)不看绝对后悔的Linux三剑客之grep实战精讲
不看绝对后悔的Linux三剑客之grep实战精讲 原文:http://blog.51cto.com/hujiangtao/1923675 https://www.cnblogs.com/peida/a ...
- [转载]Memcached缓存服务的简单安装
1.Linux下的安装方法 下载:wget http://memcached.org/latest tar -zxvf memcached-1.x.x.tar.gz cd memcached-1.x. ...
- (转)不看绝对后悔的Linux三剑客之awk实战精讲
原文:http://blog.51cto.com/hujiangtao/1923930 一.Linux三剑客之awk命令精讲 第1章 awk基础入门 1.1 awk简介 awk不仅仅时linux系统中 ...
随机推荐
- 使用dbcp连接mysql
1.创建dbcp.properties 文件 driver=com.mysql.jdbc.Driver url=jdbc:mysql:///zhang username=root password= ...
- C++基础--随机数
C/C++要产生随机数的方法一般是采用rand()函数核srand()函数来实现的. rand()函数返回的是一个伪随机数,这个函数内部采用线性同余法来实现伪随机数,而这个伪随机数是在一定范围内可以看 ...
- Python模拟登录哔哩哔哩
嘿,各位小伙伴中午好呀,今天要带来点什么干货呢,就从我的实际开发中来给大家带来一个案例吧,如何自动登录哔哩哔哩. ! 接到老大通知,让我自动写一个自动登录哔哩哔哩的脚本,我当然是二话不说直接开怼,咱们 ...
- React之生命周期函数(16.3以后新版本)
学习链接: https://www.jianshu.com/p/514fe21b9914 学习链接:https://zhuanlan.zhihu.com/p/38030418 学习链接:https:/ ...
- 深入浅出Python装饰器
1.前言 装饰器是Python的特有的语法,刚接触装饰器的同学可能会觉得装饰器很难理解,装饰器的功能也可以不用装饰器实现,但是装饰器无疑是提高你Python代码质量的利器(尤其是使用在一些具有重复功能 ...
- Neo4j--节点的增删查改基本用法
注 node-name 和 label-name node-name 有点句柄的味道. 从面向对象来理解,label-name相当于一个类,node-name相当于这个类的对象. 类比关系型数据库的 ...
- Lock wait timeout exceeded; try restarting transaction(mysql事务锁)
现场环境客户要求删数据(界面没法直接操作),于是直接在数据库进行查询删除了,删完发现界面依然能查到删除后的数据,又用sql语句进行删除,发现报了错:Lock wait timeout exceeded ...
- 吴裕雄--天生自然MySQL学习笔记:MySQL 删除数据表
MySQL中删除数据表是非常容易操作的, 但是在进行删除表操作时要非常小心,因为执行删除命令后所有数据都会消失. 语法 以下为删除MySQL数据表的通用语法: DROP TABLE table_nam ...
- 吴裕雄--天生自然MySQL学习笔记:MySQL 删除数据库
使用普通用户登陆 MySQL 服务器,可能需要特定的权限来创建或者删除 MySQL 数据库,所以使用 root 用户登录,root 用户拥有最高权限. 在删除数据库过程中,务必要十分谨慎,因为在执行删 ...
- UML-状态机图和建模
1.目标:如何画状态机图 2.定义:描述某个对象的状态.感兴趣的事件.以及对象响应该事件的行为. 转换:用箭头表示 状态:用圆角矩形表示 事件:指的是一件值得注意的事情的发生.如:拿起电话. 当事件“ ...