Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何从缓存中清除过期项目?

如何从缓存中清除过期项目?
EN

Stack Overflow用户
提问于 2008-09-26 11:34:09
回答 5查看 1.9K关注 0票数 3

我已经构建了一个很好的小类来充当缓存。每一项都有一个过期的TimeSpan或DateTime。每次尝试访问缓存中的项时,都会检查该项的过期时间,如果过期,则从缓存中删除该项,并且不返回任何内容。

这对于频繁访问的对象来说是很棒的,但是如果一个项目被放到缓存中,并且再也不会被访问,那么它就永远不会被删除,即使它已经过期了。

让缓存中的这些项过期的好方法是什么?

我是否应该有一个后台线程无限地枚举缓存中的每一项,以检查它是否过期?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2008-09-26 11:41:41

根据我的经验,维护自定义缓存机制变得比它的价值更麻烦。有几个库已经解决了这些问题。我建议使用其中的一个。在.Net中一个流行的是企业库,尽管我对它的缓存能力的经验有限。

如果您必须使用自定义缓存机制,那么我认为您建议的监视线程的想法没有问题。也就是说,如果您的应用程序是基于服务器的应用程序,而不是web应用程序。如果它是一个web应用程序,那么你已经内置了滑动过期。然后,您可以将其包装在强类型包装器中,以避免每次都通过键引用缓存项。

票数 1
EN

Stack Overflow用户

发布于 2008-09-26 13:36:23

最好的代码是没有代码。请改用ASP.NET缓存。您可以在任何应用程序中将其引用为System.Web.HttpRuntime.Cache,而不仅仅是web应用程序。

票数 5
EN

Stack Overflow用户

发布于 2008-09-26 11:37:05

你可以实现一个最近最少使用的策略,保持你的项目按访问时间排序,当一个新的项目被插入到缓存中并且缓存已满时, the cache is 你就会清除列表中最后的项目。请参阅维基百科上的Cache algorithms

如果你想立即过期,我仍然只会在访问时才这么做。也就是说,当缓存对象被访问并且它的时间已经过期时,重新获取它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/141452

