10
redis 怎样读回已过期的数据?
source link: https://www.v2ex.com/t/796132
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.
redis 怎样读回已过期的数据?
现在做一个需求,某个数据量比较大而且存在频繁读写,所以我想放到 redis 里面,但这样又怕太占内存,所以我想过期时间设定 2 小时,要用的时候再读回来. 现在的问题是这个"读回来"怎么实现,要么是 redis 本身就有相应的机制,要么在数据将要过期时写入数据库,但目前搜索了半天都没看到有相关的用法,是不是我这种用法本身不对呢?有没有更好的解决办法?
14 条回复 • 2021-08-17 17:30:40 +08:00
sadfQED2 1 天前 via Android
你这个用法本来就不对。
另外数据量比较大是多大,1T 内存的 redis 存 24 小时够不够。另外,读写频繁是多频繁,nvme 固态的 db,堆机器能不能解决
另外数据量比较大是多大,1T 内存的 redis 存 24 小时够不够。另外,读写频繁是多频繁,nvme 固态的 db,堆机器能不能解决
mmdsun 1 天前 via Android
“读回来”???没太懂。
缓存没命中,就从数据库查询,然后再塞到 Redis 里,Redis 设置 2 小时过期。是这个意思不。如果你是这种参考 Cache Pattern 模式
或者你说的是 Redis 热冷数据那种?热数据放内存,冷数据存磁盘?? 这种可以看下 Tendis,我记得有这个功能,而且兼容 Redis 协议
缓存没命中,就从数据库查询,然后再塞到 Redis 里,Redis 设置 2 小时过期。是这个意思不。如果你是这种参考 Cache Pattern 模式
或者你说的是 Redis 热冷数据那种?热数据放内存,冷数据存磁盘?? 这种可以看下 Tendis,我记得有这个功能,而且兼容 Redis 协议
ptrees 1 天前
@mmdsun 因为这个数据读取写入都比较频繁, 可以理解成 1;1, 如果每次写入都存数据库感觉用缓存意义就不大了,所以打算只写 redis,然后隔一段时间再存数据库,不知道有没有这种
lscho 23 小时 38 分钟前 1
@ptrees 你这种用法会涉及到 redis 的一致性问题,比如你存到了 redis,但是还没进数据库的时候,redis 挂了。这时候你数据库就没有保存最新的数据。
为了解决这个问题,你要引入 redis 持久化,但是持久化的话,就没必要写入数据库了。
为了解决这个问题,你要引入 redis 持久化,但是持久化的话,就没必要写入数据库了。
ptrees 23 小时 10 分钟前
感谢大家的回复,目前看下来感觉直接用 redis 持久化就行.
这个数据其实是有过期时间的,过期了就不允许写入了,我想这个时候存到 db 里然后把缓存删掉就行了.
原先可能是想复杂了,编程小白大家轻喷哈
这个数据其实是有过期时间的,过期了就不允许写入了,我想这个时候存到 db 里然后把缓存删掉就行了.
原先可能是想复杂了,编程小白大家轻喷哈
encro 9 小时 16 分钟前
一般程序实现:
value = getValue(key)
if(!value){
value = ....
setValue(key,value,expire)
}
return value
value = getValue(key)
if(!value){
value = ....
setValue(key,value,expire)
}
return value
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK