首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏波波烤鸭

    shiro教程8(缓存管理)

    xml version="1.0" encoding="UTF-8"? --diskStore:缓存数据持久化的目录 地址 --> <diskStore path="C:\tools\ehcache" /> <! timeToIdleSeconds:缓存数据的钝化时间,也就是在一个元素消亡之前, 两次访问时间的最大时间间隔值,这只能在元素不是永久驻留时有效,如果该值是 0 就意味着元素可以停顿无穷长的时间。 timeToLiveSeconds:缓存数据的生存时间,也就是一个元素从构建到消亡的最大时间间隔值,这只能在元素不是永久驻留时有效,如果该值是0就意味着元素可以停顿无穷长的时间。 3 LRU,最近最少使用的,缓存的元素有一个时间戳,当缓存容量满了,而又需要腾出地方来缓存新的元素的时候,那么现有缓存元素中时间戳离当前时间最远的元素将被清出缓存

    1.4K60发布于 2019-04-02
  • 来自专栏linux教程

    CentOS 8 清除 DNS 缓存

    nscd(Name Service Cache Daemon)是一种能够缓存 passwd、group、hosts 的本地缓存服务,分别对应三个源 /etc/passwd、/etc/hosts、/etc 这里利用 nscd 的 hosts 缓存服务来实现 清除 CentOS 8 Linux 下的 DNS 缓存。 清缓存命令: 有可能nscd没装,下面讲解一下,安装,启动,清缓存的命令 1. 启动nscd 服务后,清缓存 开启 nscd 的 hosts 缓存服务后,每次内部接口请求不会都发起 dns 解析请求,而是直接命中 nscd 缓存散列表,从而获取对应服务器 ip 地址,这样可以在大量内部接口请求时减少接口的响应时间

    4.1K10编辑于 2023-04-26
  • 缓存技术:内存缓存数据缓存

    缓存技术包括内存缓存数据缓存。 内存缓存是将数据存储在内存中 以便在需要时快速访问。它通过减少对磁盘或网络的访问次数来提高系统的性能。 它可以减少数据库负载,提高系统的响应速度。 内存缓存的工作原理是将数据存储在内存中的缓存区域中,以便快速读取。当需要访问数据时,系统首先检查内存缓存中是否有所需数据的副本。 如果没有,则从数据源(如数据库或网络)中获取数据,并将其存储在内存缓存中,以便以后的快速访问。 内存缓存可以根据不同的策略来管理存储的数据。 其次,内存缓存可能存在数据一致性的问题,当数据源中的数据发生变化时,内存缓存中的数据可能不是最新的。因此,需要采取合适的策略来更新内存缓存中的数据,并确保数据的一致性。 数据缓存是将查询结果存储在缓存中 以便下次查询时可以直接返回缓存的结果。数据库查询是系统中常见的性能瓶颈之一,因为它涉及磁盘读取和复杂的查询操作。

    17610编辑于 2025-08-29
  • 来自专栏程序技术知识

    jQuery数据缓存

    jQuery数据缓存 参数说明 参数 说明 key 存储的数据名 value 将要存储的任意数据 obj 一个用于设置数据的键/值对 [name] 存储的数据名 [list] 移除数组或以空格分开的字符串 方法 概述 data([key],[value]) 在元素上存放或读取数据,返回jQuery对象。 当参数只有一个key的时候,为读取该jQuery对象对应DOM中存储的key对应的值,当参数为两个时,为像该jQuery对象对应的DOM中存储key-value键值对的数据。 如果jQuery集合指向多个元素,那将在所有元素上设置对应数据。 这个函数不用建立一个新的expando,就能在一个元素上存放任何格式的数据,而不仅仅是字符串 removeData([name list]) 在元素上移除存放的数据,与 data([key], [value

    71720编辑于 2022-04-27
  • 来自专栏全栈程序员必看

    springcache清除缓存_什么叫做缓存数据

    第一次执行的时候,会将方法结果存入缓存,再次调用该方法,在执行前,如果 key 相同则直接返回缓存中的数据,不会再次执行方法。 key:指定缓存数据的键值对的key,默认为方法参数中的值; Condition:指定缓存执行的条件; unliss:指定缓存不执行的条件; sync:指定缓存是否使用异步模式,默认同步,若异步则不支持 这个主要是用来处理多线程环境下缓存更新导致数据出错的问题的。 ; return mapper.selectAll(); } 2.缓存更新 @CachePut 注解一般用于更新某个命名空间中的某条缓存数据。 他的主要属性就两个: allEntries:是否清空全部缓存数据

    3.8K10编辑于 2022-09-22
  • 来自专栏技术趋势

    spring的缓存(cache)-(缓存穿透、缓存击穿、缓存雪崩、热点数据

    什么是缓存穿透 查询根据不存在的数据,导致每次都查库,并且qps达到万甚至百万,直接将数据库拉挂了。 ? 模拟缓存穿透 通过jmeter压1万个用户,60秒请求。 解决方案 1.设置空值缓存; 注:当新增该数据的时候需要将原来的id,delete掉再放进去,刷新一下缓存否则会导致缓存数据数据库不一致场景。 ? 结果 通过结果可得,只查一次数据库其他的都从缓存中获取 ? 83%E5%BC%8F%E9%94%81%E5%8E%9F%E7%90%86%E4%B8%8E%E5%AE%9E%E7%8E%B0-%E4%B8%80/ 什么是缓存雪崩 当一时刻发生大规模的缓存失效的情况 3.关键的缓存可以设置不过期,当更新时再同步更新就可以了;(同上) 4.同缓存击穿一样,添加分布式式进行完善; 最后 缓存穿透、缓存击穿、缓存雪崩、热点数据这几个问题在业界还是挺常见的,挺多系统由于开始业务量没那么大加之研发没有考虑到位

    2.7K20发布于 2020-09-18
  • 来自专栏Java核心技术

    8个步骤”手把手带你用SpringBoot操作Redis,实现数据缓存

    [90c85040360046a6b8c2f318202d5f4e?from=pc] 3、缓存的优缺点 优点: 加快了响应速度 减少了对数据库的读操作,数据库的压力降低。 from=pc] 缓存穿透: 指查询一个一定不存在的数据,由于缓存是不命中时需要从数据库查询,查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到数据库去查询,造成缓存穿透。 3、缓存雪崩 [69e060a53abb4e3cabf8ceb796d587e0? 4、缓存一致性 使用缓存很大可能导致数据不一致问题,如下: 更熟数据库成功 -> 更新缓存失败 -> 数据不一致 更新缓存成功 -> 更新数据库失败 -> 数据不一致 更新数据库成功 -> 淘汰缓存失败 xml version="1.0" encoding="UTF-8"?

    12.8K510发布于 2021-05-16
  • 来自专栏Redis原理与应用

    Redis应用—8.相关的缓存框架

    xml version="1.0" encoding="UTF-8" ? xml version="1.0" encoding="UTF-8"? xml version="1.0" encoding="UTF-8"? 三.缓存统计可以统计缓存的加载、命中情况。四.更新锁定一般情况下,在缓存中查询某个key,如果不存在则查源数据,并回填缓存。高并发下可能会出现多次查源并回填缓存,造成数据源宕机,性能下降。 xml version="1.0" encoding="UTF-8"?

    43900编辑于 2025-03-07
  • 来自专栏全栈程序员必看

    java缓存设置_缓存数据可以清除吗

    value=”licence”) //清除缓存 3、缓存设置在service层生效 4、config目录下建ehcache.xml 5、ehcache.xml配置如下 <ehcache xmlns:xsi – 默认的管理策略 maxElementsOnDisk: 在磁盘上缓存的element的最大数目,默认值为0,表示不限制。 eternal:设定缓存的elements是否永远不过期。 如果为true,则缓存数据始终有效,如果为false那么还要根据timeToIdleSeconds,timeToLiveSeconds判断。 指重启jvm后,数据是否有效。默认为false。 diskExpiryThreadIntervalSeconds:对象检测线程运行时间间隔。

    2.4K10编辑于 2022-11-09
  • 来自专栏python-爬虫

    selenium获取缓存数据

    爬虫呢有时候数据方便有时候登入获得cookies,以及获取他存缓存中的数据 一.获取缓存中的数据其实很简单js注入就好了 localStorage_1 = driver.execute_script(" return window.localStorage.getItem('key')") #很多人说我执行了怎么没有获得呢 #那你缓存所在的url不对,你要跳转到他对应的url再获取 driver.get ("缓存所在的url") localStorage_1 = driver.execute_script("return window.localStorage.getItem('key')")

    2.1K20发布于 2020-06-19
  • 来自专栏服务化进程

    前端数据缓存(一)

    说到缓存一般针对后台缓存数据,提高数据查询效率,减少响应时间。 不过在前端开发中也会遇到一些需要缓存数据的时候,比如说存储页面查询条件翻页数据、全局变量等,如果小的数据可以存储在cookies中,但是数据多了就不行了,下面介绍下前台缓存的简单实现: /** * cache undefined){//全局cache,所以不会重新生成cache this.gloableCache[this.scope] = {}; } } } 定义一个构造函数,不同的功能有不同的缓存 ,定义缓存基本方法 BaseCache.prototype = { _getPrmGoableCache : function(){ if(top===self){//topest window this.gloableCache[this.scope]){ delete this.gloableCache[this.scope][key]; } } }; 下面举个例子来使用该缓存

    1K30发布于 2019-08-02
  • 来自专栏韦弦的偶尔分享

    Swift:缓存Codable数据

    在这种情况下,我们必须将数据缓存在设备本地的某处,以使其无需互联网即可读取。 Apple提供了CoreData框架,这是在本地存储应用程序数据的最佳方法。它具有许多出色的功能,可帮助您促进开发。 但是,很难将其用作简单的缓存。大多数时候,我们只需要显示缓存数据,而无需任何其他操作。我认为,我们所需要的只是纯磁盘存储。本周,我们将讨论如何轻松地为Codable结构实现简单的磁盘存储。 ? 这有点棘手,因为key是文件系统上数据的路径。因此,我们需要将ke'y附加到根路径并生成用于存储数据的新URL。 同样,我们使用key作为磁盘上数据的路径。 有时候,我们不需要CoreData的复杂功能即可进行简单的JSON缓存,这足以实现磁盘存储。

    2K00发布于 2020-03-20
  • 来自专栏小白程序猿

    数据缓存之Reids

    Redis是一个高性能的key-value数据库, redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。 数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。这使得Redis可执行单层树复制。存盘可以有意无意的对数据进行写操作。 由于完全实现了发布/订阅机制,使得从数据库在任何地方同步树时,可订阅一个频道并接收主服务器完整的消息发布记录。同步对读取操作的可扩展性和数据冗余很有帮助。 Redis在网络模型上是单线程的IO复用模型;在内存是采用现场申请内存的方式来存储数据,这样的方式会产生内存碎片,并且reids不会有优化内存分配;在数据存储方式上redis提供了多种方式,除了最基本key-value 3、当需要除key/value之外的更多数据类型支持时,使用Redis更合适。   4、当存储的数据不能被剔除时,使用Redis更合适。

    61510发布于 2019-12-27
  • 来自专栏Java学习录

    缓存淘汰、缓存穿透、缓存击穿、缓存雪崩、数据缓存双写一致性

    缓存淘汰 为什么需要缓存淘汰?你需要缓存30G的数据,但是Redis本身只能使用10G的内存,那你就得做个取舍了,毕竟鱼与熊掌不可兼得。为了利益最大化肯定要保留最重要的10个G。 缓存击穿 缓存击穿,就是常说的热点key问题,当一个正有非常巨大的访问量访问的key 在失效的瞬间,大量的请求击穿了缓存,直接落到了数据库上,然后所有从数据获取到数据的线程又都并发的想要把数据缓存到 如果缓存意外挂了、所有的请求落到了数据上就形成了缓存雪崩。 解决方案: 事前:使用主从复制+哨兵或者Redis集群。 Redis 的持久化机制 数据缓存双写一致性 当一个数据需要更新时因为不可能做到同时更新数据库和缓存、那么此时读取数据的时候就一定会发生数据不一致问题,而数据不一致问题在金融交易领域的系统中是肯定不允许的 解决方案: 读的时候,先读缓存缓存没有的话,就读数据库,然后取出数据后放入缓存,同时返回响应。 更新的时候,先更新数据库,然后再删除缓存。 参考自公众号:石杉的架构笔记

    2.2K20发布于 2019-05-10
  • 来自专栏猿人工厂

    猿思考系列8——缓存的套路也就这些

    秒后失效 no-cache: 需要使用对比缓存来验证缓存数据 no-store: 所有内容都不会缓存 需要注意max-age的值哈,是秒级的比如你写30,那么超过30秒,客户就需要重新到服务端获取数据了哈 数据量大了,可靠性方面是要有要求的。分布式缓存数据会分布到不同的缓存节点上,每个缓存节点缓存数据依然是有容量限制的。一般来说为了方便访问这些数据节点,会假如一个代理机制去访问和识别节点。 一般来讲,缓存的失效问题,有以下几个常见的方面: 缓存雪崩:缓存同时失效被清除,缓存未更新,请求无法命中缓存,如果要求强制拿到数据,请求会打到数据库。如果频繁发生,数据库压力也大,应用很快挂掉的。 缓存击穿:在数据请求的时候某一个缓存刚好失效或者正在写入缓存,同时这这个时间点上这个key发生了超高并发请求,成为“热点”数据。 异步拉取:一般来讲,这种场景常常用于解决高并发的场景,和JVM缓存进行配合,单起一个线程,拉去数据(可以是分布式缓存中的数据,也可以是数据库中的数据),放到JVM中。

    27930发布于 2020-07-28
  • 来自专栏架构师进阶

    Spring Boot Redis 数据缓存

    前言 之前都是在Spring MVC中使用Redis,这里记录在Spring Boot中使用Redis作为数据缓存的过程。参考Spring Boot集成Spring Data Jpa,搭建项目。 </artifactId> </dependency> Redis配置 application.properties # REDIS (RedisProperties) # Redis数据库索引 6379 # Redis服务器连接密码(默认为空) spring.redis.password= # 连接池最大连接数(使用负值表示没有限制) spring.redis.pool.max-active=8 # 连接池最大阻塞等待时间(使用负值表示没有限制) spring.redis.pool.max-wait=-1 # 连接池中的最大空闲连接 spring.redis.pool.max-idle=8 缓存 使用RedisDesktopManager 查看缓存的结果。 ? 下次请求,会直接从redis返回结果。不会再请求数据库,接口响应的时间大大缩短。 ?

    1K20发布于 2019-08-08
  • 来自专栏http://www.cnblogs.com

    redis缓存数据

    redis 介绍 redis是业界主流的key-value nosql 数据库之一。 与memcached一样,为了保证效率,数据都是缓存在内存中。 支持丰富的数据类型 : Redis支持最大多数开发人员已经知道如列表,集合,可排序集合,哈希等数据类型。 MultiUtility工具:Redis是一个多功能实用工具,可以在很多如:缓存,消息传递队列中使用(Redis原生支持发布/订阅),在应用程序中,如:Web应用程序会话,网站页面点击数等任何短暂的数据 7) "lisi" 8) "9" ZCARD key 获取有序集合的成员数 ZCOUNT key min max 计算在有序集合中指定区间分数的成员数 127.0.0.1:6379> zcard z1

    5.1K40发布于 2018-07-05
  • 缓存库来存储数据

    在Java中,可以使用各种缓存库来存储数据。其中最常见的缓存库是Ehcache和Guava Cache。 步骤如下: 首先,你需要在你的Java项目中引入一个缓存库的依赖。 CacheBuilder.newBuilder() .maximumSize(100) .expireAfterWrite(30, TimeUnit.MINUTES) .build(); 然后,你可以使用put方法将数据存放到缓存中 }, 30, TimeUnit.MINUTES); 当需要获取数据时,你可以使用get方法从缓存中获取数据,例如: Object value = cache.get(key); 如果数据不存在或已过期 ,你可以在get方法中设置一个回调函数来获取数据并将其存入缓存,例如: Object value = cache.get(key, () -> { // 从数据库中获取数据的代码 return data; }); 这样,在缓存中不存在数据数据已过期时,会自动调用回调函数从数据库中获取最新的数据并将其存入缓存

    24610编辑于 2025-08-29
  • 来自专栏小林coding

    宕机了,缓存数据没了。。。

    AOF 日志 试想一下,如果 Redis 每执行一条写操作命令,就把该命令以追加的方式写入到一个文件里,然后重启 Redis 的时候,先去读取这个文件里的命令,并且执行它,这不就相当于恢复了缓存数据了吗 AOF 文件,此时数据并没有写入到硬盘,而是拷贝到了内核缓冲区 page cache,等待内核将数据写入硬盘; 具体内核缓冲区的数据什么时候写入到硬盘,由内核决定。 如果想要应用程序向文件写入数据后,能立马将数据同步到硬盘,就可以调用 fsync() 函数,这样内核就会将内核缓冲区的数据直接写入到硬盘,等到硬盘写操作完成后,该函数才会返回。 但是在触发 AOF 重写时,比如当 AOF 文件大于 64M 时,就会对 AOF 文件进行重写,这时是需要读取所有缓存的键值对数据,并为每个键值对生成一条命令,然后将其写入到新的 AOF 文件,重写完后 (数据副本怎么产生的后面会说),这里使用子进程而不是线程,因为如果是使用线程,多线程之间会共享内存,那么在修改共享内存数据的时候,需要通过加锁来保证数据的安全,而这样就会降低性能。

    1.6K30发布于 2021-07-07
  • 来自专栏Netkiller

    数据库与缓存

    数据库与缓存 摘要: 这里讲的缓存数据库本身的缓存,并不是外部缓存例如Redis/Memcache等等。 本文节选自《Netkiller Architect 手札》 第 10 章 数据库与缓存 目录 10.1. 什么是数据缓存? 10.2. 为什么缓存数据呢? 10.3. 什么时候使用数据缓存 10.4. 涉及缓存的地方有哪些 10.5. 谁来控制数据缓存 10.6. 怎么控制数据缓存 10.6.1. SQL_CACHE 缓存 10.6.2. 数据库的数据分为冷数据和热数据库,通俗的讲冷数据是存储在磁盘上不经常查询的数据;而热数据是频繁查询的数据,这部分数据会被缓存到内存中。 10.2. 为什么缓存数据呢? 谁来控制数据缓存 通常DBA只能控制数据缓存是否开启,分配多少内存给缓存使用,过期销毁时间,以及策略等等. 上面我已经说过,通常数据库默认都开启缓存,所以更多的时候我们的操作是禁用缓存

    3.5K80发布于 2018-03-06
领券