memcache 的使用方法:
一个配置文件:
一个memcache的工具类
public final class MemcachedUtils{
/**
* memcached客户端单例
*/
private static MemCachedClient cachedClient = new MemCachedClient();
private MemcachedUtils(){
}
public static boolean add(String key, Object value) {
return cachedClient.add(key, value);
}
public static boolean add(String key, Object value, Integer expire) {
return cachedClient.add(key, value, expire);
}
public static boolean put(String key, Object value) {
return cachedClient.set(key, value);
}
public static boolean put(String key, Object value, Integer expire) {
return cachedClient.set(key, value, expire);
}
public static boolean replace(String key, Object value) {
return cachedClient.replace(key, value);
}
public static boolean replace(String key, Object value, Integer expire) {
return cachedClient.replace(key, value, expire);
}
public static Object get(String key) {
return cachedClient.get(key);
}
}
应用:
在service 的实现类使用
@Service
public class StudentServiceImpl implements StudentService {
@Resource
private StudentMapper studentMapper;
public List<Student> findGoodStudent() {
List<Student> goodStudents;
if(MemcachedUtils.get("goodStudents") != null){
goodStudents = (List<Student>) MemcachedUtils.get("goodStudents");
System.out.println("使用了memcache");
return goodStudents;
}
goodStudents = studentMapper.findGoodStudent();
System.out.println("没有使用memcache");
MemcachedUtils.add("goodStudents",goodStudents);
return goodStudents;
}
这是我的使用方法,我想请教一下大佬们在实际工作中的使用场景和方法是如何做的???
3 回答
慕的地10843
TA贡献1785条经验 获得超8个赞
有一些可能需要改进的地方
KEY的设计,这块在实际使用中比较重要,需要考虑避免重复,可读可调。比如使用Group_Class_Cache_RN的形式,同样良好的KEY设计,可以通过校验KEY格式来防止缓存击穿.
失效时间的设置,在高并发情况下,每个缓存的失效时间应该尽量分散,避免缓存雪崩。一般是一个BaseExpire + Random.
此外,如果存在不同的业务需求,或者阻塞,IO瓶颈等等的,可以引入多级缓存。
你这种使用代码侵入性有点强,编码有点多,出错的可能会比较高,如果使用Spring的话,可以研究下Spring Cache,一是通过注解AOP降低缓存与业务代码的耦合,同时也可以对比下配置,命名,更新等相关的实现。
慕丝7291255
TA贡献1859条经验 获得超6个赞
1.安全 。
每做一次查询,保存或者跳转页面,从memcache 中去取出session,如果有值,则允许操作,反之则提示。
2.跨系统共享session
3.缓存。。。
添加回答
举报
0/150
提交
取消