文档章节

【CentOS6】【Windows】 Memcache 介绍、安装、配置、应用

Hi徐敏
 Hi徐敏
发布于 2015/04/11 17:02
字数 1710
阅读 64
收藏 1

介绍

在以往多年的J2EE开发中,用到最多最频繁的是ehcache,乐此不疲,几个配置就能搞定一切。随着分布式和超大集群的部署,ehcache就没这么简单方便了,memcache不仅能存储常规的大量数据库的数据,同时在某些特定场景,比如集群的Session控制,几乎所有的原子性incr,decr场景中都可以很简单的使用,在点赞计数、评论计数、api访问频率控制、密码输入错误次数等等需要临时存储的地方,可以几乎不用考虑销毁的问题,这些都是memcache不错的选择。

Memcahce官网:最新版本1.4.22

http://memcached.org/

What is Memcached?

Free & open source, high-performance, distributed memory object caching system, generic in nature, but intended for use in speeding up dynamic web applications by alleviating database load.

Memcached is an in-memory key-value store for small chunks of arbitrary data (strings, objects) from results of database calls, API calls, or page rendering.

Memcached is simple yet powerful. Its simple design promotes quick deployment, ease of development, and solves many problems facing large data caches. Its API is available for most popular languages.

安装

memcached目前只提供linux版本,windows版本在部分比较老的版本中有提供,在win8.1下一只安装失败是个坑,WIN7有效。

Windows下的Memcache安装
1. 下载memcache的 windows稳定版,解压放某个盘下面,比如在c:\memcached
2. 在终端(也即cmd命令界面)下输入 ‘c:\memcached\memcached.exe -d install’ 安装
3. 再输入: ‘c:\memcached\memcached.exe -d start’ 启动。NOTE: 以后memcached将作为windows的一个服务每次开机时自动启动。这样服务器端已经安装完毕了。

CENTOS

1. 安装Memcached 
yum -y install memcached 
2. 验证安装 
memcached -h 应该会输出一些帮助信息 
3. 将memcache加入启动列表 
chkconfig --level 2345 memcached on 
4. 配置Memcache 
vi /etc/sysconfig/memcached 文件中内容如下 PORT=”11211″ 端口 
-A RH-Firewall-1-INPUT -p tcp -s 127.0.0.1 --dport 11211 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 11211 -j ACCEPT
 
切记开启memcached
----------------------------------------
service memcached start


配置

在平常的使用中,memcached没有加入用户名和密码的验证,为了提高memcache的使用安全性,通常使用memcached+sasl实现用户的验证,这里同阿里云提供的OCS是一致的,不同的在于阿里云提供的OCS服务不用安装了,如果是自建数据中心,还是需要自己安装sasl服务器,具体的sasl安装方式:

memcached是基于libevent的事件处理

      libevent是一个事件触发的网络库,适用于windows、linux、bsd等多种平台,内部使用select、epoll、kqueue等系统调用管理事件机制。而且libevent在使用上可以做到跨平台,而且根据libevent官方网站上公布的数据统计,似乎也有着非凡的性能
欲了解更更多关于libevent:
http://monkey.org/~provos/libevent/

启用SASL验证机制

        SASL全称Simple Authentication and Security Layer,是一种用来扩充C/S模式验证能力的机制。 
简单来说SASL是一个胶合(glue)库,通过这个库把应用层与形式多样的认证系统整合在一起。这有点类似于 PAM,但是后者是认证方式,决定什么人可以访问什么服务,而SASL是认证过程,侧重于信任建立过程,这个过程可以调用PAM来建立信任关系。在这里Memcached就是上面提到的应用层,具体的认证交给SASL库,SASL会根据相应的认证机制来完成验证功能。
默认情况下,Red Hat Enterprise Linux安装程序会自动安装Cyrus-SASL认证包。可使用下面的命令检查系统是否已经安装了Cyrus-SASL认证包或查看已经安装了何种版本。

