5

请教一个 Redis 过期时间的问题

 2 years ago
source link: https://www.v2ex.com/t/878310
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

V2EX  ›  Java

请教一个 Redis 过期时间的问题

  7911364440 · 4 小时 22 分钟前 · 1056 次点击

程序的逻辑是这样的: 有一个定时任务在执行前会判断 redis 中是否存在数据,如果存在则不执行,如果不存在继续执行,然后在 Redis 中新增数据并且把定时任务间隔时间作为数据的过期时间。

正常情况下,下一次任务执行前 Redis 中一定是没有数据的,但是实际上任务第二次执行的时候 Redis 中的数据总是不为空,后续大部分情况都是正常的,偶尔也会有不为空的。

Redis 扫描过期数据的间隔是 50ms ,也尝试过 timeout = timeout-50 ,也不行!!!

想问下有没有遇到过类似情况的大佬,麻烦指点下!!!

start 是任务开始时的时间戳,timeout 是计算出来的任务间隔时间,也是 redis 的过期时间


start: 1662520720050 timeout: 4950 foo task execute -- 正常执行

start: 1662520725006 timeout: 4994 redis not empty -- 这里第二次总是不为空

start: 1662520730013 timeout: 4987 foo task execute

start: 1662520735004 timeout: 4996 foo task execute

start: 1662520740001 timeout: 4999 foo task execute

start: 1662520745010 timeout: 4989 foo task execute

start: 1662520750005 timeout: 4995 foo task execute

start: 1662520755004 timeout: 4996 foo task execute

start: 1662520760015 timeout: 4985 foo task execute

第 1 条附言  ·  2 小时 1 分钟前

看了下第二次任务执行的时候,数据的过期时间大概还剩 850ms 左右。之后的数据基本上是可以正常过期的,只有第二次不行

Recommend

  • 79

    Redis 数据库、键过期的实现

  • 4

    Redis源码剖析之数据过期(expire) | XINDOO我之前统计过我们线上某redis数据被访问的时间分布,大概90%的请求只会访问最新15分钟的数据,99%的请求访问最新1小时的数据,只有不到千分之一的请求会访问超过1天的数据。我们之前这份数据存了两天(近500g内存数据...

  • 10
    • jiajunhuang.com 3 years ago
    • Cache

    Redis源码阅读:key是怎么过期的

    Redis源码阅读:key是怎么过期的 我们经常用到Redis的expire这个命令,比如我们设置一个缓存,通常会这样用: SETEX mykey 10 "Hello" 如官网文档所说,这个命令相当于: SET mykey value EXPIRE...

  • 8
    • nicksxs.me 3 years ago
    • Cache

    redis过期策略复习

    redis过期策略复习 Posted on 2021-07-25 In redis Views: 37 Views: 41 Disqus:

  • 11
    • www.v2ex.com 3 years ago
    • Cache

    redis 怎样读回已过期的数据?

    redis 怎样读回已过期的数据? V2EX  ›  Redis redis 怎样读回已过期的数据?  

  • 6
    • www.oschina.net 3 years ago
    • Cache

    redis的数据存储过期问题

    redis的数据存储过期问题 ...

  • 9

    使用 aiohttp 的背景: flask 项目需要访问阿里云上部署的 kubeflow api 服务, 这个 api 参数需要使用 query 传递, 因 query 构造过长报了 413,后考虑拆分 query 并发访问服务. 尝试 1 aiphttp + asyncio 大致代码抽象如下

  • 4
    • juejin.cn 3 years ago
    • Cache

    一文详解Redis键过期策略

    本文分享自华为云社区《Redis键过期策略详解》,作者:Java...

  • 5
    • wakzz.cn 3 years ago
    • Cache

    redis之key过期源码分析

    redis之key过期源码分析 祈雨的博客 2019-07-08

  • 9

    缓存过期策略 定时删除 没人用 含义:在设置key的过期时间的同时,为该key创建一个定时器,让定时器在key的过期时间来临时,对key进行删除 优点:该策略可以立即清除过期的数据, 保证内存被尽...

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK