欢迎支持笔者新作:《深入理解Kafka:核心设计与实践原理》和《RabbitMQ实战指南》,同时欢迎关注笔者的微信公众号:朱小厮的博客。


欢迎跳转到本文的原文链接:https://honeypps.com/backend/memcached-install-and-config/

 memcached是danga.com的一个项目,它是一款开源的高性能的分布式内存对象缓存系统,最早是给LiveJournal提供服务的,后来逐渐被越来越多的大型网站所采用,用于在应用中减少对数据库的访问,提高应用的访问速度,并降低数据库的负载。

 为了在内存中提供数据的高速查找能力,memcached使用key-value形式存储和访问数据,在内存中维护一张巨大的HashTable,使得对数据查询的时间复杂度降低到O(1),保证了对数据的高性能访问。内存的空间总是有限的,当内存没有更多的空间来存储新的数据是,memcached就会用LRU算法将最近不常访问的数据淘汰掉,以腾出空间来存放新的数据。memcached存储支持的数据格式也是灵活多样的,通过对象的序列化机制,可以将更高层抽象的对象转换成为二进制数据,存储在缓存服务器中,当前端应用需要时,又可以通过二进制内容反序列化,将数据还原成原对象。


 由于memcached使用了libevent来进行高效的网络连接处理,因此在安装memcached之前,需要先安装libevent。
 所有的安装包可以在这里下载。

安装libevent
版本 libevent-2.0.21-stable.tar.gz(假设放在/root目录下)

[root@zzh ~]# mkdir libevent
[root@zzh ~]# tar -zvxf libevent-2.0.21-stable.tar.gz
[root@zzh ~]# cd libevent-2.0.21-stable
[root@zzh libevent-2.0.21-stable]# ./configure --prefix=/root/libevent
[root@zzh libevent-2.0.21-stable]# make
[root@zzh libevent-2.0.21-stable]# make install

测试libevent是否安装成功(没有必然性,只供参考)

[root@zzh libevent-2.0.21-stable]# ls -al /root/libevent/lib | grep libevent
lrwxrwxrwx. 1 root root      21 4月   5 22:05 libevent-2.0.so.5 -> libevent-2.0.so.5.1.9
-rwxr-xr-x. 1 root root  968722 4月   5 22:05 libevent-2.0.so.5.1.9
-rw-r--r--. 1 root root 1571586 4月   5 22:05 libevent.a
lrwxrwxrwx. 1 root root      26 4月   5 22:05 libevent_core-2.0.so.5 -> libevent_core-2.0.so.5.1.9
-rwxr-xr-x. 1 root root  585265 4月   5 22:05 libevent_core-2.0.so.5.1.9
-rw-r--r--. 1 root root  978314 4月   5 22:05 libevent_core.a
-rwxr-xr-x. 1 root root     980 4月   5 22:05 libevent_core.la
lrwxrwxrwx. 1 root root      26 4月   5 22:05 libevent_core.so -> libevent_core-2.0.so.5.1.9
lrwxrwxrwx. 1 root root      27 4月   5 22:05 libevent_extra-2.0.so.5 -> libevent_extra-2.0.so.5.1.9
-rwxr-xr-x. 1 root root  404884 4月   5 22:05 libevent_extra-2.0.so.5.1.9
-rw-r--r--. 1 root root  593344 4月   5 22:05 libevent_extra.a
-rwxr-xr-x. 1 root root     987 4月   5 22:05 libevent_extra.la
lrwxrwxrwx. 1 root root      27 4月   5 22:05 libevent_extra.so -> libevent_extra-2.0.so.5.1.9
-rwxr-xr-x. 1 root root     945 4月   5 22:05 libevent.la
lrwxrwxrwx. 1 root root      30 4月   5 22:05 libevent_pthreads-2.0.so.5 -> libevent_pthreads-2.0.so.5.1.9
-rwxr-xr-x. 1 root root   18462 4月   5 22:05 libevent_pthreads-2.0.so.5.1.9
-rw-r--r--. 1 root root   18662 4月   5 22:05 libevent_pthreads.a
-rwxr-xr-x. 1 root root    1008 4月   5 22:05 libevent_pthreads.la
lrwxrwxrwx. 1 root root      30 4月   5 22:05 libevent_pthreads.so -> libevent_pthreads-2.0.so.5.1.9
lrwxrwxrwx. 1 root root      21 4月   5 22:05 libevent.so -> libevent-2.0.so.5.1.9

