Memcached安装与配置
2016-04-06 19:18
711 查看
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目录下)
测试libevent是否安装成功(没有必然性,只供参考)
安装memcached
启动memcached
参数描述:
-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进程
关闭memcached进程(采用kill pid的命令)
或者
连接memcached
memcache有一些常用的命令:set, add, replace,append, preappend, cas, get, incr, decr, delete等,详细可以查阅相关资料。
Java客户端与memcached
memcached官方提供的Memcached-Java-Client工具包含了对memcached协议的Java封装,使用它可以比较方便地与环城服务端进行通讯。
案例
输出结果:
参考资料
1. 《大型分布式网站架构设计与实践》陈康贤著
为了在内存中提供数据的高速查找能力,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. 《大型分布式网站架构设计与实践》陈康贤著
相关文章推荐
- centos安装memcached服务
- 面试题之Memcached与Redis的区别
- .NET下实现分布式缓存系统Memcached
- Nginx+Memcached+Tomcat集群配置实践(Sticky Session)
- 第三方缓存软件:Redis 和 Memcached
- memcache 未授权访问漏洞
- 使用Memcached提高.NET应用程序的性能
- php7 install memcache extension
- php7 install memcached extension
- PHP操作Memcache基本函数
- Linux下PHP安装Memcache扩展
- PHP使用Memcache来存储session
- Linux下Memcache安装
- memcache的介绍与操作
- Memcache 和 Radis 比较
- Redis与Memcached的区别
- Redis与Memcached的区别
- Windows和Linux环境下Memcached安装与配置
- memcached 就是这么简单
- apache+3tomcat+jk+memcached集群环境搭建