CacheKit的缓存问题

@ControllerBind(controllerKey = "dd")
public class TestCacheKit extends Controller {
    private static Logger logger = LoggerFactory.getLogger(TestCacheKit.class);

    @ActionKey("/lala")
    public void testCache() {

        People people = null;
        //第一个缓存
        people = CacheKit.get("testCache111", "1");
        if (people == null) {
            People p = new People();
            p.setAge("11");
            people = p;
            CacheKit.put("testCache111", "1", people);
            logger.error("进行的缓存1 Key1::" + "  value::" + ObjectUUIDUtils.getObjectUUID(people));
        }
        String s1 = ObjectUUIDUtils.getObjectUUID(people);
        logger.error("获取到的缓存1 Key1::" + "  value::" + ObjectUUIDUtils.getObjectUUID(people));
        //第二个缓存
        People p2 = null;
        p2 = CacheKit.get("testCache111", "2");
        if (p2 == null) {
            people.setName("ergouzi");
            people.setTel("110");
            p2=people;
            CacheKit.put("testCache111", "2", people);
            logger.error("进行的缓存2 Key2::" + "  value::" + ObjectUUIDUtils.getObjectUUID(people));
        }
        logger.error("获取到的缓存2 Key2::" + "  value::" + ObjectUUIDUtils.getObjectUUID(p2));
        String s2 = ObjectUUIDUtils.getObjectUUID(p2);
        renderText("缓存一对应UUID:"+s1+"\n"+"缓存二对应UUID:"+s2);
    }
}

请教一下波总,如以上代码,我新建一个people对象,设置该对象部分数据后,进行了一个缓存。对people继续封装,进行另一个缓存。当再次访问该方法时,获取到的缓存一和缓存二的结果是一样的,但是我设置的缓存key是不一样的啊。是不是我代码写得有问题啊?还是CacheKit哪里需要配置一下?

评论区

JFinal

2019-01-15 11:57

这种细节问题单步调试即可

调试时看变量的 id ,如果 id 相同则证明是同一个对象

这里所说的变量 id 是指 JVM 在创建对象的时候为其指定的一个值,与你的变量本身无关

NGU-sunshine

2019-01-15 12:11

@JFinal 嗯嗯,变量id是同一个,但是在我两次存值时候,该变量id对应的应该是两个不同的值,按道理应该对应的缓存也不同吧。难道存缓存是在整个方法执行完后再存吗?如果那样,存的是同一个id对象,才讲的过去啊

JFinal

2019-01-15 12:19

@NGU-sunshine 仔细单步调试,这个问题没有什么技巧可言,只要细心就知道了

NGU-sunshine

2019-01-15 12:42

@JFinal 好的,谢谢波总

热门反馈

扫码入社