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

南部县建设局网站网页布局的基本概念

南部县建设局网站,网页布局的基本概念,在线做投资网站,怎么制作网址内容原文地址#xff1a;Spring Boot 入门之缓存和 NoSQL 篇#xff08;四#xff09; 博客地址#xff1a;http://www.extlight.com 一、前言 当系统的访问量增大时#xff0c;相应的数据库的性能就逐渐下降。但是#xff0c;大多数请求都是在重复的获取相同的数据#xff… 原文地址Spring Boot 入门之缓存和 NoSQL 篇四 博客地址http://www.extlight.com 一、前言 当系统的访问量增大时相应的数据库的性能就逐渐下降。但是大多数请求都是在重复的获取相同的数据如果使用缓存将结果数据放入其中可以很大程度上减轻数据库的负担提升系统的响应速度。 本篇将介绍 Spring Boot 中缓存和 NoSQL 的使用。上篇文章《Spring Boot 入门之持久层篇三》。 二、整合缓存 Spring Boot 针对不同的缓存技术实现了不同的封装本篇主要介绍 EhCache 和 Redis 缓存。 Spring Boot 提供了以下几个注解实现声明式缓存 注解说明EnableCaching开启缓存功能放在配置类或启动类上CacheConfig缓存配置设置缓存名称Cacheable执行方法前先查询缓存是否有数据。有则直接返回缓存数据否则查询数据再将数据放入缓存CachePut执行新增或更新方法后将数据放入缓存中CacheEvict清除缓存Caching将多个缓存操作重新组合到一个方法中2.1 EhCache 缓存 2.1.1 添加依赖 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-cache/artifactId /dependencydependencygroupIdnet.sf.ehcache/groupIdartifactIdehcache/artifactId /dependency 2.1.2 添加配置 1在 src/main/resources 目录下创建 ehcache.xml 文件内容如下 ?xml version1.0 encodingUTF-8? ehcache xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:noNamespaceSchemaLocationhttp://ehcache.org/ehcache.xsd!-- 磁盘缓存位置 --diskStore pathjava.io.tmpdir/ehcache/!-- 默认缓存 --defaultCachemaxEntriesLocalHeap10000eternalfalsetimeToIdleSeconds120timeToLiveSeconds120maxEntriesLocalDisk10000000diskExpiryThreadIntervalSeconds120memoryStoreEvictionPolicyLRUpersistence strategylocalTempSwap//defaultCache!-- 自定义缓存 --cache namedepartmentmaxElementsInMemory1000eternalfalsetimeToIdleSeconds50timeToLiveSeconds50overflowToDiskfalsememoryStoreEvictionPolicyLRU/ /ehcache 说明 nameCache 的唯一标识 maxElementsInMemory内存中允许存储的最大的元素个数 maxElementsOnDisk硬盘最大缓存个数0代表无限个 clearOnFlush内存数量最大时是否清除 eternal缓存对象是否永久有效如果是超时设置将被忽略 overflowToDisk内存不足超过 maxElementsInMemory时是否启用磁盘缓存 timeToIdleSeconds设置对象在失效前的允许闲置时间单位秒。仅当eternalfalse对象不是永久有效时使用可选属性默认值是0也就是可闲置时间无穷大 timeToLiveSeconds缓存数据的生存时间TTL也就是一个元素从构建到消亡的最大时间间隔值这只能在元素不是永久驻留时有效如果该值是0就意味着元素可以停顿无穷长的时间 diskPersistent是否将缓存数据持久化到磁盘上如果为 trueJVM 重启数据依然存在。默认值是false diskSpoolBufferSizeMB这个参数设置DiskStore磁盘缓存的缓存区大小。默认是30MB。每个Cache都应该有自己的一个缓冲区 diskExpiryThreadIntervalSeconds磁盘失效线程运行时间间隔默认是120秒 memoryStoreEvictionPolicy当达到 maxElementsInMemory 限制时Ehcache 将根据指定策略清除内存。默认为 LRU最近最少使用其他策略有 FIFO先进先出LFU较少使用 2application.properties # 缓存类型ehcache、redis spring.cache.typeehcache# ehcache 配置文件 spring.cache.ehcache.configclasspath:ehcache.xml# 打印日志查看 sql logging.level.com.light.springbootDEBUG 2.1.3 编码 在持久层篇的基础上结合 Mybatis 测试 Service 层 CacheConfig(cacheNames department) Service public class DepartmentService {Autowiredprivate DepartmentMapper departmentMapper;CachePut(key #department.id)public Department save(Department department) {System.out.println(保存 id department.getId() 的数据);this.departmentMapper.insert(department);return department;}CachePut(key #department.id)public Department update(Department department) {System.out.println(修改 id department.getId() 的数据);this.departmentMapper.update(department);return department;}Cacheable(key #id)public Department getDepartmentById(Integer id) {System.out.println(获取 id id 的数据);Department department this.departmentMapper.getById(id);return department;}CacheEvict(key #id)public void delete(Integer id) {System.out.println(删除 id id 的数据);this.departmentMapper.deleteById(id);} } 控制层 Controller RequestMapping(department) ResponseBody public class DepartmentController {Autowiredprivate DepartmentService departmentService;RequestMapping(save)public MapString,Object save(Department department) {this.departmentService.save(department);MapString,Object map new HashMapString,Object();map.put(code, 200);map.put(msg, 保存成功);return map;}RequestMapping(get/{id})public MapString,Object get(PathVariable(id) Integer id) {Department department this.departmentService.getDepartmentById(id);MapString,Object map new HashMapString,Object();map.put(code, 200);map.put(msg, 获取成功);map.put(data, department);return map;}RequestMapping(update)public MapString,Object update(Department department) {this.departmentService.update(department);MapString,Object map new HashMapString,Object();map.put(code, 200);map.put(msg, 修改成功);return map;}RequestMapping(delete/{id})public MapString,Object delete(PathVariable(id) Integer id) {this.departmentService.delete(id);MapString,Object map new HashMapString,Object();map.put(code, 200);map.put(msg, 删除成功);return map;} } 启动类 添加 EnableCaching 注解开启缓存功能。 EnableCaching SpringBootApplication public class SpringbootNosqlApplication {public static void main(String[] args) {SpringApplication.run(SpringbootNosqlApplication.class, args);} }2.1.4 测试说明 1) 发起保存请求 保存 id2 的数据 2017-12-06 14:50:48.800 DEBUG 680 --- [nio-8081-exec-7] c.l.s.dao.DepartmentMapper.insert : Preparing: insert into department(id,name,descr) values(?,?,?) 2017-12-06 14:50:48.801 DEBUG 680 --- [nio-8081-exec-7] c.l.s.dao.DepartmentMapper.insert : Parameters: 2(Integer), Ehcache 部门(String), Ehcache(String) 2017-12-06 14:50:48.868 DEBUG 680 --- [nio-8081-exec-7] c.l.s.dao.DepartmentMapper.insert : Updates: 1 2) 保存成功后立刻发起查询请求没有日志打印但返回对象数据说明数据是从缓存中获取。 3) 发起修改请求 修改 id2 的数据 2017-12-06 14:51:16.588 DEBUG 680 --- [nio-8081-exec-8] c.l.s.dao.DepartmentMapper.update : Preparing: update department set name ? , descr ? where id ? 2017-12-06 14:51:16.589 DEBUG 680 --- [nio-8081-exec-8] c.l.s.dao.DepartmentMapper.update : Parameters: Ehcache 部门2(String), Ehcache2(String), 2(Integer) 2017-12-06 14:51:16.657 DEBUG 680 --- [nio-8081-exec-8] c.l.s.dao.DepartmentMapper.update : Updates: 1 4) 修改成功后立刻发起查询请求没有日志打印但返回修改后的对象数据说明缓存中的数据已经同步。 5) 发起删除请求 删除 id2 的数据 2017-12-06 14:52:07.572 DEBUG 680 --- [nio-8081-exec-1] c.l.s.dao.DepartmentMapper.deleteById : Preparing: delete from department where id ? 2017-12-06 14:52:07.572 DEBUG 680 --- [nio-8081-exec-1] c.l.s.dao.DepartmentMapper.deleteById : Parameters: 2(Integer) 2017-12-06 14:52:07.613 DEBUG 680 --- [nio-8081-exec-1] c.l.s.dao.DepartmentMapper.deleteById : Updates: 1 6) 删除成功后立刻发起查询请求控制台打印 sql 语句说明缓存数据被删除需要查询数据库。 获取 id2 的数据 2017-12-06 14:52:40.324 DEBUG 680 --- [nio-8081-exec-3] c.l.s.dao.DepartmentMapper.getById : Preparing: select id,name,descr from department where id ? 2017-12-06 14:52:40.325 DEBUG 680 --- [nio-8081-exec-3] c.l.s.dao.DepartmentMapper.getById : Parameters: 2(Integer) 2017-12-06 14:52:40.328 DEBUG 680 --- [nio-8081-exec-3] c.l.s.dao.DepartmentMapper.getById : Total: 0 2.2 Redis 缓存 2.2.1 添加依赖 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-redis/artifactId /dependency 2.2.2 添加配置 application.properties # redis 配置 spring.redis.host192.168.2.11 spring.redis.port6379 spring.redis.passwordredis123 # 缓存过期时间单位毫秒 spring.cache.redis.time-to-live60000# 缓存类型ehcache、redis spring.cache.typeredis# 打印日志查看 sql logging.level.com.light.springbootDEBUG 注意spring.cache.typeredis缓存类型设置成 redis。 完成上边 2 个步骤后其他步骤与测试 Ehcache 时的步骤一致。 测试结果也一致此处省略。 三、整合 Redis 上一个小节其实已经介绍了 Spring Boot 整合 Redis 的内容。 在添加 redis 依赖包启动项目后Spring Boot 会自动配置 RedisCacheManger 和 RedisTemplate 的 Bean。如果开发者不想使用 Spring Boot 写好的 Redis 缓存而是想使用其 API 自己实现缓存功能、消息队列或分布式锁之类的需求时可以继续往下浏览。 Spring Data Redis 为我们提供 RedisTemplate 和 StringRedisTemplate 两个模板进行数据操作它们主要 的访问方法如下 方法说明opsForValue()操作简单属性的数据opsForList()操作含有 list 的数据opsForSet()操作含有 set 的数据opsForZSet()操作含有 zset 的数据opsForHash()操作含有 hash 的数据3.1 添加依赖 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-redis/artifactId /dependency 3.2 配置连接 spring.redis.host192.168.2.11 spring.redis.port6379 spring.redis.passwordredis123 3.3 编码 Component public class RedisDao {Autowiredprivate StringRedisTemplate stringRedisTemplate;public void set(String key, String value) {this.stringRedisTemplate.opsForValue().set(key, value);}public String get(String key) {return this.stringRedisTemplate.opsForValue().get(key);}public void delete(String key) {this.stringRedisTemplate.delete(key);} } 3.4 测试 RunWith(SpringRunner.class) SpringBootTest public class RedisDaoTest {Autowiredprivate RedisDao redisDao;Testpublic void testSet() {String key name;String value zhangsan;this.redisDao.set(key, value);}Testpublic void testGet() {String key name;String value this.redisDao.get(key);System.out.println(value);}Testpublic void testDelete() {String key name;this.redisDao.delete(key);} }测试结果省略... 四、整合 MongoDB Spring Data MongoDB 提供了 MongoTemplate 模板 和 Repository 让开发者进行数据访问。 4.1 添加依赖 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-mongodb/artifactId /dependency 4.2 配置连接 spring.data.mongodb.host192.168.2.31 spring.data.mongodb.port27017 spring.data.mongodb.databasetest 4.3 编码 4.3.1 使用 MongoTemplate Component public class MongodbDao {Autowiredprivate MongoTemplate mongoTemplate;public void insert(Department department) {this.mongoTemplate.insert(department);}public void deleteById(int id) {Criteria criteria Criteria.where(id).is(id);Query query new Query(criteria);this.mongoTemplate.remove(query, Department.class);}public void update(Department department) {Criteria criteria Criteria.where(id).is(department.getId());Query query new Query(criteria);Update update new Update();update.set(descr, department.getDescr());this.mongoTemplate.updateMulti(query, update, Department.class);}public Department getById(int id) {Criteria criteria Criteria.where(id).is(id);Query query new Query(criteria);return this.mongoTemplate.findOne(query, Department.class);}public ListDepartment getAll() {ListDepartment userList this.mongoTemplate.findAll(Department.class);return userList;}} 4.3.2 使用 Repository public interface DepartmentRepository extends MongoRepositoryDepartment, Integer {} 测试方式与 Redis 测试大同小异测试结果省略... 五、源码下载 Spring Boot 入门之缓存和 NoSQL 篇测试源码六、参考资料 官方文档ehcache入门基础示例ML-BLOG 读者可参考笔者的开源博客源码学习转载于:https://www.cnblogs.com/moonlightL/p/8066033.html
http://www.pierceye.com/news/156605/

