猿问

Memcache的使用方法和场景

  1. 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;
    }

这是我的使用方法,我想请教一下大佬们在实际工作中的使用场景和方法是如何做的???

BIG阳
浏览 696回答 3
3回答

慕的地10843

有一些可能需要改进的地方 KEY的设计,这块在实际使用中比较重要,需要考虑避免重复,可读可调。比如使用Group_Class_Cache_RN的形式,同样良好的KEY设计,可以通过校验KEY格式来防止缓存击穿. 失效时间的设置,在高并发情况下,每个缓存的失效时间应该尽量分散,避免缓存雪崩。一般是一个BaseExpire + Random.此外,如果存在不同的业务需求,或者阻塞,IO瓶颈等等的,可以引入多级缓存。 你这种使用代码侵入性有点强,编码有点多,出错的可能会比较高,如果使用Spring的话,可以研究下Spring Cache,一是通过注解AOP降低缓存与业务代码的耦合,同时也可以对比下配置,命名,更新等相关的实现。

慕丝7291255

1.安全 。 每做一次查询,保存或者跳转页面,从memcache 中去取出session,如果有值,则允许操作,反之则提示。 2.跨系统共享session 3.缓存。。。

手掌心

不是知道说这个有没有偏题,如果可以,建议使用redis
随时随地看视频慕课网APP

相关分类

Java
我要回答