当前位置: 首页 > news >正文

专业从事成都网站建设网站开发费属于软件费吗

专业从事成都网站建设,网站开发费属于软件费吗,泉州做网站优化,扬州市江都区城乡建设局网站0. 引言 之前我们讲解了本地缓存ehcache组件#xff0c;在实际应用中#xff0c;并不是单一的使用本地缓存或者redis#xff0c;更多是组合使用来满足不同的业务场景#xff0c;于是如何优雅的组合本地缓存和远程缓存就成了我们要研究的问题#xff0c;而这一点#xff…0. 引言 之前我们讲解了本地缓存ehcache组件在实际应用中并不是单一的使用本地缓存或者redis更多是组合使用来满足不同的业务场景于是如何优雅的组合本地缓存和远程缓存就成了我们要研究的问题而这一点阿里开源的jetcache组件帮我们实现了 1. jetcache简介 jetcache是阿里开源的基于java开发的缓存框架支持多种缓存类型本地缓存、分布式缓存、多级缓存。能够满足不同业务场景的缓存需求。 jetcache具有上手简单、性能高效、拓展性强的特点。支持缓存预热 、缓存key前缀等功能。结合spring-cache使用可以实现十分优雅的缓存类型切换 官网地址https://github.com/alibaba/jetcache 官方文档https://github.com/alibaba/jetcache/tree/master/docs/CN 2. jetcache使用 1、引入依赖这里我们使用sringboot项目框架同时使用redis作为远程缓存。于是我们引入jetcache-starter-redis依赖这里我的springboot版本为2.6.13 如果是非springboot项目可以参考官网说明配置 dependencygroupIdcom.alicp.jetcache/groupIdartifactIdjetcache-starter-redis/artifactIdversion2.7.0/version /dependency!-- jetcache2.7.x版本需要额外添加该依赖-- dependencygroupIdredis.clients/groupIdartifactIdjedis/artifactIdversion4.3.1/version /dependency对应的版本说明如下springboot与jetcache版本关系 2、修改配置文件配置redis地址和线程数 jetcache:# 统计间隔0表示不统计开启后定期在控制台输出缓存信息statIntervalMinutes: 15# 是否把cacheName作为远程缓存key前缀areaInCacheName: false# 本地缓存配置local:default: # default表示全部生效也可以指定某个cacheName# 本地缓存类型其他可选caffeine/linkedhashmaptype: linkedhashmapkeyConvertor: fastjson# 远程缓存配置remote:default: # default表示全部生效也可以指定某个cacheNametype: redis# key转换器方式nkeyConvertor: fastjsonbroadcastChannel: projectA# redis序列化方式valueEncoder: javavalueDecoder: java# redis线程池poolConfig:minIdle: 5maxIdle: 20maxTotal: 50# redis地址与端口host: 127.0.0.1port: 6379更详细的参数配置可参考官网说明https://github.com/alibaba/jetcache/blob/master/docs/CN/Config.md 3、启动类添加注解EnableCreateCacheAnnotation开启缓存添加EnableMethodCache(basePackages com.example.jetcachedemo)注解配置缓存方法扫描路径 4、使用缓存可以通过三种方式 方式一推荐AOP模式通过Cached,CacheUpdate,CacheInvalidate注解 RestController RequestMapping(user) public class UserController {GetMapping(getRemote)Cached(nameuserCache:, key #id, expire 3600, timeUnit TimeUnit.SECONDS, cacheType CacheType.REMOTE)public User getRemote(Long id){// 直接新建用户模拟从数据库获取数据User user new User();user.setId(id);user.setName(用户remoteid);user.setAge(23);user.setSex(1);System.out.println(第一次获取数据未走缓存id);return user;}GetMapping(getLocal)Cached(nameuserCache:, key #id, expire 3600, timeUnit TimeUnit.SECONDS, cacheType CacheType.LOCAL)public User getLocal(Long id){// 直接新建用户模拟从数据库获取数据User user new User();user.setId(id);user.setName(用户localid);user.setAge(23);user.setSex(1);System.out.println(第一次获取数据未走缓存id);return user;}GetMapping(getBoth)Cached(nameuserCache:, key #id, expire 3600, timeUnit TimeUnit.SECONDS, cacheType CacheType.BOTH)public User getBoth(Long id){// 直接新建用户模拟从数据库获取数据User user new User();user.setId(id);user.setName(用户bothid);user.setAge(23);user.setSex(1);System.out.println(第一次获取数据未走缓存id);return user;}PostMapping(updateUser)CacheUpdate(name userCache:, key #user.id, value #user)public Boolean updateUser(RequestBody User user){// TODO 更新数据库return true;}PostMapping(deleteUser)CacheInvalidate(name userCache:, key #id)public Boolean deleteUser(Long id){// TODO 从数据库删除return true;}} 这里要注意实体类User一定要实现序列化即声明Serializable Data public class User implements Serializable {private Long id;private String name;private Integer age;private Integer sex; }方式二 API模式通过CreateCache注在jetcache 2.7 版本CreateCache注解已废弃不推荐使用 RestController RequestMapping(user2) public class User2Controller {CreateCache(name userCache:, expire 3600, timeUnit TimeUnit.SECONDS, cacheType CacheType.BOTH)private CacheLong, Object userCache;GetMapping(get)public User get(Long id){if(userCache.get(id) ! null){return (User) userCache.get(id);}User user new User();user.setId(id);user.setName(用户bothid);user.setAge(23);user.setSex(1);userCache.put(id, user);System.out.println(第一次获取数据未走缓存id);return user;}PostMapping(updateUser)public Boolean updateUser(RequestBody User user){// TODO 更新数据库userCache.put(user.getId(), user);return true;}PostMapping(deleteUser)public Boolean deleteUser(Long id){// TODO 从数据库删除userCache.remove(id);return true;}}方式三 高级API模式通过CacheManager2.7 版本才可使用 1添加依赖 dependencygroupIdcom.alibaba/groupIdartifactIdfastjson/artifactIdversion2.0.25/version /dependency2书写配置类 Configuration public class JetcacheConfig {Autowiredprivate CacheManager cacheManager;private CacheLong, Object userCache;PostConstructpublic void init(){QuickConfig qc QuickConfig.newBuilder(userCache:).expire(Duration.ofSeconds(3600)).cacheType(CacheType.BOTH)// 本地缓存更新后将在所有的节点中删除缓存以保持强一致性.syncLocal(false).build();userCache cacheManager.getOrCreateCache(qc);}Beanpublic CacheLong, Object getUserCache(){return userCache;} }3调用代码 RestController RequestMapping(user3) public class User3Controller {AutowiredJetcacheConfig jetcacheConfig;Autowiredprivate CacheLong, Object userCache;GetMapping(get)public User get(Long id){if(userCache.get(id) ! null){return (User) userCache.get(id);}User user new User();user.setId(id);user.setName(用户bothid);user.setAge(23);user.setSex(1);userCache.put(id, user);System.out.println(第一次获取数据未走缓存id);return user;}PostMapping(updateUser)public Boolean updateUser(RequestBody User user){// TODO 更新数据库userCache.put(user.getId(), user);return true;}PostMapping(deleteUser)public Boolean deleteUser(Long id){// TODO 从数据库删除userCache.remove(id);return true;}}多级缓存的形式会先从本地缓存获取数据本地获取不到会从远程缓存获取 5、启动redis启动演示项目 注意如果启动出现NoClassDefFoundError: redis/clients/util/Pool或NoClassDefFoundError: redis/clients/jedis/UnifiedJedis报错说明springboot与jetcache版本不一致对应关系可参考上述第一步中的说明 同时如果使用的是jetcache2.7.x版本因为该版本中有jedis包的依赖需要额外添加如下依赖或者将jetcache版本将至2.6.5以下 dependencygroupIdredis.clients/groupIdartifactIdjedis/artifactIdversion4.3.1/version /dependency3. 测试 3.1 方式一测试 1、访问localhost:8088/user/getRemote?id1 因为配置的是远程缓存在redis中也能看到对应的key 2、访问localhost:8088/user/getLocal?id1这个方法是从本地缓存获取的现在只有远程缓存上有数据我们调用发现缓存数据还是拿到了这说明当我们在配置文件中配置了本地缓存和远程缓存后方式一中本地缓存和远程缓存会自动相互调用 比如本地缓存有这个keyredis中没有通过远程缓存方式访问时会先从redis获取如果没有会自动获取本地缓存但是数据还是存储在本地缓存并不会同步到redis上这样更加灵活的实现了多级缓存架构 3.2 方式二测试 1、再测试下CreateCache的形式localhost:8088/user2/get?id4 正常获取了并且redis中也有了对应的值 而当我们把缓存方式更改为LOCAL后再访问localhost:8088/user2/get?id5 CreateCache(name userCache:, expire 3600, timeUnit TimeUnit.SECONDS, cacheType CacheType.LOCAL)会发现redis中就没有对应缓存了只在本地缓存存在说明我们指定本地缓存的形式成功了 3.3 方式三测试 1、调用localhost:8088/user3/get?id11 redis中缓存设置成功 4. 常见报错 1、 ClassNotFoundException: com.alibaba.fastjson.JSON 解决添加依赖 dependencygroupIdcom.alibaba/groupIdartifactIdfastjson/artifactIdversion2.0.25/version /dependency2、NoClassDefFoundError: redis/clients/jedis/UnifiedJedis 解决 添加依赖 dependencygroupIdredis.clients/groupIdartifactIdjedis/artifactIdversion4.3.1/version /dependency或者将jetcache版本降低至2.6.5以下 演示源码 https://gitee.com/wuhanxue/wu_study/tree/master/demo/jetcache-demo
http://www.hkea.cn/news/14300463/

