jetcache icon indicating copy to clipboard operation
jetcache copied to clipboard

JetCache is a Java cache framework.

Results 222 jetcache issues
Sort by recently updated
recently updated
newest added

有默认值是否可以不做非空校验?因为看到SpringData和Redisson没有做这个校验

jetcache2.6以后我觉得已经比较完善,一度疏于维护。现在,根据最近两年积攒的问题,准备升级一波。 预计有以下修改: - 两级缓存的情况下,如果一台服务器更新了缓存,会去刷新其它服务器的本地缓存。通过redis pub/sub来实现(jedis已经实现,其它的开发中)。 - 内置json序列化、反序列化器。其实这个最早是有的,但是后来因为兼容和安全的原因去掉了,丢给了用户自己实现,其实jetcache定制encoder/decoder非常简单,不过确实有很多人不会。 - 废弃CreateCache注解,并提供替代方式。CreateCache的问题是不能提供全功能配置,而且实现方式过于hack,总担心哪天spring升级它又不能用了。如果使用CacheAPI,又比较麻烦,需要各种设置。所以新的方式应该基当前的项目cache配置模板,然后通过api来组装。 - 可能会提供集中化的缓存配置文件。现在CreateCache和Cached都可以定义缓存,如果两个注解(相同的area和name)定义不一样,按什么方式创建Cache实例是不能确定的。集中的配置文件还有个好处,可以统一管理,适合大型项目,与之相反,散落在各个java文件里面的注解,不利于评估整个项目的缓存使用情况。 - 类库升级和一些不兼容升级,fastjson会升级到fastjson2,详见[兼容性说明](https://github.com/alibaba/jetcache/blob/master/docs/CN/Compatibility.md)(更新中) 一些设计原则:jetcache最强的能力来自CacheAPI,注解只是提供一个方便,满足大部分场景即可。一些复杂的需求应该用CacheAPI来实现,以前通过CreateCache注解可以获取Cache实例(以后会提供更好的方式)。所以,如果需要对注解那一套机制进行复杂的修改来实现什么功能,我觉得不是好的实践,很可能是不会做的(我自己现在也特别讨厌spring)。 时间上,预计就在这个月,会加速开发。2.7版本发布以后,我会发起全新的项目并将主要精力投入其中(过些天我会在个人仓库下创建这个新项目),之后jetcache暂时不会再开发大的特性。 2022年7月8日

切换到2.7.0 RC3版本后会一直报错: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.alicp.jetcache.CacheManager' available at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:351) at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:342) at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1172) at com.alicp.jetcache.anno.aop.JetCacheInterceptor.invoke(JetCacheInterceptor.java:55) 2.7.0 M2无问题

所有的issue我都会看。请尽量提供有助于解决问题的线索,比如: - jetcache的版本,以及其它依赖的版本,比如spring、jedis、lettuce等 - 如果有错误,提供完整的错误信息 - 相关配置和代码,请使用markdown格式书写 - 可以重现的步骤 - 你的分析 千万不要一句标题贴一条错误消息,然后正文什么都没有。大家都是成年人,你懂的。这种问题以后我都不回复。 有一些issue提供了一些信息,但是也没有回复,那是因为我暂时帮不上你(我无法从你提供的内容看出问题)。 有问题也可以先看一下文档(如果你用2.6版本建议切换到2.6分支看):https://github.com/alibaba/jetcache/tree/master/docs 另外,jetcache对jedis/lettuce的配置很可能不是最优的,这些大多可以在配置文件中改,如果哪里需要修改默认的配置方式,欢迎提出意见或pr。

## 环境: - JDK 8 U331 - Spring Boot 2.7.2 - JetCache 2.6.7 - RedisClient :Lettuce ## 问题: 首先该问题在单体应用或者一个独立服务中,没有发现。 如果是用微服务,两个服务同时使用同一个 Redis。第一个服务没有任何问题,第二个服务中,如果缓存中使用了和第一个服务相同的Key的缓存,那么就会出现这个问题。 ``` com.alicp.jetcache.AbstractCache: jetcache(RedisLettuceCache) GET error. key=[XXX] ``` ## 额外说明:...

源码中位置 com.alicp.jetcache.anno.support.AbstractLifecycle private boolean inited; @PostConstruct public final synchronized void init() { if (!inited) { doInit(); inited = true; } } 这个地方启用禁用jetcache 的代码是有用PostConstruct来实现了,目前没提供参数停止执行这个init方法,只能改源码实现吗?

查询方法上的注解 @Cached(name = "AAAAA",key = "'AAAAA'",expire = 180, cacheType = CacheType.REMOTE) 另外一个方法上的缓存失效 @CacheInvalidate(name = "AAAAA",key = "'AAAAA'") 报错: can't find @Cached definition with area=default name=AAAAA, specified in 某个方法

请教一下大大,使用jetcache遇到这样的问题,有何指引? 缓存注解写在微服务的接口上,由于开启了CacheType.BOTH,所以微服务生产者和消费者都会有一级缓存和二级缓存 参考是首页的这个例子 public interface SummaryService{ @Cached(expire = 3600, cacheType = CacheType.BOTH) @CacheRefresh(refresh = 1800, stopRefreshAfterLastAccess = 3600, timeUnit = TimeUnit.SECONDS) @CachePenetrationProtect BigDecimal summaryOfToday(long catagoryId); } 由于开了CacheRefresh(在缓存没失效时主动刷新),所以会从微服务consumer(有时候可能是provider刷新,取决于谁拿到锁)发起刷新请求,调用微服务provider。 如果此时数据库的数据发生变化,通过CacheUpdate更新了某个provider的一级和二级缓存,但是有一个provider的一级缓存还没更新,此时CacheRefresh的请求刚好hit中这个还没更新一级缓存的节点。 ![image](https://user-images.githubusercontent.com/916562/122680820-d558ff80-d223-11eb-84c0-4fbe25a967c2.png) 然后这个结果,会刷新到consumer的一级和二级缓存里,因此redis也被更新了错的数据。...