Memcache

 1、介绍

  MemCache是一个自由、源码开放、高性能、分布式的分布式内存对象缓存系统,用于动态Web应用以减轻数据库的负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高了网站访问的速度。 MemCaChe是一个存储键值对的HashMap,在内存中对任意的数据(比如字符串、对象等)所使用的key-value存储,数据可以来自数据库调用、API调用,或者页面渲染的结果。

  本质上,它是一个简洁的key-value存储系统。

  一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、提高可扩展性。

Memcache

  MemCache的工作流程如下:先检查客户端的请求数据是否在memcached中,如有,直接把请求数据返回,不再对数据库进行任何操作;如果请求的数据不在memcached中,就去查数据库,把从数据库中获取的数据返回给客户端,同时把数据缓存一份到memcached中(memcached客户端不负责,需要程序明确实现);每次更新数据库的同时更新memcached中的数据,保证一致性;当分配给memcached内存空间用完之后,会使用LRU(Least Recently Used,最近最少使用)策略加上到期失效策略,失效数据首先被替换,然后再替换掉最近未使用的数据。[2] 

2、Memcached安装和基本使用

1、Memcached安装

wget http://memcached.org/latest
tar -zxvf memcached-1.x.x.tar.gz
cd memcached-1.x.x
./configure && make && sudo make install
 
PS:依赖libevent
       yum install libevent-devel
       apt-get install libevent-dev

2、启动Memcached

memcached -d -m 10    -u root -l 192.168.49.130 -p 12000 -c 256 -P /tmp/memcached.pid
 
参数说明:
    -d 是启动一个守护进程
    -m 是分配给Memcache使用的内存数量,单位是MB
    -u 是运行Memcache的用户
    -l 是监听的服务器IP地址
    -p 是设置Memcache监听的端口,最好是1024以上的端口
    -c 选项是最大运行的并发连接数,默认是1024,按照你服务器的负载量来设定
    -P 是设置保存Memcache的pid文件

3、Memcached命令

存储命令: set/add/replace/append/prepend/cas
获取命令: get/gets
其他命令: delete/stats..

4、检查服务:

1、查看启动的memcache服务:

netstat -lp | grep memcached

2、查看memcache的进程号(根据进程号,可以结束memcache服务:“kill -9 进程号”)

ps -ef | grep memcached 

3、Python操作Memcached

安装API

python操作Memcached使用Python-memcached模块
下载安装:https://pypi.python.org/pypi/python-memcached

操作

import memcache

mc=memcache.Client(['192.168.49.130:12000'],debug=True) #连接
#debug = True 表示运行出现错误时,显示错误信息,上线后移除该参数
mc.set('foo','bar')  #通过键值对将数据放入缓存
# 设置失效时间
# mc.set('foo','bar',10) #10秒后失效
ret=mc.get('foo')      #通过键取值
print(ret)

可能出现的错误

MemCached: MemCache: inet:192.168.49.130:12000: connect: timed out.  Marking dead.

如果memcached服务启动正常,那就是Linux防火墙的原因,需要在iptables里开放12000端口的访问权限,

#查看状态:
iptables -L -n
#下面添加对特定端口开放的方法:
#使用iptables开放如下端口
/sbin/iptables -I INPUT -p tcp --dport 8000 -j ACCEPT
#保存
/etc/rc.d/init.d/iptables save
#重启服务
service iptables restart
#查看需要打开的端口是否生效?
service iptables status
解决方法

相关文章:

猜你喜欢
  • 2021-06-19
  • 2021-10-21
  • 2021-05-10
相关资源
相似解决方案