首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

28-磁盘知识

持久化的存储设备 存储设备,系统中容量最大的存储设备 存储数据之前,要先进行格式化 linux:ext4 windwos:FAT32、NTFS 在读写数据时,数据与磁盘间有个磁盘缓存(内存的一部分) 机械磁盘...「HHD」 由盘片,磁头组成,数据存在盘片的环形磁道上,读写时,磁头移动,定位到数据的磁道,进行数据读写 固态磁盘「SSD」 由固态电子元器件组成,不需要磁头寻址,所以不管是连续IO还是随机IO,都比机械盘快...:类似NTFS文件系统,也就是块,只是被叫做「簇」 页page:操作系统与内存数据交换的最小单位 缓冲区:buffer内存与磁盘速度不匹配,在数据与磁盘进行IO时,数据先进入缓存区 页缓存Linux内存中对磁盘部分数据的副本...写速度不变,读速度提升2倍,数据冗余1份,主要用于数据备份,但磁盘利用率低 RAID5:数据分片和校验码混合存储3份,读写速度提升2倍,主要在要求告诉时用,可以用于数据还原 RAID10:2块磁盘1组先RAID1...另一方面,新的文件系统,新类型的存储介质,可以无须编译的情况下,动态加载到Linux中 文件IO 文件操作:先open,再read或write,最后close 读写的不同: 是否利用标准库缓存缓存IO

54130
您找到你想要的搜索结果了吗?
是的
没有找到

使用redis缓存

redis常本用来作为缓存服务器。缓存的好处是减少服务器的压力,数据查询速度快。解决数据响应慢的问题。 添加缓存:只用redis的Hash数据类型添加缓存。...例如:需要在查询的业务功能中,添加缓存 1.首先需要在执行正常的业务逻辑之前(查询数据库之前),查询缓存,如果缓存中没有需要的数据,查询数据库 为了防止添加缓存出错,影响正常业务代码的执行,将添加缓存的代码放置到...2.完成数据库的查询操作,查询完成之后需要将查询的数据添加到缓存中。...,便于展示,为了保证添加缓存出现错误不影响程序的正常业务功能,可以使用try catch的方式加缓存 try { String json = jedisClient.hget...所谓缓存同步,也就是在数据库的增删改操作完成之后,清除对应的缓存即可,下一次执行查询操作时,重新添加新的缓存,这样就很好的实现了缓存同步的问题。

1.5K70

springboot使用redis缓存

本文和道友们一起看下如果使用redis缓存。...我发现很多时候对于redis的使用我们只会用到get、set方法,而天天口口声声说的缓存并没有真正的用到,其实用法很简单,因为之前已经说过session共享,因此session共享的依赖没有去掉,集成步骤如下...@Cacheable 表示将返回结果缓存到redis,key值为dict::{{第一个参数}} “#p0”表示取第一个参数,如果参数为对象,则可以通过#p0.id获取对象的id 2....@CacheEvict表示删除该缓存数据 @CachePut表示修改该缓存数据 @ApiOperation(value = "获取字典详情", notes = "根据id获取字典") @ApiImplicitParam...请求两次上面的controller,返回结果如下: 1.结果被缓存到redis 2.第二次请求时候没有输出“开始获取id为【58ce515474cd454fb6266f49a01833c0】的字典”,

1.1K20

(11)SpringBoot整合EhCache缓存

摘要:本文介绍在SpringBoot项目中,如何使用EhCache缓存。...它具有如下特点: 快速 简单 多种缓存策略 缓存数据有两级:内存和磁盘,因此无需担心容量问题 缓存数据会在虚拟机重启的过程中写入磁盘 可以通过RMI、可插入API等方式进行分布式缓存 具有缓存缓存管理器的侦听接口...在SpringBoot项目中整合EhCache缓存,具体步骤如下: 1.pom.xml 我们在pom.xml中引入相关依赖: <!...此次案例我们在以下方法简单测试: package com.java4all.dao; import com.java4all.entity.User; import org.springframework.cache.annotation.CacheConfig...- unless:另外一个缓存条件参数,非必需,需使用SpEL表达式。它不同于condition参数的地方在于它的判断时机,该条件是在函数被调用之后才判断的,所以它可以通过对result进行判断。

97110

Nginx缓存服务器

levels: 设置缓存文件目录层次;levels=1:2 表示两级目录 keys_zone: 设置缓存名字和共享内存大小 inactive: 在指定时间内没人访问则被删除 max_size: 最大缓存空间...,如果缓存空间满,默认覆盖掉缓存时间最长的资源。...proxy_cache tmp-test: 使用名为tmp-test的缓存配置 proxy_cache_key $uri :定义缓存唯一key,通过唯一key来进行hash存取 proxy_cache_methods...:设置缓存哪些HTTP方法 proxy_cache_min_uses :指定请求至少被发送了多少次以上时才缓存,可以防止低频请求被缓存 proxy_cache_bypass :如果指定的任何一个变量值不为空...),则其他请求将同时请求到后端来获取响应,且响应不会被缓存;启用proxy_cache_lock可以应对雪崩效应。

2.7K20

如何用redismemcacheMysql缓存层?

目前公司的一个项目,数据库用的是Mysql,正在考虑用redis/memcached数据库的缓存层,目前的想法就是在读DB前,先读缓存层,如果有直接返回,如果没有再读DB,然后写入缓存层并返回。...前者终究是个缓存,不可能永久保存数据(LRU机制),支持分布式,后者除了缓存的同时也支持把数据持久化到磁盘等,redis要自己去实现分布式缓存(貌似最新版本的已集成),自己去实现一致性hash。...3.缓存量大但又不常变化的数据,比如评论。 4.你的思路是对的,清晰明了,读DB前,先读缓存,如果有直接返回,如果没有再读DB,然后写入缓存层并返回。...再上缓存之前把这些做好。 7.把读取缓存等操作做成服务组件,对业务层提供服务,业务层对应用层提供服务。 8.保留原始数据库组件,优化成服务组件,方便后续业务层灵活调用缓存或者是数据库。...9.不建议一次性全量上缓存,最开始不动核心业务,可以将边缘业务先换成缓存组件,一步步换至核心业务。 10.

1.4K100

使用Redis预定库存缓存功能

最近在自己的工作中,把其中一个PHP项目的缓存从以前的APC缓存逐渐切换到Redis中,并且根据Redis所支持的数据结构做了库存维护功能。...缓存是在业务层的,准确讲应该是在MVC模型中Model的ORM里面。主要逻辑就是先查缓存,查不到的话再查数据库。...另外,宝物类型和房间号合起来redis key,会导致我们在redis中和宝物库存相关的key的数量比较多,为了方便统一管理这些key,可以再增加一条redis缓存,专门用来存储和宝物库存相关的所有redis...这么的一个好处是,万一哪天碰到一些特殊情况,需要把所有库存相关缓存全部清空的话,我们可以很容易地取出所有的库存key并删除操作。...以上就是我在业务中碰到的一个缓存设计的小问题,不吝赐教!

72720

byte[]缓存key导致JVM异常

然后查看代码,发现代码中引入了缓存。我们查询的数据源是HBase,当时的作者为了减少和HBase之间的IO交互,将查询的内容进行了缓存,而key是HBase的(byte[])rowkey。...查询缓存的第一步是检查key是否在缓存中,该过程首先判断key的hashcode是否能和已有的key匹配,如果匹配,再判断是否equals。...因为数组的hashcode和对象的地址有关,而和内容是没有关系的,这样缓存永远都不会命中。...ArrayNode load(byte[] key) throws Exception { return EMPTY_NODE; } }); 在查询前后,发现缓存果真一次都没有命中...解决 我们的query压力不大,将这段无用的缓存模块删掉,这为我们节约了大量的内存 query模块不是单点的,而且JVM随着时间的运行,会产生大量的碎片,从而影响性能。

53110

如何用redismemcacheMysql缓存层?

目前公司的一个项目,数据库用的是Mysql,正在考虑用redis/memcached数据库的缓存层,目前的想法就是在读DB前,先读缓存层,如果有直接返回,如果没有再读DB,然后写入缓存层并返回。...前者终究是个缓存,不可能永久保存数据(LRU机制),支持分布式,后者除了缓存的同时也支持把数据持久化到磁盘等,redis要自己去实现分布式缓存(貌似最新版本的已集成),自己去实现一致性hash。...3.缓存量大但又不常变化的数据,比如评论。 4.你的思路是对的,清晰明了,读DB前,先读缓存,如果有直接返回,如果没有再读DB,然后写入缓存层并返回。...再上缓存之前把这些做好。 7.把读取缓存等操作做成服务组件,对业务层提供服务,业务层对应用层提供服务。 8.保留原始数据库组件,优化成服务组件,方便后续业务层灵活调用缓存或者是数据库。...9.不建议一次性全量上缓存,最开始不动核心业务,可以将边缘业务先换成缓存组件,一步步换至核心业务。

1.7K90

IP 定位缓存该如何

到这里已经确认了问题出现在 IP 到地域编码的缓存上,那 IP到地域编码的缓存还有优化空间吗? IP 定位属于基础服务,公司内部有很多调用方,所以缓存也是一个通用的问题。...先找定位服务负责人请教一下缓存的经验,沟通未获取到缓存方面更好的实践,不过获取到两个很重要的信息,IP定位只用IP 的前三段,就是说1.12.36.0~1.26.36.255 都会定位到同一个地域编码;...另外一个信息是国内记录数不到百万,这说明全量缓存是可行的。...这时还有一个问题就是过期时间怎么,IP 到地域编码每天会有少量的调整,所以要实现一个过期机制。...全量缓存以及更长的缓存时间也大幅减少了对 IP 定位服务的调用量,从 12000 QPS 下降到 2400 QPS。

65020

Linux缓存机制bufferscached

缓存机制:Linux引入了buffers和 cached机制,buffers与cached都是内存操作,用来保存系统曾经打开过的文件以及文件元数据,这样当操作系统需要读取某些文件时,首先在buffers...为了方便查找文件,linux引入目录项(dentry)描述目录与文件的关系树,Linux为每一个目录建立一个目录项,也为每个文件建立一个目录项。...而cached是用来给文件/数据缓冲。更通俗一点说,cached里面存储的是数据,buffers里面存储的是数据在磁盘块表示形式。...为了便于更好地理解buffers和cached机制,下面两个测试: 测试一:执行cat命令查看主机名,第一次查看主机名后,Cached值明显增大了,是因为主机名的数据存入了cached;第二次查看主机名后...根据Linux虚拟内存管理机制,这种行为是正常的。要理解为什么缓存会变得如此之高,以及为什么这不是一个问题,就必须了解I/O在Linux上是如何工作的。

4.6K10

spring+redis的集成,redis缓存

这时候,基于内存的缓存框架,就能解决我们很多问题。例如Memcache,Redis等。将一些频繁使用的数据放入缓存读取,大大降低了数据库的负担。提升了系统的性能。      ...有于Memcached,对于缓存对象大小有要求,单个对象不得大于1MB,且不支持复杂的数据类型,譬如SET等。因此现在Redis用的越来越多。 2.引入依赖 <!...如果有需求设置缓存存活的时间可以在每个的set方法里面调用一下设置存活时间的方法,或者直接将存活时间参数传下去,可以将存活时间的默认值放到配置文件或者常量类中。灵活的设置缓存时间。  ...测试工具类缓存JavaBean 1.被缓存的类需要实现序列化接口 Serializable ?  ...redis客户端查看缓存数据: ? 总结:   在redis缓存的时候最好是每个缓存的生命周期不固定,也就是分散的使缓存失效。可以设置有效期为3-9小时。

91550

SpringBoot使用Redis缓存结合自带注解

* key:指定缓存的key,这是指参数id值。...queryBookCacheable,id={}",id); return repositoryBook.get(id); } /** * 这里使用另一个缓存存储缓存...,多个线程同时访问这个方法,则只有一个方法会执行到方法,其它方法需要等待 * 如果缓存中已经有数据,则多个线程可以同时从缓存中获取数据 * @param id *...: * 只有满足condition的请求才可以进行缓存,如果不满足条件,则跟方法没有@Cacheable注解的方法一样 * 如下面只有id < 3才进行缓存 *...,同时使用新的返回值的替换缓存中的值 * 这里不同于@Cacheable:@Cacheable如果缓存没有值,从则执行方法并缓存数据,如果缓存有值,则从缓存中获取值 * @param

1.5K20

SpringBoot集成Redis和配置Redis缓存

Redis介绍 Redis是一个开源的、高性能的、基于键值对的缓存与存储系统,通过提供多种键值数据类型来适应不同场景下的缓存与存储需求,直观的存储结构使得通过程序交互十分简单。...本文内容分两块,配置文件分别单独记录 SpringBoot 2.x版本项目配置Redis数据库及使用 SpringBoot项目使用Redis缓存 SpringBoot 2.x版本项目配置Redis数据库及使用...ApiResponse.success().and("msg", "保存成功").and("blogId",blogVO.getBlogId()); } } 6.完成 SpringBoot项目使用Redis缓存...Cacheable:调用方法时先从缓存中查询有没有对应key的数据,如果有直接从缓存获取返回,如果没有则执行方法,将返回值存入缓存中。...CacheEvict:调用方法后从缓存中删除对应key的数据 Caching:当一个方法需要查询多个缓存或者删除多个缓存时使用 package com.example.demo.service; import

1.1K20

Redis除了缓存,还能做什么

缓存 Redis是什么大家都知道,一个非关系型数据库。大部分情况下我们使用Redis缓存。...使用缓存的情况一般是这样的: Redis缓存 “(1)从Redis缓存中获取数据,如果存在数据,直接返回值。...(2)如果不存在,执行数据库的查询方法 (3)将数据库中的值放入缓存,并返回值 ” 代码如下: 当然我们也可以使用Spring的缓存注解@Cacheble。...我们要在配置类上面开启缓存注解@EnableCaching,使用如下: 这篇文章里我重新开发了缓存注解,增加了两个功能:设置超时时间和设置并发请求数。可以实现不同场景设置不同参数。...队列 上面其实就是我们常用的场景,那么Redis除了缓存,还可以做什么呢? 我们还可以使用Redis队列。 Redis队列 那么我们什么时候可以使用Redis的队列功能呢? 示例代码如上。

1.7K20
领券