相关文章:

  • 网站超级外链做企业网站大约多少钱
  • 中国网站建设市场分析桂林公司网站搭建
  • 阿里云 企业网站选哪种洞窝app是谁开发的
  • ppt模板做的好的网站有哪些wordpress 多站点设置
  • ui作品集 网站怎么做网站制作加我
  • 自助做网站wordpress更换本地主题
  • 凡科网多页网站怎样做一线城市做网站工资有多少
  • .asp网站怎么做需要一个网站
  • 免费网站代码大全网站开发费入什么费用
  • 网站域名注册多少钱搜索引擎优化工具深圳
  • 学建设网站去哪里学建网站要大约多少钱
  • 网站正则表达式怎么做网站维护一般需要多久
  • 北京网站优化价格有没有做花卉种子的网站啊
  • 资源型网站建设 需要多大硬盘vi设计方案模板
  • 网站怎么做图片放映效果代码怎么生成网站
  • 怎么写代码做网站建投商务网官网
  • 江西那家做网站公司好各类网站建设
  • 做网站和服务器的大小有关吗it培训课程
  • 湖南网站建设公司 搜搜磐石网络网站推广模板
  • 网站是软件吗页网站设计
  • 网站服务器搭建及配置的具体步骤如果自己制作网站
  • 湖北餐饮网站建设做排版的网站
  • 广东省建设教育协会官方网站首页世界上最有趣的网站
  • 平面构成作品网站手机网页qq登录
  • 厦门app开发网站开发公司电话重庆网站排名外包
  • 个人备案经营网站用自己网站做邮箱域名解析
  • 为什么大公司开发网站做英文网站网站犯法吗
  • 大连网站seo陇西网站建设公司
  • 电力建设工程质监总站网站域名使用费用一年多少钱
  • 建设单位网站经费请示上海外国语大学学风建设网站