安装memcached

[root@zzh ~]# mkdir memcached
[root@zzh ~]# tar -zvxf memcached-1.4.7.tar.gz
[root@zzh ~]# cd memcached-1.4.7/
[root@zzh memcached-1.4.7]# ./configure --prefix=/root/memcached --with-libevent=/root/libevent
[root@zzh memcached-1.4.7]# make
[root@zzh memcached-1.4.7]# make install

启动memcached

[root@zzh ~]# cd memcached/bin/
[root@zzh bin]# memcached -d -m 10 -u root -l 10.10.195.112 -p 11211 -c 32 -P /tmp/memcached.pid

参数描述:
-d :启动一个守护进程,
-m:分配给Memcache使用的内存数量,单位是MB,默认是64MB,
-u :运行Memcache的用户
-l :监听的服务器IP地址
-p :设置Memcache监听的端口,默认是11211 注:-p(p为小写)
-c :设置最大并发连接数,默认是1024
-P :设置保存Memcache的pid文件 注:-P(P为大写)
-f :块大小增长因子,默认是1.25
-n :最小分配空间,key+value+flags默认是48
-h :显示帮助

查看memcached进程

[root@zzh bin]# ps -aux | grep memcached
Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ
root     13904  0.0  0.0 326708   912 ?        Ssl  22:26   0:00 ./memcached -d -m 10 -u root -l 10.10.195.112 -p 11211 -c 32 -P /tmp/memcached.pid
root     13912  0.0  0.0 103248   852 pts/2    S+   22:27   0:00 grep memcached

关闭memcached进程(采用kill pid的命令)

[root@zzh bin]# kill `cat /tmp/memcached.pid`

或者

[root@zzh bin]# kill 13904

连接memcached

telnet 127.0.0.1 11211

 memcache有一些常用的命令:set, add, replace,append, preappend, cas, get, incr, decr, delete等,详细可以查阅相关资料。


Java客户端与memcached
 memcached官方提供的Memcached-Java-Client工具包含了对memcached协议的Java封装,使用它可以比较方便地与环城服务端进行通讯。
 案例

import com.danga.MemCached.MemCachedClient;
import com.danga.MemCached.SockIOPool;
import com.schooner.MemCached.MemcachedItem;public class MemcachedTest
{public static void init(){String servers[] = {"10.10.195.112:11211"};SockIOPool pool = SockIOPool.getInstance();pool.setServers(servers);pool.setFailover(true);pool.setInitConn(10);pool.setMinConn(5);pool.setMaxConn(25);pool.setMaintSleep(30);pool.setNagle(false);pool.setSocketTO(3000);pool.setAliveCheck(true);pool.setHashingAlg(SockIOPool.CONSISTENT_HASH);pool.initialize();}public static void main(String[] args){init();MemCachedClient mem = new MemCachedClient();mem.add("UserName", "zzzzh");mem.prepend("UserName", "hello ");mem.append("UserName", "!");System.out.println(mem.get("UserName"));mem.set("key", 1);System.out.println(mem.get("key"));MemcachedItem item = mem.gets("key");mem.cas("key", (Integer)item.getValue()+1,item.getCasUnique());System.out.println(mem.get("key"));}
}

输出结果:

hello zzzzh!
1
2

参考资料

  1. 《大型分布式网站架构设计与实践》陈康贤著

欢迎跳转到本文的原文链接:https://honeypps.com/backend/memcached-install-and-config/

欢迎支持笔者新作:《深入理解Kafka:核心设计与实践原理》和《RabbitMQ实战指南》,同时欢迎关注笔者的微信公众号:朱小厮的博客。


