在好例子网,分享、交流、成长!
您当前所在位置:首页Others 开发实例一般编程问题 → AutoLoadCache高效缓存管理解决方案

AutoLoadCache高效缓存管理解决方案

一般编程问题

下载此实例

实例介绍

【实例简介】
AutoLoadCache 是基于AOP Annotation等技术实现的高效的缓存管理解决方案,实现缓存与业务逻辑的解耦,并增加异步刷新及“拿来主义机制”,以适应高并发环境下的使用。现在使用的缓存技术很多,比如Redis、 Memcache 、 EhCache等,甚至还有使用ConcurrentHashMap 或 HashTable 来实现缓存。但在缓存的使用上,每个人都有自己的实现方式,大部分是直接与业务代码绑定,随着业务的变化,要更换缓存方案时,非常麻烦。接下来我们就使用AOP Annotation 来解决这个问题,同时使用自动加载机制 来实现数据“常驻内存”。设计思想及原理:在infoq 发表的文章《面对缓存,有哪些问题需要思考?》《再谈缓存的穿透、数据一致性和最终一致性问题》。使用方法、注解(Annotation)说明、分布式锁支持、表达式的应用、缓存删除、Magic模式、注意事项、与Spring Cache的区别、最佳实战。autoload-cache-spring-boot-starter 推荐使用这个,test目录中也有可运行例子。源码阅读:已经实现基于aspectj 的AOP,代码在com.jarvis.cache.aop.aspectj.AspectjAopInterceptor。
【实例截图】
【核心代码】
文件清单
└── AutoLoadCache-f0138dfb98d716b0e2f971c7af7c94215ce64089
    ├── autoload-cache-aop
    │   ├── autoload-cache-aop-aspectj
    │   │   ├── pom.xml
    │   │   └── src
    │   │       └── main
    │   │           └── java
    │   │               └── com
    │   │                   └── jarvis
    │   │                       └── cache
    │   │                           └── aop
    │   │                               └── aspectj
    │   │                                   ├── AspectjAopInterceptor.java
    │   │                                   ├── AspectjCacheAopProxyChain.java
    │   │                                   ├── AspectjDeleteCacheAopProxyChain.java
    │   │                                   └── AspectjDeleteCacheTransactionalAopProxyChain.java
    │   ├── pom.xml
    │   └── README.md
    ├── autoload-cache-common
    │   ├── pom.xml
    │   ├── README.md
    │   └── src
    │       └── main
    │           └── java
    │               └── com
    │                   └── jarvis
    │                       ├── cache
    │                       │   ├── annotation
    │                       │   │   ├── CacheDelete.java
    │                       │   │   ├── CacheDeleteKey.java
    │                       │   │   ├── CacheDeleteMagicKey.java
    │                       │   │   ├── CacheDeleteTransactional.java
    │                       │   │   ├── Cache.java
    │                       │   │   ├── ExCache.java
    │                       │   │   ├── LocalCache.java
    │                       │   │   └── Magic.java
    │                       │   ├── aop
    │                       │   │   ├── CacheAopProxyChain.java
    │                       │   │   ├── DeleteCacheAopProxyChain.java
    │                       │   │   └── DeleteCacheTransactionalAopProxyChain.java
    │                       │   ├── CacheUtil.java
    │                       │   ├── comparator
    │                       │   │   ├── AutoLoadOldestComparator.java
    │                       │   │   └── AutoLoadRequestTimesComparator.java
    │                       │   ├── exception
    │                       │   │   ├── CacheCenterConnectionException.java
    │                       │   │   └── LoadDataTimeOutException.java
    │                       │   ├── MSetParam.java
    │                       │   ├── reflect
    │                       │   │   ├── generics
    │                       │   │   │   └── ParameterizedTypeImpl.java
    │                       │   │   └── lambda
    │                       │   │       ├── GenerateLambda.java
    │                       │   │       ├── GenerateLambdaMarkerClass.java
    │                       │   │       ├── GenerateLambdaProcessor.java
    │                       │   │       ├── LambdaFactory.java
    │                       │   │       ├── Lambda.java
    │                       │   │       └── MethodParameter.java
    │                       │   ├── to
    │                       │   │   ├── AutoLoadConfig.java
    │                       │   │   ├── AutoLoadTO.java
    │                       │   │   ├── CacheKeyTO.java
    │                       │   │   ├── CacheWrapper.java
    │                       │   │   ├── LocalCacheWrapper.java
    │                       │   │   └── ProcessingTO.java
    │                       │   └── type
    │                       │       ├── AutoLoadQueueSortType.java
    │                       │       └── CacheOpType.java
    │                       └── lib
    │                           └── util
    │                               ├── BeanUtil.java
    │                               ├── OsUtil.java
    │                               └── StringUtil.java
    ├── autoload-cache-core
    │   ├── pom.xml
    │   ├── README.md
    │   └── src
    │       └── main
    │           └── java
    │               └── com
    │                   └── jarvis
    │                       └── cache
    │                           ├── AutoLoadHandler.java
    │                           ├── CacheHandler.java
    │                           ├── CacheHelper.java
    │                           ├── ChangeListener.java
    │                           ├── ComboCacheManager.java
    │                           ├── DataLoaderFactory.java
    │                           ├── DataLoader.java
    │                           ├── DeleteCacheMagicHandler.java
    │                           ├── MagicHandler.java
    │                           └── RefreshHandler.java
    ├── autoload-cache-lock
    │   ├── autoload-cache-lock-api
    │   │   ├── pom.xml
    │   │   └── src
    │   │       └── main
    │   │           └── java
    │   │               └── com
    │   │                   └── jarvis
    │   │                       └── cache
    │   │                           └── lock
    │   │                               └── ILock.java
    │   ├── autoload-cache-lock-jedis
    │   │   ├── pom.xml
    │   │   └── src
    │   │       └── main
    │   │           └── java
    │   │               └── com
    │   │                   └── jarvis
    │   │                       └── cache
    │   │                           └── lock
    │   │                               ├── JedisClusterLock.java
    │   │                               └── ShardedJedisLock.java
    │   ├── autoload-cache-lock-redis
    │   │   ├── pom.xml
    │   │   └── src
    │   │       └── main
    │   │           └── java
    │   │               └── com
    │   │                   └── jarvis
    │   │                       └── cache
    │   │                           ├── lock
    │   │                           │   └── AbstractRedisLock.java
    │   │                           └── to
    │   │                               └── RedisLockInfo.java
    │   ├── pom.xml
    │   └── README.md
    ├── autoload-cache-manager
    │   ├── autoload-cache-manager-api
    │   │   ├── pom.xml
    │   │   └── src
    │   │       └── main
    │   │           └── java
    │   │               └── com
    │   │                   └── jarvis
    │   │                       └── cache
    │   │                           └── ICacheManager.java
    │   ├── autoload-cache-manager-jedis
    │   │   ├── pom.xml
    │   │   └── src
    │   │       └── main
    │   │           └── java
    │   │               └── com
    │   │                   └── jarvis
    │   │                       └── cache
    │   │                           └── redis
    │   │                               ├── JedisClusterCacheManager.java
    │   │                               ├── JedisClusterPipeline.java
    │   │                               ├── JedisUtil.java
    │   │                               ├── RetryableJedisClusterPipeline.java
    │   │                               └── ShardedJedisCacheManager.java
    │   ├── autoload-cache-manager-lettuce
    │   │   ├── pom.xml
    │   │   └── src
    │   │       └── main
    │   │           └── java
    │   │               └── com
    │   │                   └── jarvis
    │   │                       └── cache
    │   │                           └── redis
    │   │                               ├── LettuceRedisCacheManager.java
    │   │                               ├── LettuceRedisClusterCacheManager.java
    │   │                               └── LettuceRedisUtil.java
    │   ├── autoload-cache-manager-map
    │   │   ├── pom.xml
    │   │   └── src
    │   │       └── main
    │   │           └── java
    │   │               └── com
    │   │                   └── jarvis
    │   │                       └── cache
    │   │                           └── map
    │   │                               ├── CacheChangeListener.java
    │   │                               ├── CacheTask.java
    │   │                               └── MapCacheManager.java
    │   ├── autoload-cache-manager-memcache
    │   │   ├── pom.xml
    │   │   └── src
    │   │       └── main
    │   │           └── java
    │   │               └── com
    │   │                   └── jarvis
    │   │                       └── cache
    │   │                           └── memcache
    │   │                               └── MemcachedCacheManager.java
    │   ├── autoload-cache-manager-redis
    │   │   ├── pom.xml
    │   │   └── src
    │   │       └── main
    │   │           └── java
    │   │               └── com
    │   │                   └── jarvis
    │   │                       └── cache
    │   │                           └── redis
    │   │                               ├── AbstractRedisCacheManager.java
    │   │                               └── IRedis.java
    │   ├── pom.xml
    │   └── README.md
    ├── autoload-cache-script
    │   ├── autoload-cache-script-api
    │   │   ├── pom.xml
    │   │   └── src
    │   │       └── main
    │   │           └── java
    │   │               └── com
    │   │                   └── jarvis
    │   │                       └── cache
    │   │                           └── script
    │   │                               └── AbstractScriptParser.java
    │   ├── autoload-cache-script-js
    │   │   ├── pom.xml
    │   │   └── src
    │   │       └── main
    │   │           └── java
    │   │               └── com
    │   │                   └── jarvis
    │   │                       └── cache
    │   │                           └── script
    │   │                               └── JavaScriptParser.java
    │   ├── autoload-cache-script-ognl
    │   │   ├── pom.xml
    │   │   └── src
    │   │       └── main
    │   │           └── java
    │   │               └── com
    │   │                   └── jarvis
    │   │                       └── cache
    │   │                           └── script
    │   │                               └── OgnlParser.java
    │   ├── autoload-cache-script-springel
    │   │   ├── pom.xml
    │   │   └── src
    │   │       └── main
    │   │           └── java
    │   │               └── com
    │   │                   └── jarvis
    │   │                       └── cache
    │   │                           └── script
    │   │                               └── SpringELParser.java
    │   ├── pom.xml
    │   └── README.md
    ├── autoload-cache-serializer
    │   ├── autoload-cache-serializer-api
    │   │   ├── pom.xml
    │   │   └── src
    │   │       └── main
    │   │           └── java
    │   │               └── com
    │   │                   └── jarvis
    │   │                       └── cache
    │   │                           ├── clone
    │   │                           │   ├── Cloning.java
    │   │                           │   └── ICloner.java
    │   │                           ├── compress
    │   │                           │   ├── CommonsCompressor.java
    │   │                           │   └── ICompressor.java
    │   │                           └── serializer
    │   │                               ├── CompressorSerializer.java
    │   │                               ├── ISerializer.java
    │   │                               └── StringSerializer.java
    │   ├── autoload-cache-serializer-fastjson
    │   │   ├── pom.xml
    │   │   └── src
    │   │       └── main
    │   │           └── java
    │   │               └── com
    │   │                   └── jarvis
    │   │                       └── cache
    │   │                           └── serializer
    │   │                               └── FastjsonSerializer.java
    │   ├── autoload-cache-serializer-hessian
    │   │   ├── pom.xml
    │   │   └── src
    │   │       └── main
    │   │           └── java
    │   │               └── com
    │   │                   └── jarvis
    │   │                       └── cache
    │   │                           └── serializer
    │   │                               ├── HessianSerializer.java
    │   │                               └── hession
    │   │                                   ├── HessionBigDecimalSerializerFactory.java
    │   │                                   ├── HessionSoftReferenceSerializerFactory.java
    │   │                                   ├── SoftReferenceDeserializer.java
    │   │                                   ├── SoftReferenceSerializer.java
    │   │                                   ├── WeakReferenceDeserializer.java
    │   │                                   ├── WeakReferenceSerializerFactory.java
    │   │                                   └── WeakReferenceSerializer.java
    │   ├── autoload-cache-serializer-jackson
    │   │   ├── pom.xml
    │   │   └── src
    │   │       └── main
    │   │           └── java
    │   │               └── com
    │   │                   └── jarvis
    │   │                       └── cache
    │   │                           └── serializer
    │   │                               ├── JacksonJsonSerializer.java
    │   │                               └── NullValue.java
    │   ├── autoload-cache-serializer-jackson-msgpack
    │   │   ├── pom.xml
    │   │   └── src
    │   │       └── main
    │   │           └── java
    │   │               └── com
    │   │                   └── jarvis
    │   │                       └── cache
    │   │                           └── serializer
    │   │                               └── JacksonMsgpackSerializer.java
    │   ├── autoload-cache-serializer-jdk
    │   │   ├── pom.xml
    │   │   └── src
    │   │       └── main
    │   │           └── java
    │   │               └── com
    │   │                   └── jarvis
    │   │                       └── cache
    │   │                           └── serializer
    │   │                               └── JdkSerializer.java
    │   ├── autoload-cache-serializer-kryo
    │   │   ├── pom.xml
    │   │   └── src
    │   │       └── main
    │   │           └── java
    │   │               └── com
    │   │                   └── jarvis
    │   │                       └── cache
    │   │                           └── serializer
    │   │                               ├── kryo
    │   │                               │   ├── CacheWrapperSerializer.java
    │   │                               │   ├── DefaultKryoContext.java
    │   │                               │   ├── KryoClassRegistration.java
    │   │                               │   └── KryoContext.java
    │   │                               ├── KryoSerializer.java
    │   │                               └── NullValue.java
    │   ├── autoload-cache-serializer-protobuf
    │   │   ├── pom.xml
    │   │   └── src
    │   │       └── main
    │   │           └── java
    │   │               └── com
    │   │                   └── jarvis
    │   │                       └── cache
    │   │                           └── serializer
    │   │                               └── protobuf
    │   │                                   ├── HeapByteBufUtil.java
    │   │                                   ├── NullValue.java
    │   │                                   ├── ProtoBufSerializer.java
    │   │                                   ├── ReadByteBuf.java
    │   │                                   └── WriteByteBuf.java
    │   ├── pom.xml
    │   └── README.md
    ├── autoload-cache-spring-boot-starter
    │   ├── doc
    │   │   └── autoload-cache-ui.html.png
    │   ├── LICENSE
    │   ├── pom.xml
    │   ├── README.md
    │   └── src
    │       ├── main
    │       │   ├── java
    │       │   │   └── com
    │       │   │       └── jarvis
    │       │   │           └── cache
    │       │   │               ├── admin
    │       │   │               │   ├── AutoloadCacheController.java
    │       │   │               │   ├── AutoLoadVO.java
    │       │   │               │   └── HTTPBasicAuthorizeAttribute.java
    │       │   │               ├── autoconfigure
    │       │   │               │   ├── AutoloadCacheAutoConfigure.java
    │       │   │               │   ├── AutoloadCacheManageConfiguration.java
    │       │   │               │   ├── AutoloadCacheProperties.java
    │       │   │               │   ├── DistributedLockConfiguration.java
    │       │   │               │   └── MethodAnnotationPointcutAdvisor.java
    │       │   │               ├── interceptor
    │       │   │               │   ├── aopproxy
    │       │   │               │   │   ├── CacheAopProxy.java
    │       │   │               │   │   ├── DeleteCacheAopProxy.java
    │       │   │               │   │   └── DeleteCacheTransactionalAopProxy.java
    │       │   │               │   ├── CacheDeleteInterceptor.java
    │       │   │               │   ├── CacheDeleteTransactionalInterceptor.java
    │       │   │               │   └── CacheMethodInterceptor.java
    │       │   │               ├── redis
    │       │   │               │   ├── SpringRedisCacheManager.java
    │       │   │               │   └── SpringRedisLock.java
    │       │   │               └── util
    │       │   │                   └── AopUtil.java
    │       │   └── resources
    │       │       └── META-INF
    │       │           ├── resources
    │       │           │   ├── autoload-cache-ui.html
    │       │           │   └── webjars
    │       │           │       └── autoload-cache-ui
    │       │           │           ├── css
    │       │           │           │   ├── bootstrap.min.css
    │       │           │           │   └── bootstrap-vue.css
    │       │           │           └── js
    │       │           │               ├── axios.min.js
    │       │           │               ├── bootstrap-vue.js
    │       │           │               ├── list.js
    │       │           │               ├── polyfill.min.js
    │       │           │               └── vue.min.js
    │       │           └── spring.factories
    │       └── test
    │           ├── java
    │           │   └── com
    │           │       └── jarvis
    │           │           └── cache
    │           │               └── demo
    │           │                   ├── CacheDemoApplication.java
    │           │                   ├── condition
    │           │                   │   └── UserCondition.java
    │           │                   ├── config
    │           │                   │   └── AutoloadCacheConfiguration.java
    │           │                   ├── entity
    │           │                   │   └── UserDO.java
    │           │                   ├── mapper
    │           │                   │   ├── temp
    │           │                   │   │   └── BaseMapper.java
    │           │                   │   └── UserMapper.java
    │           │                   ├── service
    │           │                   │   ├── UserDAO.java
    │           │                   │   ├── UserServiceImpl.java
    │           │                   │   └── UserService.java
    │           │                   ├── test
    │           │                   │   ├── BaseServiceTest.java
    │           │                   │   ├── JedisClusterTest.java
    │           │                   │   └── UserServiceTest.java
    │           │                   └── web
    │           │                       └── UserController.java
    │           └── resources
    │               ├── application.yml
    │               ├── init_table.sql
    │               ├── logback-spring.xml
    │               └── mybatis
    │                   └── UserMapper.xml
    ├── doc
    │   ├── admin.md
    │   ├── annotations.md
    │   ├── autoload-cache1.png
    │   ├── autoload-cache.png
    │   ├── AutoLoadConfig.md
    │   ├── cacheAdmin.html
    │   ├── cache_admin.png
    │   ├── changesLog.md
    │   ├── ConcurrentHashMap.md
    │   ├── deleteCache.md
    │   ├── FlowChart.png
    │   ├── FlowChart.txt
    │   ├── FST.java
    │   ├── FSTSerializer.java
    │   ├── idea.md
    │   ├── JRedis.md
    │   ├── KryoTest.java
    │   ├── lock.md
    │   ├── magic.md
    │   ├── Memcache.md
    │   ├── script.md
    │   ├── SpringCache.md
    │   ├── suggest.md
    │   ├── use.md
    │   ├── wait.png
    │   └── warning.md
    ├── LICENSE
    ├── pom.xml
    └── README.md

251 directories, 216 files

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警