Java代码  

  1. rpm -qa | grep sasl 

下列结果表示已经安装.

Java代码  

  1. cyrus-sasl-plain-2.1.23-8.el6.i686  

  2. cyrus-sasl-devel-2.1.23-8.el6.i686  

  3. cyrus-sasl-2.1.23-8.el6.i686  

  4. cyrus-sasl-lib-2.1.23-8.el6.i686  

  5. cyrus-sasl-gssapi-2.1.23-8.el6.i686  

  6. cyrus-sasl-md5-2.1.23-8.el6.i686  

 

查看密码验证机制,输入:

Java代码  

  1. saslauthd -v  

显示如下:

Java代码  

  1. saslauthd 2.1.23  

  2. authentication mechanisms: getpwent kerberos5 pam rimap shadow ldap  

当前可使用的密码验证方法有getwent、kerberos5、pam、rimap、shadow和ldap
为简单起见,这里准备采用shadow验证方法,也就是直接用/etc/shadow文件中的用户账户及密码进行验证。因此,在配置文件/etc/sysconfig/saslauthd中,应修改当前系统所采用的密码验证机制为shadow,即:

Java代码  

  1. MECH=shadow  

 

重启saslauthd进程

Java代码  

  1. /etc/init.d/saslauthd restart  

结果如下:

Java代码  

  1. 停止 saslauthd:[确定]  

  2. 启动 saslauthd:[确定]  

测试SASL验证功能,查看saslauthd进程是否运行

Java代码  

  1. ps aux | grep saslauthd  

 如果没有发现saslauthd进程,则可用下面的命令启动该进程并设置它开机自启动

Java代码  

  1. /etc/init.d/saslauthd start  

  2. chkconfig saslauthd on  

可用下面的命令测试saslauthd进程的认证功能

Java代码  

  1. /usr/sbin/testsaslauthd –u portaluser –p portaluserpassword  

其中,portaluser为Linux系统中的用户账户名,portaluserpassword为用户portaluser的密码。该命令执行后,如果出现如下所示的结果,则表示saslauthd的认证功能已起作用

Java代码  

  1. 0: OK "Success."  

解决方法:

vim /etc/sysconfig/saslauthd

#MECH=pam

改成

MECH=shadow

在终端下输入命令:setsebool -P allow_saslauthd_read_shadow 1 就可以了

亦可以自己添加用户给指定的程序,使用如下命令:

Java代码  

  1. /usr/sbin/saslpasswd2 -a memcached -c portaluser  

要求输入密码:

Java代码  

  1. Password:   

  2. Again (for verification):   

 添加完用户可以使用上面测试命令验证一下是否成功,添加的用户必须是系统中的用户,上面命令的意思就是,给memcached服务添加可访问的用户,没有添加的系统用户仍然是不可以访问该服务的。

sasl搞定之后就可以安装memcached了。 

应用

使用sasl的验证方式后,访问memcache或者使用memcached client进行访问时都需要提供用户名和密码了。

贴一段Spring中访问sasl+memcached的标准配置,可以看出差异点:

<!-- SpyMemcached客户端 -->
<bean id="spyMemcachedClient" class="me.j360.base.service.memcached.SpyMemcachedClient">
   <property name="memcachedClient">
      <bean class="net.spy.memcached.spring.MemcachedClientFactoryBean">
         <property name="servers" value="${memcached.url}" />
         <!-- 默认是TEXT、 BINARY-->
         <property name="protocol" value="${memcached.protocol}" />
         <!-- 默认是ARRAY_MOD -->
         <property name="locatorType" value="CONSISTENT" />
         <!-- 默认是2500毫秒 -->
         <property name="opTimeout" value="1000" />
         <!-- 加入用户名和密码 
         <property name="authDescriptor" ref="authDescriptor"/>-->
      </bean>
   </property>
   <property name="updateTimeout" value="1000"/>
   <property name="shutdownTimeout" value="1000"/>
