- 浏览: 69504 次
- 性别:
- 来自: 北京
-
文章分类
- 全部博客 (121)
- luence (7)
- MoveLuceneRebuild (0)
- ehcache (0)
- memcached (12)
- WeiXin (1)
- hy (0)
- alipay (0)
- Wxap (0)
- 学习笔记 (14)
- java generic (1)
- threadpool (0)
- Awmazon (0)
- com.yulong.businessCache (0)
- com.yulong.util (1)
- com.wxap (0)
- com.yulong.wxshop (0)
- com.alipay (0)
- com.yulong.session (0)
- com.yulong.handler (0)
- kafka (0)
- http://www.cnblogs.com/oubo/archive/2012/02/04/2394646.html (0)
- redis (0)
- MongoDB (2)
- Nginx (1)
- java (10)
- 云搜索 (4)
- Hadoop (1)
- Spring (15)
- Thread (1)
- 博客链接 (0)
- AJAX与CSS (7)
- 项目管理 (1)
- restful架构 (1)
- 多线程 (3)
- Java面试 (6)
- 牛人博客 (2)
- Linux (1)
- java集合 (1)
- Socket与Nio (1)
- SQL开发 (2)
- Spring Boot (3)
- Spring4.1 (4)
- tomcat配置 (1)
- JVM (5)
- Hibernate (1)
- Dubbo (7)
- MQ (2)
- java常见错误 (0)
最新评论
package com.yulong.memcached.service;
import java.io.InputStream;
import java.net.URL;
import java.util.Date;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Properties;
import org.apache.log4j.Logger;
import com.danga.MemCached.MemCachedClient;
import com.danga.MemCached.SockIOPool;
public class MemcachedService
{
static Logger logger = Logger.getLogger(MemcachedService.class);
static
{
init();
}
private static MemCachedClient mcc = new MemCachedClient();
public static void init()
{
String[] servers = {};
long maxBusyTime = 1000 * 60 * 2;
int initConn = 10;
int minConn = 5;
int maxConn = 250;
long maintSleep = 30;
int hashingAlg = 3;
try
{
URL url = MemcachedService.class.getResource("/memcached/servers.properties");
InputStream is = null;
if (url != null)
{
is = url.openStream();
}
if (is == null)
is = MemcachedService.class.getResourceAsStream("/memcached/servers.properties");
Properties prop = new Properties();
prop.load(is);
servers = prop.getProperty("servers").split(",");
maxBusyTime = Long.valueOf(prop.getProperty("maxBusyTime") == null ? "" : prop.getProperty("maxBusyTime"));
initConn = Integer.parseInt(prop.getProperty("initConn") == null ? "" : prop.getProperty("initConn"));
minConn = Integer.parseInt(prop.getProperty("minConn") == null ? "" : prop.getProperty("minConn"));
maxConn = Integer.parseInt(prop.getProperty("maxConn") == null ? "" : prop.getProperty("maxConn"));
maintSleep = Long.parseLong(prop.getProperty("maintSleep") == null ? "" : prop.getProperty("maintSleep"));
hashingAlg = Integer.parseInt(prop.getProperty("hashingAlg") == null ? "" : prop.getProperty("hashingAlg"));
logger.info("memcached servers:" + prop.getProperty("servers"));
SockIOPool pool = SockIOPool.getInstance();
pool.setServers(servers);
pool.setMaxBusyTime(maxBusyTime);
pool.setInitConn(initConn);
pool.setMinConn(minConn);
pool.setMaxConn(maxConn);
pool.setMaintSleep(maintSleep);
pool.setHashingAlg(hashingAlg);
pool.setFailover(true);
pool.setNagle(false);
pool.setSocketTO(3000);
pool.setAliveCheck(false);
pool.initialize();
}
catch (Exception e)
{
logger.error(e.getMessage());
for (StackTraceElement element : e.getStackTrace())
{
logger.error(element);
}
}
}
/**
* 系统专用
* @param key
* @param value
* @return
*/
public static Object setParam(Object key, Object value)
{
return set("P" + (String) key, value);
}
/**
* 获得memcached服务器的状态
*/
// public static String getServerStatus()
// {
// mch = new MccErrorHandler();
// mch.handleErrorOnStats(mcc, null);
//// mcc.setErrorHandler(mch);
// mcc.set("test", "test");
// mcc.replace("test", "test");
// if (mch.getStatus().equals("ok"))
// {
// return "ok";
// }
// else
// {
// return "outOfService";
// }
// }
/**
* 系统专用
* @param key
* @param value
* @return
*/
public static Object setParam(String key, Object value)
{
return set("P" + key, value);
}
public static Object set(Object key, Object value)
{
return set((String) key, value);
}
public static Object set(String key, Object value)
{
// mch = new MccErrorHandler();
// mcc.setErrorHandler(mch);
mcc.set(key, value);
mcc.replace(key, value);
// if (mch.getStatus().equals("ok"))
// {
return value;
// }
// else
// {
// return "error";
// }
}
public static void putAll(Map<? extends String, ? extends Object> m)
{
for (String key : m.keySet())
{
set(key, m.get(key));
}
}
public static Object removeGroup(Object key)
{
return remove("G" + (String) key);
}
public static Object removeParam(Object key)
{
return null;// 系统不可移除
}
public static Object remove(Object key)
{
return remove((String) key);
}
public static Object remove(String key)
{
// mch = new MccErrorHandler();
// mcc.setErrorHandler(mch);
Object value = mcc.get(key);
mcc.delete(key);
// if (mch.getStatus().equals("ok"))
// {
return value;
// }
// else
// {
// return "error";
// }
}
public static boolean replace(String key, Object value)
{
boolean result = false;
// mch = new MccErrorHandler();
// mcc.setErrorHandler(mch);
result = mcc.replace(key, value);
// if (mch.getStatus().equals("ok"))
// {
return result;
// }
// else
// {
// return false;
// }
}
public static Object get(Object key)
{
return get((String) key);
}
public static Object get(String key)
{
// mch = new MccErrorHandler();
// mcc.setErrorHandler(mch);
Object t = mcc.get(key);
// if (mch.getStatus().equals("ok"))
// {
return t;
// }
// else
// {
// return "error";
// }
}
/**
* 系统专用
* @param key
* @return
*/
public static Object getParam(Object key)
{
Object t = get("P" + (String) key);
if (t != null && t.toString().equals("error"))
{
// TODO 获得对应的值
return "error";
}
else
{
return t;
}
}
/**
* 系统专用
* @param key
* @return
*/
public static Object getParam(String key)
{
return get("P" + key);
}
/**
* 系统专用
* @param groupName
* @return
*/
public static LinkedHashMap<String, Object> getGroup(String groupName)
{
Object group = get("G" + groupName);
if (group != null && group.toString().equals("error"))
{
// 数据库存取
return null;
}
else if (group == null)
{
return null;
}
else
{
return (LinkedHashMap<String, Object>) group;
}
}
/**
* 系统专用
* @param groupName
* @param group
* @return
*/
public static LinkedHashMap<String, Object> setGroup(String groupName, LinkedHashMap<String, Object> group)
{
String t = set("G" + groupName, group).toString();
if (t.equals("error"))
{
return null;
}
replace("G" + groupName, group);
return group;
}
public static boolean set(String key, Object value, Date expiry)
{
boolean result = false;
// mch = new MccErrorHandler();
// mcc.setErrorHandler(mch);
result = mcc.set(key, value, expiry);
result = mcc.replace(key, value, expiry);
return result;
}
/**
*
* @Title: getAll
* @Description: 批量获取数据
* @param key
* @return boolean
* @throws
*/
public static Map<String,Object> getAll(String[] key){
return mcc.getMulti(key);
}
/**
*
* @Title: getAllParam
* @Description: TODO批量获取系统参数数据
* @param keys
* @return Map<String,Object>
* @throws
*/
public static Map<String,Object> getAllParam(String[] keys){
for (int i=0;i<keys.length;i++){
keys[i]="P"+keys[i];
}
return mcc.getMulti(keys);
}
/**
*
* @Title: getAllGroup
* @Description: TODO批量获取系统代码数据
* @param keys
* @return Map<String,Object>
* @throws
*/
public static Map<String,Object> getAllGroup(String[] keys){
for (int i=0;i<keys.length;i++){
keys[i]="G"+keys[i];
}
return mcc.getMulti(keys);
}
public static boolean keyExists(String key)
{
boolean result = false;
// mch = new MccErrorHandler();
// mcc.setErrorHandler(mch);
result = mcc.keyExists(key);
return result;
}
}
import java.io.InputStream;
import java.net.URL;
import java.util.Date;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Properties;
import org.apache.log4j.Logger;
import com.danga.MemCached.MemCachedClient;
import com.danga.MemCached.SockIOPool;
public class MemcachedService
{
static Logger logger = Logger.getLogger(MemcachedService.class);
static
{
init();
}
private static MemCachedClient mcc = new MemCachedClient();
public static void init()
{
String[] servers = {};
long maxBusyTime = 1000 * 60 * 2;
int initConn = 10;
int minConn = 5;
int maxConn = 250;
long maintSleep = 30;
int hashingAlg = 3;
try
{
URL url = MemcachedService.class.getResource("/memcached/servers.properties");
InputStream is = null;
if (url != null)
{
is = url.openStream();
}
if (is == null)
is = MemcachedService.class.getResourceAsStream("/memcached/servers.properties");
Properties prop = new Properties();
prop.load(is);
servers = prop.getProperty("servers").split(",");
maxBusyTime = Long.valueOf(prop.getProperty("maxBusyTime") == null ? "" : prop.getProperty("maxBusyTime"));
initConn = Integer.parseInt(prop.getProperty("initConn") == null ? "" : prop.getProperty("initConn"));
minConn = Integer.parseInt(prop.getProperty("minConn") == null ? "" : prop.getProperty("minConn"));
maxConn = Integer.parseInt(prop.getProperty("maxConn") == null ? "" : prop.getProperty("maxConn"));
maintSleep = Long.parseLong(prop.getProperty("maintSleep") == null ? "" : prop.getProperty("maintSleep"));
hashingAlg = Integer.parseInt(prop.getProperty("hashingAlg") == null ? "" : prop.getProperty("hashingAlg"));
logger.info("memcached servers:" + prop.getProperty("servers"));
SockIOPool pool = SockIOPool.getInstance();
pool.setServers(servers);
pool.setMaxBusyTime(maxBusyTime);
pool.setInitConn(initConn);
pool.setMinConn(minConn);
pool.setMaxConn(maxConn);
pool.setMaintSleep(maintSleep);
pool.setHashingAlg(hashingAlg);
pool.setFailover(true);
pool.setNagle(false);
pool.setSocketTO(3000);
pool.setAliveCheck(false);
pool.initialize();
}
catch (Exception e)
{
logger.error(e.getMessage());
for (StackTraceElement element : e.getStackTrace())
{
logger.error(element);
}
}
}
/**
* 系统专用
* @param key
* @param value
* @return
*/
public static Object setParam(Object key, Object value)
{
return set("P" + (String) key, value);
}
/**
* 获得memcached服务器的状态
*/
// public static String getServerStatus()
// {
// mch = new MccErrorHandler();
// mch.handleErrorOnStats(mcc, null);
//// mcc.setErrorHandler(mch);
// mcc.set("test", "test");
// mcc.replace("test", "test");
// if (mch.getStatus().equals("ok"))
// {
// return "ok";
// }
// else
// {
// return "outOfService";
// }
// }
/**
* 系统专用
* @param key
* @param value
* @return
*/
public static Object setParam(String key, Object value)
{
return set("P" + key, value);
}
public static Object set(Object key, Object value)
{
return set((String) key, value);
}
public static Object set(String key, Object value)
{
// mch = new MccErrorHandler();
// mcc.setErrorHandler(mch);
mcc.set(key, value);
mcc.replace(key, value);
// if (mch.getStatus().equals("ok"))
// {
return value;
// }
// else
// {
// return "error";
// }
}
public static void putAll(Map<? extends String, ? extends Object> m)
{
for (String key : m.keySet())
{
set(key, m.get(key));
}
}
public static Object removeGroup(Object key)
{
return remove("G" + (String) key);
}
public static Object removeParam(Object key)
{
return null;// 系统不可移除
}
public static Object remove(Object key)
{
return remove((String) key);
}
public static Object remove(String key)
{
// mch = new MccErrorHandler();
// mcc.setErrorHandler(mch);
Object value = mcc.get(key);
mcc.delete(key);
// if (mch.getStatus().equals("ok"))
// {
return value;
// }
// else
// {
// return "error";
// }
}
public static boolean replace(String key, Object value)
{
boolean result = false;
// mch = new MccErrorHandler();
// mcc.setErrorHandler(mch);
result = mcc.replace(key, value);
// if (mch.getStatus().equals("ok"))
// {
return result;
// }
// else
// {
// return false;
// }
}
public static Object get(Object key)
{
return get((String) key);
}
public static Object get(String key)
{
// mch = new MccErrorHandler();
// mcc.setErrorHandler(mch);
Object t = mcc.get(key);
// if (mch.getStatus().equals("ok"))
// {
return t;
// }
// else
// {
// return "error";
// }
}
/**
* 系统专用
* @param key
* @return
*/
public static Object getParam(Object key)
{
Object t = get("P" + (String) key);
if (t != null && t.toString().equals("error"))
{
// TODO 获得对应的值
return "error";
}
else
{
return t;
}
}
/**
* 系统专用
* @param key
* @return
*/
public static Object getParam(String key)
{
return get("P" + key);
}
/**
* 系统专用
* @param groupName
* @return
*/
public static LinkedHashMap<String, Object> getGroup(String groupName)
{
Object group = get("G" + groupName);
if (group != null && group.toString().equals("error"))
{
// 数据库存取
return null;
}
else if (group == null)
{
return null;
}
else
{
return (LinkedHashMap<String, Object>) group;
}
}
/**
* 系统专用
* @param groupName
* @param group
* @return
*/
public static LinkedHashMap<String, Object> setGroup(String groupName, LinkedHashMap<String, Object> group)
{
String t = set("G" + groupName, group).toString();
if (t.equals("error"))
{
return null;
}
replace("G" + groupName, group);
return group;
}
public static boolean set(String key, Object value, Date expiry)
{
boolean result = false;
// mch = new MccErrorHandler();
// mcc.setErrorHandler(mch);
result = mcc.set(key, value, expiry);
result = mcc.replace(key, value, expiry);
return result;
}
/**
*
* @Title: getAll
* @Description: 批量获取数据
* @param key
* @return boolean
* @throws
*/
public static Map<String,Object> getAll(String[] key){
return mcc.getMulti(key);
}
/**
*
* @Title: getAllParam
* @Description: TODO批量获取系统参数数据
* @param keys
* @return Map<String,Object>
* @throws
*/
public static Map<String,Object> getAllParam(String[] keys){
for (int i=0;i<keys.length;i++){
keys[i]="P"+keys[i];
}
return mcc.getMulti(keys);
}
/**
*
* @Title: getAllGroup
* @Description: TODO批量获取系统代码数据
* @param keys
* @return Map<String,Object>
* @throws
*/
public static Map<String,Object> getAllGroup(String[] keys){
for (int i=0;i<keys.length;i++){
keys[i]="G"+keys[i];
}
return mcc.getMulti(keys);
}
public static boolean keyExists(String key)
{
boolean result = false;
// mch = new MccErrorHandler();
// mcc.setErrorHandler(mch);
result = mcc.keyExists(key);
return result;
}
}
发表评论
-
Memcached处理
2015-07-21 14:00 362Memcached有两个核心 ... -
memcached工作原理与优化建议
2015-01-07 10:30 330工作原理 基本概念:slab,page,chunk。 ... -
TestMemcached
2014-11-10 09:08 391/** * Copyright (c) 2008 Greg ... -
MemcachedTest
2014-11-10 09:08 320/** * Copyright (c) 2008 Greg ... -
MemcachedBench
2014-11-10 09:09 383/** * Copyright (c) 2008 Greg ... -
TestDropMemcacheUser
2014-11-10 09:10 478package com.yulong.memcached; ... -
TestAddMemcacheMemberAddress
2014-11-12 09:23 235package com.yulong.memcached; ... -
SockIOPool
2014-11-12 09:24 1442/** * Copyright (c) 2008 Greg ... -
NestedIOException
2014-11-12 09:24 805/** * Copyright (c) 2008 Greg ... -
NativeHandler
2014-11-12 09:24 281/** * Copyright (c) 2008 Greg ... -
MemcachedClient
2014-11-12 09:24 1812/** * Copyright (c) 2008 Greg ... -
MccErrorHandler
2014-11-07 22:10 0package com.yulong.memcached; ... -
Logger
2014-11-07 22:10 0/** * Copyright (c) 2008 Greg ... -
LineInputStream
2014-11-07 22:10 0/** * Copyright (c) 2008 Greg ... -
ErrorHandler
2014-11-07 22:09 0/** * Copyright (c) 2008 Greg ... -
ContextObjectInputStream
2014-11-07 22:09 0/** * Copyright (c) 2008 Greg ... -
ByteBufArrayInputStream
2014-11-07 22:08 0/** * Copyright (c) 2008 Greg ... -
MemberInfoMemcachedService
2014-11-07 17:55 0package com.yulong.memcached.se ... -
GrabMemcachedService
2014-11-07 17:50 0package com.yulong.memcached.se ...
相关推荐
private MemcachedService memcachedService; public void saveToCache(String key, Object value) { memcachedService.set(key, value); } public Object retrieveFromCache(String key) { return memcached...
在命令行窗口中,使用管理员权限运行以下命令来创建一个名为 "MemcachedService" 的服务: ``` memcached.exe -d install -m 64 -p 11211 -l 127.0.0.1 ``` 这里 `-m` 参数指定分配的内存(单位MB), `-p` 指定...
sc create Memcached binPath= "C:\Program Files\memcached\memcached.exe" DisplayName= "Memcached Service" ``` 对于64位系统,将"binPath"中的"memcached.exe"替换为"memcached64.exe"。 3. 创建服务后,...
service memcached start ``` **二、安装PHP的`memcache`扩展** 接下来,我们要在PHP环境中安装`memcache`扩展: 1. 获取PHP的源代码,如果你还没有安装PHP,可以使用`php53`这个老版本的源代码: ```shell ...
sudo service memcached start ``` **2. libevent 库** libevent 是一个事件通知库,Memcached 可以依赖它实现异步非阻塞I/O。当在编译 Memcached 时,如果选择使用 libevent 模式,可以提高其性能和可扩展性。...
Memcached 是一个高效的分布式内存对象缓存系统,它能够显著减轻数据库的负担。本文将深入探讨 Memcached 的使用及其状态分析。 首先,Memcached 以其内存存储机制著称,这使得它在读取速度上远超于传统的硬盘存储...
3. **配置Memcached**: 在Windows环境下,不像Linux那样使用服务管理命令,你需要手动创建一个批处理文件或使用第三方工具(如`nssm - the Non-Sucking Service Manager`)将`memcached.exe`作为Windows服务运行。...
4. 可以通过`sudo service memcached start|stop|restart`来管理服务了。 最后,别忘了配置magent与运行中的memcached服务连接。根据magent的文档,配置好后,你可以通过Web浏览器访问magent的监控界面,通常默认...
3. **启动与停止**:使用命令行工具如`memcached`或`service memcached start/stop/restart`来启动、停止或重启服务。 **三、Memcached客户端** 1. **语言支持**:Memcached有多种编程语言的客户端库,如PHP、...
假设您已经将包含Memcached客户端的应用程序(如enshopcache)部署到Tomcat的`webapps`目录下,接下来需要配置相关的Spring配置文件`spring-cache-service.xml`以便让应用程序能够正确地连接到Memcached服务。...
sudo service memcached start ``` 4. 配置 Memcached 以在启动时自动运行: ``` sudo systemctl enable memcached ``` ### 二、安装 Memcached 客户端 Memcached 提供了多种语言的客户端库,如 Python、PHP...
3. **启动与停止**: 使用`service memcached start/stop/restart`命令进行服务的启停。 **四、使用方法** 1. **客户端库**: 多种编程语言(如Python、Java、PHP、Ruby)都有对应的客户端库,通过这些库可以方便地...
- 要停止 memcached 服务,可以使用 `sudo service memcached stop` 或 `sudo systemctl stop memcached`。 - 对于长期运行的生产环境,建议配置 memcached 作为系统服务,以便于管理和维护。 以上就是关于 ...
sudo service php-fpm restart ``` 六、测试和配置 现在可以测试Memcached是否工作正常。在终端中运行以下PHP脚本: ```php $memcache = new Memcache; $memcache->connect('localhost', 11211); echo "Connected...
4. **启动服务**:安装完成后,可以通过系统的初始化脚本启动memcached服务,例如在Unix/Linux系统中使用`sudo service memcached start`。 5. **验证运行**:你可以使用`netstat -tulnp | grep memcached`命令检查...
5. **缓存注解**:在服务层(Service)或DAO层的方法上使用Spring的`@Cacheable`、`@CacheEvict`等注解,实现缓存的自动管理和更新。例如,在`getUser`方法上添加`@Cacheable`注解,当调用该方法时,结果会被自动...
sudo nano /etc/systemd/system/memcached.service ``` 在文件中添加以下内容: ``` [Unit] Description=Memcached Daemon After=network.target [Service] User=memcached ExecStart=/usr/local/bin/...
Memcached是一款广泛使用的开源分布式内存缓存系统,它能够提高应用程序的性能,通过将数据存储在内存中,减少对数据库的访问,从而加快了数据的读取速度。本篇文章将针对“memcached安装错误”这一主题,详细解析...
除了使用`systemctl`,还可以使用`service`命令来管理Memcached,特别是在较旧的Linux发行版上: ```bash sudo service memcached start sudo service memcached stop sudo service memcached restart sudo service...
sudo service memcached start ``` **二、启动错误分析** 当memcached无法启动时,通常会有错误日志提供线索。查看日志文件(通常是/var/log/memcached.log或/var/log/messages),以获取错误信息。例如,端口冲突...