redis作为数据库/缓存的区别

redis作为数据库/缓存的区别

缓存

对于redis来说,既可以作为数据库又可以作为缓存,在大型分布式场景中,redis主要被用来作为缓存。所谓缓存其实指的是缓存数据,它不是一个全量数据,它应该随着数据的访问而变化,也就是所谓的热数据。

redis场景

redis中的数据怎么能随着业务的变化而只保留热数据,这是redis作为缓存的重要意义。为什么只保留热数据,究其原因内存大小是有限的,也就是瓶颈。当然如果内存无限大,自然没有这个问题,直接当数据库用好了。

在这种场景下,一般会有两个问题:

第一个自然是因为业务逻辑引发的过期时间问题

  1. 当从redis中读数据时,key的有效时间是不会延长的
  2. 当从redis中写数据时,key的过期时间会被剔除掉
  3. 在倒计时情况下,redis是不能延长的
  4. 定时

第二个是因为业务运转带来的缓存问题:因为内存是有限的,随着访问的变化,应该淘汰掉冷数据。

当达到maxmemory时,redis提供了两种缓存算法来回收内存:

  • LRU(allkeys-lru):官方的解释是尝试回收最少使用的键(LRU),使得新添加的数据有空间存放。大白话理解就是多久没碰他。
  • LFU(volatile-lru):官方的解释是尝试回收最少使用的键(LRU),但仅限于在过期集合的键,使得新添加的数据有空间存放。大白话的理解就是碰了多少次。

过期判定原理

官方文档对什么时候过期做了大量篇幅的叙述,总的来说就两点:

  1. 被动访问时判定
  2. 周期轮循时判定(增量)

这样做的最终的目的是稍微牺牲下内存,保住了redis性能为王!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

༄༊心灵骇客༣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值