memcached 的安装时使用
2016-06-04 09:50
411 查看
Memcached是一个免费开源、高性能、分布式的内存对象缓存系统。Memcached是在内存中,为特定数据(字符串或对象)构建key-value的小块数据存储。
条件:
yum -y install gcc
yum -y install gcc-c++
yum -y libevent
1、安装memcached
cd /home/memcached
下载:wget http://www.memcached.org/files/memcached-1.4.25.tar.gz
tar -zxvf memcached-1.4.25.tar.gz
cd memcached-1.4.25
./configure --prefix=/usr/local/memcached
make && make install
cd /usr/local/memcached
memcached -help 查看帮助信息
./memcached -d -m 1024 -u root -p 11211 -f 1.25 -P tmp/memcached.pid
-d选项是启动一个守护进程
-m是分配给Memcache使用的内存数量,单位是MB,这里是10MB
-u是运行Memcache的用户,这里是root
-l是监听的服务器IP地址,这里指定了服务器的IP地址192.168.1.106
-p是监听的端口,这里设置了2222,最好是1024以上的端口
-c选项是最大运行的并发连接数,默认是1024,这里设置了256
-P是设置保存Memcache的pid文件,这里是保存在 /tmp/memcached.pid
常用的还有几个需要了解:
-f 块大小增长因子,默认是1.25
-n 最小分配空间, key+value+flags 默认是 48byte
-I 每个slab page的大小
-v/-vv 详细显示工作时各种参数
关闭Memcached,先用 ps aux | grep memcached找到进程号,然后kill -9 掉
2、安装teinet 服务
yum install telnet-server
3、telnet 127.0.0.1 11211
4、基本命令
您将使用五种基本 memcached 命令执行最简单的操作。这些命令和操作包括:
set : 无论如何都存储的set,如果没有这个健则增加,有健则进行replace命令
add : 只有数据不存在时进行添加的add
replace : 替换命令
get : 获取数值明明
delete : 删除命令
gets : 获取多个实例
实例:
set username 0 1 2 : username是key的名字(是以key/value存放),0标志,1表示数据存放1s,2表示放入多大数据。如果一个key已经存在,再放入是失败的
5、 stats 命令:
stats 命令的功能正如其名:转储所连接的 memcached 实例的当前统计数据。在下例中,执行 stats 命令显示了关于当前 memcached 实例的信息:
pid 1444memcache服务器进程ID
uptime 3054736693服务器已运行秒数
time 224601969服务器当前Unix时间戳
version 1.4.2memcache版本
pointer_size 64操作系统指针大小
rusage_user 17.515625进程累计用户时间
rusage_system 46.187500进程累计系统时间
curr_connections 11当前连接数量
total_connections 499965Memcached运行以来连接总数
connection_structures 17Memcached分配的连接结构数量
cmd_get 553get命令请求次数
cmd_set 499806set命令请求次数
cmd_flush 0flush命令请求次数
get_hits 553get命令命中次数
get_misses 499376get命令未命中次数
delete_misses 0delete命令未命中次数
delete_hits 2delete命令命中次数
incr_misses 0incr命令未命中次数
incr_hits 0incr命令命中次数
decr_misses 0decr命令未命中次数
decr_hits 0decr命令命中次数
cas_misses 0cas命令未命中次数
cas_hits 0cas命令命中次数
cas_badval 0使用擦拭次数
bytes_read 58006092读取总字节数
bytes_written 7092540发送总字节数
limit_maxbytes 67108864分配的内存总大小(字节)
accepting_conns 1接受新的连接
listen_disabled_num 0失效的监听数
threads 4当前线程数
conn_yields 0连接操作主动放弃数目
bytes 805025当前存储占用的字节数
curr_items 4687当前存储的数据总数
total_items 499806启动以来存储的数据总数
evictions 0LRU释放的对象数目
此处的大多数输出都非常容易理解。稍后在讨论缓存性能时,我还将详细解释这些值的含义。至于目前,我们先来看看输出,然后再使用新的键来运行一些 set 命令,并 再次运行stats 命令,注意发生了哪些变化。
如果是在做秒杀的功能时:需要用到count 与set 相结合使用,当达到某一个数值时停止操作,对内存的操作1s的时间内呢个做到3W。
6、flush_all 命令
flush_all 是最后一个要介绍的命令。这个最简单的命令仅用于清理缓存中的所有名称/值对。如果您需要将缓存重置到干净的状态,则 flush_all 能提供很大的用处。
7、其他命令
memcached还有很多命令,比如对于存储为数字型的可以通过incr/decr命令进行增减操作等等,这里只列出开发和运维中经常使用的命令,其他的不再一一举例说明。
set s 0 0 2
34
STORED
incr s 4
38
decr s 1
37
注意incr与decr只适用于数字的插入与删除,操作后的值不会为负数
8、 下载JAR包
http://download.csdn.net/my
http://download.csdn.net/detail/lzzmy/2080224
代码实现1):
package com.alisoft.sme.memcached;
import java.util.Date;
import com.danga.MemCached.MemCachedClient;
import com.danga.MemCached.SockIOPool;
public class MemCachedManager {
// 创建全局的唯一实例
protected static MemCachedClient mcc = new MemCachedClient();
protected static MemCachedManager memCachedManager = new MemCachedManager();
// 设置与缓存服务器的连接池
static {
// 服务器列表和其权重
String[] servers = { "127.0.0.1:11211" };
Integer[] weights = { 3 };
// 获取socke连接池的实例对象
SockIOPool pool = SockIOPool.getInstance();
// 设置服务器信息
pool.setServers(servers);
pool.setWeights(weights);
// 设置初始连接数、最小和最大连接数以及最大处理时间
pool.setInitConn(5);
pool.setMinConn(5);
pool.setMaxConn(250);
pool.setMaxIdle(1000 * 60 * 60 * 6);
// 设置主线程的睡眠时间
pool.setMaintSleep(30);
// 设置TCP的参数,连接超时等
pool.setNagle(false);
pool.setSocketTO(3000);
pool.setSocketConnectTO(0);
// 初始化连接池
pool.initialize();
// 压缩设置,超过指定大小(单位为K)的数据都会被压缩
mcc.setCompressEnable(true);
mcc.setCompressThreshold(64 * 1024);
}
/**
* 保护型构造方法,不允许实例化!
*
*/
protected MemCachedManager() {
}
/**
* 获取唯一实例.
*
* @return
*/
public static MemCachedManager getInstance() {
return memCachedManager;
}
/**
* 添加一个指定的值到缓存中.
*
* @param key
* @param value
* @return
*/
public boolean add(String key, Object value) {
return mcc.add(key, value);
}
public boolean add(String key, Object value, Date expiry) {
return mcc.add(key, value, expiry);
}
public boolean replace(String key, Object value) {
return mcc.replace(key, value);
}
public boolean replace(String key, Object value, Date expiry) {
return mcc.replace(key, value, expiry);
}
/**
* 根据指定的关键字获取对象.
*
* @param key
* @return
*/
public Object get(String key) {
return mcc.get(key);
}
public static void main(String[] args) {
MemCachedManager cache = MemCachedManager.getInstance();
cache.add("hello", 234);
System.out.print("get value : " + cache.get("hello"));
}
}
getbub : https://github.com/gwhalin/Memcached-Java-Client
代码实现2)、
package Test;
import java.io.IOException;
import java.net.InetSocketAddress;
import net.spy.memcached.MemcachedClient;
public class TestMemcached {
public static void main(String[] args) throws IOException {
MemcachedClient cache = new MemcachedClient(new InetSocketAddress(
"127.0.0.1", 11211));
for (int i = 1; i < 10; i++) {
cache.set("T0001" + i, 3600, new User(i + ""));
}
User myObject = (User) cache.get("T00011");
System.out.println("Get object from mem :" + myObject.getUserId());
cache.shutdown();
}
}
import java.io.Serializable;
public class User implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
private String userId;
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public User(String userId) {
super();
this.userId = userId;
}
@Override
public String toString() {
return "User [userId=" + userId + "]";
}
}
条件:
yum -y install gcc
yum -y install gcc-c++
yum -y libevent
1、安装memcached
cd /home/memcached
下载:wget http://www.memcached.org/files/memcached-1.4.25.tar.gz
tar -zxvf memcached-1.4.25.tar.gz
cd memcached-1.4.25
./configure --prefix=/usr/local/memcached
make && make install
cd /usr/local/memcached
memcached -help 查看帮助信息
./memcached -d -m 1024 -u root -p 11211 -f 1.25 -P tmp/memcached.pid
-d选项是启动一个守护进程
-m是分配给Memcache使用的内存数量,单位是MB,这里是10MB
-u是运行Memcache的用户,这里是root
-l是监听的服务器IP地址,这里指定了服务器的IP地址192.168.1.106
-p是监听的端口,这里设置了2222,最好是1024以上的端口
-c选项是最大运行的并发连接数,默认是1024,这里设置了256
-P是设置保存Memcache的pid文件,这里是保存在 /tmp/memcached.pid
常用的还有几个需要了解:
-f 块大小增长因子,默认是1.25
-n 最小分配空间, key+value+flags 默认是 48byte
-I 每个slab page的大小
-v/-vv 详细显示工作时各种参数
关闭Memcached,先用 ps aux | grep memcached找到进程号,然后kill -9 掉
2、安装teinet 服务
yum install telnet-server
3、telnet 127.0.0.1 11211
4、基本命令
您将使用五种基本 memcached 命令执行最简单的操作。这些命令和操作包括:
set : 无论如何都存储的set,如果没有这个健则增加,有健则进行replace命令
add : 只有数据不存在时进行添加的add
replace : 替换命令
get : 获取数值明明
delete : 删除命令
gets : 获取多个实例
实例:
set username 0 1 2 : username是key的名字(是以key/value存放),0标志,1表示数据存放1s,2表示放入多大数据。如果一个key已经存在,再放入是失败的
5、 stats 命令:
stats 命令的功能正如其名:转储所连接的 memcached 实例的当前统计数据。在下例中,执行 stats 命令显示了关于当前 memcached 实例的信息:
pid 1444memcache服务器进程ID
uptime 3054736693服务器已运行秒数
time 224601969服务器当前Unix时间戳
version 1.4.2memcache版本
pointer_size 64操作系统指针大小
rusage_user 17.515625进程累计用户时间
rusage_system 46.187500进程累计系统时间
curr_connections 11当前连接数量
total_connections 499965Memcached运行以来连接总数
connection_structures 17Memcached分配的连接结构数量
cmd_get 553get命令请求次数
cmd_set 499806set命令请求次数
cmd_flush 0flush命令请求次数
get_hits 553get命令命中次数
get_misses 499376get命令未命中次数
delete_misses 0delete命令未命中次数
delete_hits 2delete命令命中次数
incr_misses 0incr命令未命中次数
incr_hits 0incr命令命中次数
decr_misses 0decr命令未命中次数
decr_hits 0decr命令命中次数
cas_misses 0cas命令未命中次数
cas_hits 0cas命令命中次数
cas_badval 0使用擦拭次数
bytes_read 58006092读取总字节数
bytes_written 7092540发送总字节数
limit_maxbytes 67108864分配的内存总大小(字节)
accepting_conns 1接受新的连接
listen_disabled_num 0失效的监听数
threads 4当前线程数
conn_yields 0连接操作主动放弃数目
bytes 805025当前存储占用的字节数
curr_items 4687当前存储的数据总数
total_items 499806启动以来存储的数据总数
evictions 0LRU释放的对象数目
此处的大多数输出都非常容易理解。稍后在讨论缓存性能时,我还将详细解释这些值的含义。至于目前,我们先来看看输出,然后再使用新的键来运行一些 set 命令,并 再次运行stats 命令,注意发生了哪些变化。
如果是在做秒杀的功能时:需要用到count 与set 相结合使用,当达到某一个数值时停止操作,对内存的操作1s的时间内呢个做到3W。
6、flush_all 命令
flush_all 是最后一个要介绍的命令。这个最简单的命令仅用于清理缓存中的所有名称/值对。如果您需要将缓存重置到干净的状态,则 flush_all 能提供很大的用处。
7、其他命令
memcached还有很多命令,比如对于存储为数字型的可以通过incr/decr命令进行增减操作等等,这里只列出开发和运维中经常使用的命令,其他的不再一一举例说明。
set s 0 0 2
34
STORED
incr s 4
38
decr s 1
37
注意incr与decr只适用于数字的插入与删除,操作后的值不会为负数
8、 下载JAR包
http://download.csdn.net/my
http://download.csdn.net/detail/lzzmy/2080224
代码实现1):
package com.alisoft.sme.memcached;
import java.util.Date;
import com.danga.MemCached.MemCachedClient;
import com.danga.MemCached.SockIOPool;
public class MemCachedManager {
// 创建全局的唯一实例
protected static MemCachedClient mcc = new MemCachedClient();
protected static MemCachedManager memCachedManager = new MemCachedManager();
// 设置与缓存服务器的连接池
static {
// 服务器列表和其权重
String[] servers = { "127.0.0.1:11211" };
Integer[] weights = { 3 };
// 获取socke连接池的实例对象
SockIOPool pool = SockIOPool.getInstance();
// 设置服务器信息
pool.setServers(servers);
pool.setWeights(weights);
// 设置初始连接数、最小和最大连接数以及最大处理时间
pool.setInitConn(5);
pool.setMinConn(5);
pool.setMaxConn(250);
pool.setMaxIdle(1000 * 60 * 60 * 6);
// 设置主线程的睡眠时间
pool.setMaintSleep(30);
// 设置TCP的参数,连接超时等
pool.setNagle(false);
pool.setSocketTO(3000);
pool.setSocketConnectTO(0);
// 初始化连接池
pool.initialize();
// 压缩设置,超过指定大小(单位为K)的数据都会被压缩
mcc.setCompressEnable(true);
mcc.setCompressThreshold(64 * 1024);
}
/**
* 保护型构造方法,不允许实例化!
*
*/
protected MemCachedManager() {
}
/**
* 获取唯一实例.
*
* @return
*/
public static MemCachedManager getInstance() {
return memCachedManager;
}
/**
* 添加一个指定的值到缓存中.
*
* @param key
* @param value
* @return
*/
public boolean add(String key, Object value) {
return mcc.add(key, value);
}
public boolean add(String key, Object value, Date expiry) {
return mcc.add(key, value, expiry);
}
public boolean replace(String key, Object value) {
return mcc.replace(key, value);
}
public boolean replace(String key, Object value, Date expiry) {
return mcc.replace(key, value, expiry);
}
/**
* 根据指定的关键字获取对象.
*
* @param key
* @return
*/
public Object get(String key) {
return mcc.get(key);
}
public static void main(String[] args) {
MemCachedManager cache = MemCachedManager.getInstance();
cache.add("hello", 234);
System.out.print("get value : " + cache.get("hello"));
}
}
getbub : https://github.com/gwhalin/Memcached-Java-Client
代码实现2)、
package Test;
import java.io.IOException;
import java.net.InetSocketAddress;
import net.spy.memcached.MemcachedClient;
public class TestMemcached {
public static void main(String[] args) throws IOException {
MemcachedClient cache = new MemcachedClient(new InetSocketAddress(
"127.0.0.1", 11211));
for (int i = 1; i < 10; i++) {
cache.set("T0001" + i, 3600, new User(i + ""));
}
User myObject = (User) cache.get("T00011");
System.out.println("Get object from mem :" + myObject.getUserId());
cache.shutdown();
}
}
import java.io.Serializable;
public class User implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
private String userId;
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public User(String userId) {
super();
this.userId = userId;
}
@Override
public String toString() {
return "User [userId=" + userId + "]";
}
}
相关文章推荐
- Memcache 内存分配策略和性能(使用)状态检查
- simple-spring-memcached缓存搭建
- memcached
- Memcached1.4安装笔记
- memcache的优点与缺点
- memcached.properties
- memcached在windows环境下的安装
- redis和memcached的对比
- Memcache 内存分配策略和性能(使用)状态检查
- Memcache 内存分配策略和性能(使用)状态检查
- Memcache
- php 如何使用 缓存MEMCACHE 实例
- PHP 开发学习[2] —— wamp memcache 的安装与扩展(Windows 64)
- memcache工作原理介绍
- Redis与Memcached的区别
- CentOS 下编译安装php memcached扩展
- 使用telnet连接memcached,发送统计命令:stats
- Redis和Memcache对比
- Memcache+Spring AOP
- key/value存储系统-Memcached、Redis、Tair