置顶FIFO缓存淘汰算法

缓存 

计算机科学领域的任何问题都可以通过增加一个间接的中间层来解决,这句话就是整个计算机软件以及系统设计中的核心思想,而缓存对这一思想的一种实践。

Redis【3】- Redis 中的列表

redis 

在 Redis 中,List 数据结构包括两种主要实现方式:双向链表和压缩列表。这两者是互斥的,即在同一个 List 中,Redis 会根据一定的条件选择使用其中的一种数据结构。

1. 初识Go语言

Go 

1 Go 语言背景 Go 语言被称为 21 世纪的 C 语言,最终的目标据说是设计网络和多核时代的 C 语言。 Go 语言的历史可以说是充满了奇闻和趣事,故事要从 2007 年说起,当时谷歌的工程师们因为软件开发过程中频繁使用的 C++存在一些痛点,比如编译速度慢、语言复杂等。于是,由 Robert

Redis【1】- 阅读源码


1 Redis 的简介 Redis 实际上是简称,全称为 Remote Dictionary Server (远程字典服务器),由 Salvatore Sanfilippo 写的高性能 key-value 存储系统,其完全开源免费,遵守 BSD 协议。Redis 与其他 key-value 缓存产品

Redis【2】- SDS源码分析

redis 

1 简介&基础用法 Redis 中用得最多的就是字符串,在 C 语言中其实可以直接使用 char* 字符数组来实现字符串,也有很多可以直接使用得函数。但是 Redis 并没有使用 C 语言原生的字符串,而是自己实现了一个 SDS(简单动态字符串,Simple Dynamic String) 。 Re

从缓存到分布式缓存

缓存 

Cache 一词来源于 1967 年的一篇电子工程期刊论文。其作者将法语词“cache”赋予“safekeeping storage”的涵义,用于电脑工程领域。当时没有 Cache,CPU 和内存都很慢,CPU 直接访问内存。

布隆过滤器详解


前面我们提到,在防止缓存穿透的情况(缓存穿透是指,缓存和数据库都没有的数据,被大量请求,比如订单号不可能为-1,但是用户请求了大量订单号为-1的数据,由于数据不存在,缓存就也不会存在该数据,所有的请求都会直接穿透到数据库。),我们可以考虑使用布隆过滤器,来过滤掉绝对不存于集合中的元素。

布隆过滤器的三种实践


前面我们已经讲过布隆过滤器的原理,都理解是这么运行的,那么一般我们使用布隆过滤器,是怎么去使用呢?如果自己去实现,又是怎么实现呢?

海量ip中查找出现次数最多的一个


有 100 机器,每个机器的磁盘特别大,磁盘大小为 1T,但是内存大小只有 4G,现在每台机器上都产生了很多 ip 日志文件,每个文件假设有50G,那么如果计算出这 100 太机器上访问量最多的 100 ip 呢?也就是Top 100。

设计领取礼品的架构以及并发问题解决


现在 有一个场景,领取礼品,每个用户有次数限制,用户通过前端点击,调用了应用A的接口,里面调用了服务B,服务B里面去调用了服务C,注意服务C是其他部门的服务。服务C负责真正的发放礼品。(假设这个服务C我们是不可修改的,A,B是自己团队负责的,并且可能出现高并发的情况)