首页 > 编程知识 正文

本地缓存与redis缓存的区别,springboot集群部署

时间:2023-05-04 22:06:19 阅读:44624 作者:2954

缓存程序经常调用的对象是指内存中存在的对象,在使用方便时可以立即调用。 不需要联系数据库或其他持久化设备。 DNS缓存、前端缓存、代理服务器缓存Nginx、APP应用程序缓存(本地缓存、分布式缓存)、数据库缓存分布式缓存和APP应用程序主要是指

一般分布式缓存Redis、Memcached等

本地缓存和业务程序组合的缓存(如myabtis中的l1或l2缓存)当然本地缓存速度最快,但不能在多个节点上共享常见的本地缓存。 MyAbtisl1缓存、mybatis缓存; 框架本身的缓存; redis本地独立服务ehchche; guava cache、Caffeine等选择了将本地缓存、分布式缓存和业务数据相结合的高并发项目。 通常,本地缓存和分布式缓存共同存在的Guava Cache 以下示例未作缓存无数据操作

github地址: https://github.com/Google/guava/wiki/caches explained全内存本地缓存提供了高性能、功能丰富的线程安全,操作简单。 (底层实现机制类似于并发地图。 ) 3358www.Sina

! --guava依赖包---从属cygroupidcom.Google.guava/groupidartifactidguava/artifactidversion 19.0/version/depenend

/** * Guava本地缓存API */@ componentpublicclassbasecache {/* * *分钟*/private CacheString,objecttenminutecache=chache 之后,低层也将扩展。 HashMap的段锁定没有并发冲突。 如果initialcapacity(10 ) /最大值设置过大,可能会发生内存冲突。 maximumsize ) 100 ) /并发行数设置同时有多少个线程写入. concurrencyLevel(5) 5?写入后10分钟过期. expireafterwrite(600,time unit /**时间*/private CacheString,objectonehourcache=cache builder.new builder (//要设置缓存的初始大小,必须合理设置。 后续可扩展低层在HashMap的段锁定中也没有并发冲突。 initialCapacity(30 ) /最大值设置过大可能会导致内存冲突。 maximumsize ) 100 ) /同时设置的线程数为. concurrencyLevel(5)5/在内部写入缓存或写入缓存后1小时. expireafterwrite(3600,tte 公共缓存字符串,对象getonehourcache () { return oneHourCache; } publicvoidsetonehourcache (cache string,Object oneHourCache ) { this.onehourcache=onehourcache; }公共缓存字符串,Object getTenMinuteCache () { return tenMinuteCache; } publicvoidsettenminutecache (cache字符串,Object tenMinuteCache ) this.tenminutecache=tenminutecache; }} Step1:添加依赖

以下操作是正常查询列表数据的操作,不放置dao层等

@ servicepublicclassvideobannerserviceimplimplementsvideobannerservice { @ autowiredprivatevideobannermapper @ overridepubliclistvideobannerlistbanner () try ) /如果找不到缓存,则使用在数据库中查找回调函数的JDK8写法的objectcacheobj=base cache . get (cachekey manager.index _ banner _ key,- { listvideobannervideobannerlist=videobannermapper.list baner () ) 返回视频bannerlist; ); //无数据操作//本地guave缓存if (缓存if ) listvideobannervideobannerlist=() 返回视频bannerlist; }catch(exceptione ) { e.printStackTrace ); //也可以返回驱动器内的数据,但对于在电子商务系统中没有太大意义的新闻和博客等项目,则使用return null的测试,需要调用同一查询接口两次。 在控制台上查看mysql日志打印。 如果只显示一个,则表示缓存实现

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。