Memcached安装与配置相关推荐

  1. linux 下的Memcached安装和配置

    转载:http://hi.baidu.com/helios_sun/item/b902b90ed39054c12e4c6baf ************************* 主要是要安装php的 ...

  2. Memcached安装及配置

    一.Memcached介绍 1.Memcached是国外社区网站LiveJournal团队开发,通过缓存数据库查询结果,减少数据库访问次数,从而提高动态web站点性能. 2.官方站点http://me ...

  3. centos下nginx+postgresql+php+memcached+apc安装与配置

    2019独角兽企业重金招聘Python工程师标准>>> 具体安装步骤如下: 具体安装软件包: nginx1.0.13wget http://nginx.org/download/ng ...

  4. Windows下Memcached的安装与配置

    Windows下Memcached的安装与配置 安装: 1.下载memcached, http://www.danga.com/memcached/ ; 2.解压,比如放在 D:\memcached- ...

  5. Memcached 1.4.22安装和配置

    准备 1. 下载安装文件: 1 2 3 cd /tmp     wget http://downloads.sourceforge.net/levent/libevent-2.0.22-stable. ...

  6. Memcached的安装及配置

     一.安装Memcached及Memcached配置和状态查询           要想使用Memcached做缓存首先需要安装Memcached服务,安装方法如下:       1. 下载Mem ...

  7. Memcached安装以及PHP的调用

    一:安装libevent 由于memcached安装时,需要使用libevent类库,所以先安装libevent 1.下载 #wget   http://www.monkey.org/~provos/ ...

  8. linux下memcached安装 和redis安装,jdk,tomcat,mysql 安装

    一.memcached安装yum search memcached yum -y install memcached memmcached -h service memcached restart c ...

  9. (九)OpenStack---M版---双节点搭建---Swift安装和配置(单存储节点)

    ↓↓↓↓↓↓↓↓视频已上线B站↓↓↓↓↓↓↓↓ >>>>>>传送门 本次搭建仅采用Compute单节点做swift组件 1.Controller安装并配置控制节点 ...

最新文章

  1. R语言ggplot2可视化:可视化堆叠的直方图、添加每个分组的每个bin的计数标签、在堆叠直方图的bin中的每个分组部分添加数值标签
  2. css3-巧用选择器 “:target”
  3. Oracle常用批量操作
  4. 海上瓶子下有东西吗_《海上钢琴师》:宁愿一生孤独,不愿随波逐流。
  5. 静态long类型常量serialVersionUID的作用
  6. 浅谈智能电能表的远程预付费 系统设计
  7. 多年前的csdn账号找回啦
  8. 鸟哥的Linux私房菜_服务器架设篇 第三版
  9. linux怎么共享打印机驱动程序,为samba共享的打印机添加Windows驱动
  10. 智能车辆路径跟踪:carsim和simulink联合仿真,基于车速的变权重多点预瞄驾驶员模型个例
  11. 如何简单又快速的清理C盘内存
  12. 前端工程师的技术进阶点在哪里?
  13. 第一次出国旅行的启示录 —— 关于旅行与人生的思考
  14. 【高效工具】分享几个高质量PPT模板
  15. Wise Installation制作的安装包添加卸载快捷方式
  16. IE8报错:Unable to modify the parent container element before the child element is closed
  17. Excel表格左上角+绿色小标倒三角----
  18. 2006年1月13日
  19. 【java游戏项目】适合初学者练习的java小游戏--大鱼吃小鱼
  20. oracle静默安装指定组件,Oracle 11g 静默安装-db_install.rsp详解

热门文章

  1. c语言如何获取按键,c语言获得键盘的按键
  2. 同步阻塞、同步非阻塞、异步阻塞、异步非阻塞与 I/O 多路复用、Java NIO 之间的联系
  3. MakeFile中文手册(免费下载)-徐海兵整理
  4. C++ Tricks
  5. 从头开始敲代码之《从BaseApplication/Activity开始(五)》(自定义控件,实现点击/滑动翻页)...
  6. Python fabric实践操作
  7. find命令的技巧和一些例子
  8. 2021牛客多校6 - Defend Your Country(点双缩点求割点)
  9. c++中std::set自定义去重和排序函数
  10. POJ - 3630 Phone List(字典树)