</bean>

   <bean id="plainCallbackHandler" class="net.spy.memcached.auth.PlainCallbackHandler">
      <constructor-arg index="0" value="${memcached.username}"/>
      <constructor-arg index="1" value="${memcached.password}"/> 
     </bean>
     <bean id="authDescriptor" class="net.spy.memcached.auth.AuthDescriptor">
      <constructor-arg index="0">
        <array><value>PLAIN</value></array>
      </constructor-arg>
      <constructor-arg index="1" ref="plainCallbackHandler"/>
    </bean>


© 著作权归作者所有

Hi徐敏
粉丝 124
博文 40
码字总数 67954
作品 0
静安
架构师
私信 提问
centos6搭建NEXUSphp pt私人种子站

这篇文章题目我还写成了“最新”。。。因为我真的找不到新文章,大多是2012年左右的,而且在安装的过程中我也遇到了问题,花了好长时间才解决。。。不废话了,进入正文: 这次咱们用的nexus...

虚拟世界的懒猫
2016/12/07
0
0
Memcache windows 下安装

1.windows 安装 memcache (1)先去电脑telnet客户端开启 (2)在控制面板->程序->打开或者关闭windows->telnet客户端前面选中->确定即可 (3)为什么要开启telnet 在终端使用者的电脑上使用...

方花
2018/04/24
0
0
Windows7 x64在Wampserver上安装memcache

Windows7 x64在Wampserver上安装memcache 放假重装了一下系统,win7 x64的,而我使用的win下的开发环境也升级到了最新版,所集成的是php5.3.13,一切很顺利,但是在安装php的memcache扩展的时...

真座山雕
2012/10/30
0
0
PHP无锁内存nosql---Yac的实战

无锁内存nosql---Yac的实战      最近在工作使用了yac,所以比较了下Memcache和Yac的高并发读写性能测试,发现Yac要比Memcache快很多(这里没有比较Yac和Apc的性能情况, 不过据说Yac要比A...

sunsky303
2017/03/15
0
0
nginx+memcache+tomcat配置(新手笔记)

nginx+memcache+tomcat 应该是企业级开发中用到的比较多的一套集群web环境,因为本人是从事Java的学习和开发,因此服务器选择了tomcat;配置这样一个环境在我看来首要目的当然是将服务器的压...

coder4j
2015/09/13
1K
9

没有更多内容

加载失败,请刷新页面

加载更多

Spring Cloud中Hystrix 线程隔离导致ThreadLocal数据丢失

在Spring Cloud中我们用Hystrix来实现断路器,Zuul中默认是用信号量(Hystrix默认是线程)来进行隔离的,我们可以通过配置使用线程方式隔离。 在使用线程隔离的时候,有个问题是必须要解决的...

xiaomin0322
35分钟前
1
0
使用 Jenkins + Ansible 实现 Spring Boot 自动化部署101

本文首发于:Jenkins 中文社区 本文要点: 设计一条 Spring Boot 最基本的流水线:包括构建、制品上传、部署。 使用 Docker 容器运行构建逻辑。 自动化整个实验环境:包括 Jenkins 的配置,J...

Jenkins中文社区
40分钟前
1
0
springcloud配置中心和消息总线,学习,记录其中的问题

改造配置中心的客户端,接入消息总线 1.增加pom文件的引用 <?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20......

夜中孤影
52分钟前
3
0
gzip压缩

tar -zcvf gz包路径 被压缩的路径 tar -zcvf /home/xxx/test.tar.gz hello gz包的路径可以是 完整的也可以相对 , 被压缩的路径 不要全路径 不然压缩包里也会有全路径...

shzwork
59分钟前
3
0
rancher-1

部署rancher 官方快速部署 https://www.cnrancher.com/quick-start/ 部署命令 mkdir /data/rancher -p# 建立存放rancher数据的目录sudo docker run -d --restart=unless-stopped -v /dat......

以谁为师
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部