
redis
码虫码农
这个作者很懒,什么都没留下…
展开
-
redis 缓存优化
一. 缓存穿透常见的解决方案有两个1.数据库不存在的值,在缓存存进一个空值,并添加过期时间。这样的缺点就是会浪费比较多的空间。2.用布隆过滤器,在访问缓存层和存储层之前,将存在的key用布隆过滤 器提前保存起来,做第一层拦截。如果布隆过滤器判断该key不存在,就不会访问持久层,从而保护了持久层。二. 热点key重建优化1.设置分布式锁2.不设置过期时间三...原创 2019-12-20 10:43:59 · 158 阅读 · 0 评论 -
单线程的redis如何实现阻塞队列
从redis的API可以了解到lpop,rpop可以实现一个阻塞式队列。那疑问就来了,redis不是单线程的吗,如果阻塞了,那其他操作就执行不了呀。事实不是这样的redis的线程模型,是接收客户端命令的线程时 I/O 多路复用的,再通过文件事件分配器单线程执行的。如下图,程序总是会将所有产生事件的套接字都入队到一个队列里面, 然后通过这个队列, 以有序(sequentially)、同步(...原创 2019-12-16 12:02:48 · 1495 阅读 · 0 评论 -
单线程的redis为什么还能那么快
通常来讲,单线程处理能力要比多线程差,例如有10000斤货物,每辆 车的运载能力是每次200斤,那么要50次才能完成,但是如果有50辆车,只 要安排合理,只需要一次就可以完成任务。那么为什么Redis使用单线程模 型会达到每秒万级别的处理能力呢?可以将其归结为三点: 第一,纯内存访问,Redis将所有数据放在内存中,内存的响应时长大 约为100纳秒,这是Redis达到每秒万级别访问的重要基础。...原创 2019-12-14 11:47:50 · 147 阅读 · 0 评论 -
redis简单限流
需求: 如果要保证一个用户一分钟内只能访问5次接口,超过就拒绝范围。学习老钱的简单限流,这边重复阐述一下,以便更多人能借鉴。这个限流需求中存在一个滑动时间窗口,想想 zset 数据结构的 score 值,是不是可以通过 score 来圈出这个时间窗口来。而且我们只需要保留这个时间窗口,窗口之外的数据都可以砍掉。那这个 zset 的 value 填什么比较合适呢?它只需...原创 2019-12-12 14:50:46 · 264 阅读 · 0 评论 -
redis 持久化 RDB和AOF区别
redis持久化分两种,一种是RDB,一种是AOFRDB持久化:RDB 是以二进制文件,是在某个时间点将数据写入一个临时文件,持久化结束后,用这个临时文件替换上次持久化的文件,达到数据恢复。优点:使用单独子进程来进行持久化,主进程不会进行任何 IO 操作,保证了 redis 的高性能缺点:RDB 是间隔一段时间进行持久化,如果持久化之间 redis 发生故障,会发生数据丢失。所以这种...原创 2019-04-30 21:11:27 · 164 阅读 · 0 评论