复制
相关文章
SQL数值类型的函数
在SQL中,数值类型的函数主要用于对数字数据进行操作和计算。这些函数提供了丰富的数学计算和统计分析功能,可用于查询和汇总数据。下面将介绍一些常用的数值类型的函数,以及它们的用法和示例。
堕落飞鸟
2023/05/10
9570
Excel公式技巧:查找最接近的数值
公式中,COUNTIF函数返回单元格区域中小于指定值的数值的个数,将其作为参数传递给SMALL函数,得到小于指定值但最接近指定值的数。
fanjy
2023/02/24
4.1K0
SQL 获取纯数值的行
在 MySQL 库中有个 mix 表,它有一个列叫作 v,该列存储了文本和纯数值的内容。部分数据如下:
白日梦想家
2020/11/26
1.6K0
查找低效的sql语句
SELECT  EXECUTIONS , DISK_READS, BUFFER_GETS, ROUND((BUFFER_GETS-DISK_READS)/BUFFER_GETS,2) Hit_radio, ROUND(DISK_READS/EXECUTIONS,2) Reads_per_run, SQL_TEXT FROM  V$SQLAREA WHERE  EXECUTIONS>0 AND  BUFFER_GETS > 0 AND  (BUFFER_GETS-DISK_READS)/BUFFER_GETS
阿新
2018/04/09
1K0
sql语句 模糊查找like
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/135288.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/05
1K0
java中sql如何嵌套查找_SQL 查询嵌套使用[通俗易懂]
id int primary key auto_increment, — 主键id
全栈程序员站长
2022/09/22
4.3K0
java中sql如何嵌套查找_SQL 查询嵌套使用[通俗易懂]
sql带条件查找最小缺失编号
  查找在CASE_SET_ID为某个条件下的最小缺失编号 如 1 3 获取的值是2 , 2 3则获取的值是1 /** * select * case when not exists(select * from rt_test_case where CASE_NUM=1) then 1 * else (select min(IFNULL(CASE_NUM,0)+1) from rt_test_case as a
cfs
2018/03/08
1K0
SQL查找是否 "存在",别再count了!
根据某一条件从数据库表中查询 『有』与『没有』,只有两种状态,那为什么在写SQL的时候,还要**SELECT count(*) **呢?无论是刚入道的程序员新星,还是精湛沙场多年的程序员老白,都是一如既往的count
搜云库技术团队
2021/08/20
4590
SQL查找是否"存在",别再 count 了!
根据某一条件从数据库表中查询 『有』与『没有』,只有两种状态,那为什么在写SQL的时候,还要SELECT count(*) 呢?无论是刚入道的程序员新星,还是精湛沙场多年的程序员老白,都是一如既往的count。
终码一生
2022/04/14
3930
SQL查找是否"存在",别再count了!
根据某一条件从数据库表中查询 『有』与『没有』,只有两种状态,那为什么在写SQL的时候,还要SELECT count(*) 呢?
民工哥
2020/09/15
4610
SQL查找是否"存在",别再count了!
SQL查找是否"存在",别再count了!
根据某一条件从数据库表中查询 『有』与『没有』,只有两种状态,那为什么在写SQL的时候,还要SELECT count(*) 呢?无论是刚入道的程序员新星,还是精湛沙场多年的程序员老白,都是一如既往的count
Java小咖秀
2022/09/23
4090
SQL 查找是否"存在",别再 count 了!
根据某一条件从数据库表中查询 『有』与『没有』,只有两种状态,那为什么在写SQL的时候,还要SELECT count(*) 呢?无论是刚入道的程序员新星,还是精湛沙场多年的程序员老白,都是一如既往的count
程序员小猿
2021/07/29
4050
SQL查找是否"存在",别再count了!
根据某一条件从数据库表中查询 『有』与『没有』,只有两种状态,那为什么在写SQL的时候,还要SELECT count(*)呢?
搜云库技术团队
2022/05/24
4290
SQL查找是否"存在",别再count了!
点击上方“芋道源码”,选择“设为星标” 管她前浪,还是后浪? 能浪的浪,才是好浪! 每天 10:33 更新文章,每天掉亿点点头发... 源码精品专栏 原创 | Java 2021 超神之路,很肝~ 中文详细注释的开源项目 RPC 框架 Dubbo 源码解析 网络应用框架 Netty 源码解析 消息中间件 RocketMQ 源码解析 数据库中间件 Sharding-JDBC 和 MyCAT 源码解析 作业调度中间件 Elastic-Job 源码解析 分布式事务中间件 TCC-Transaction
芋道源码
2022/08/29
4760
SQL查找是否"存在",别再count了!
查找重复姓名的sql语句
方式一:select * from 学生表 where 姓名 in(select 姓名 from 学生表 group by 姓名 having count(姓名)>=2)
阮键
2020/09/07
5K0
查找重复姓名的sql语句
SQL进阶-4-查找重复行数据
有时候数据库中表的数据可能存在重复的情况,如何从表中找出重复的数据呢?本文中提到两种方式:
皮大大
2021/03/01
1.6K0
SQL进阶-4-查找重复行数据
算法练习(19) - 查找循环有序数组任一数值的位置
一个循环有序数组(如:3,4,5,6,8,9,11,0,1,2),要查找任一数值的位置。要求算法时间复杂度为log2(n)。 输入:数组 和 待查找元素 输出:返回数组元素下标,如果不存在返回-1 循环有序数组即原本有序数组折断后产生的,可认为数组原本排序是递增的,且不包含重复元素。
惊羽-布壳儿
2022/06/15
3990
如何查找MySQL中查询慢的SQL语句
如何查找MySQL中查询慢的SQL语句
Java架构师必看
2021/09/18
5.9K0
如何快速查找占用CPU过高的SQL
面对数据库服务器CPU飙升的场景,我们该如何快速定位问题?又该如何快速找到具体是哪个SQL引发的CPU异常呢?下面我们说两个方法。
MySQL数据库技术栈
2022/05/25
1.8K0
如何快速查找占用CPU过高的SQL
还不会用SQL对数值结果进行格式化?
在最近的项目开发中,有个业务需求是界面显示的数字需要保留两位小数,目前我想到的解决方法有两种: (1)在写SQL的时候,直接保留两位小数 (2)在java代码里面将查询出来的数进行格式化处理,保留两位小数 先说第一种方案:在SQL中的处理 我使用的oracle数据库,所以有3个函数可以选择,分别是: (1)ROUND(A/B,2) ROUND()函数是会将计算结果进行四舍五入的,如果所需要的值需要进行四舍五入,就可以选择这个函数,可以有一个参数,也可以有两个参数;如果有两个param,第一个是你的计算表达式,第二个是需要保留的小数位数。例子如下:
xdd
2022/07/12
8410
还不会用SQL对数值结果进行格式化?

相似问题

Oracle SQL数值查找10个字符

10

如何使用PROC SQL查找数值变量的长度

34

用于跨多列查找多数值的SQL

31

在SQL中查找特定值的具体数值

111

在SQL中使用按位逻辑查找整数值

14
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文