相关文章:

  • 哪些网站做的不好用公司企业网站制作需要多少钱
  • ps做网站ui青岛网站建设服务平台
  • 网站建设与维护的国家定价标准免费涨1000粉丝网站
  • 互联网门户网站建设管理 总结手机wap网站模板使用
  • 销售推广案例网站电影订票网站开发
  • 网站流量超了wordpress网站之间互联
  • 用二级域名做网站群部署wordpress后访问空白页
  • 杭州手机软件开发优化网站性能监测
  • 网站建设进度控制团员建设网站
  • 专业企业网站开发联系电话滨州网站建设铭盛信息
  • 深圳公司网站建设seo网站推广报价
  • 网站内链seo平面设计公司网站
  • 网站封面如何做的吸引人购买了网站如何使用吗
  • 新建网站怎么保存php动态页面
  • 网站注册实名制怎么做网站公司网站定制
  • 网络营销讲师seo基础知识培训视频
  • seo优化网站的注意事项大连三合一网站制作
  • 眉山建行网站如何做响应式网站视频教程
  • 孝昌县建设局网站网络规划设计师工资
  • 做旅游网站的写手厦门同安网站制作企业
  • 高平市规建设局网站打开百度首页
  • 佛山做企业网站音乐网站禁止做浅度链接
  • 如何在淘宝网做自己的网站网页界面设计使用的单位主要是
  • 家教辅导培训网站建设google play
  • 网站视频主持人哪些网站用户体验好
  • 网站备案快吗wordpress 4.5.2模板
  • h5网站制作案例分析android studio教程
  • 搜索引擎网站排行榜网络平台怎么挣钱的
  • 自己电脑做服务器网站吗以下属于免费推广的方式是
  • 旅游网站建设相关报价表格巴里坤网站建设