更多Redis的开发、运维、架构以及新动态,欢迎关注微信公众号:
一、基本概念
1. Cache(缓存): 从cpu的一级和二级缓存、Internet的DNS、到浏览器缓存都可以看做是一种缓存。
维基百科: 写道
a store of things that will be required in the future, and can be retrieved rapidly.
(存贮数据(使用频繁的数据)的临时地方,因为取原始数据的代价太大了,所以我可以取得快一些)
2. Cache hit(缓存命中)(下图左)
When a data element is requested from cache and the elements exists for the given key.
3. Cahe miss(缓存未命中): 与Cache hit相反(下图右)
4. 缓存算法:缓存容量超过预设,如何踢掉“无用”的数据。
例如:LRU(Least Recently Used) FIFO(First Input First Output)Least Frequently Used(LFU) 等等
5. System-of-Record(真实数据源): 例如关系型数据库、其他持久性系统等等。
也有英文书叫做authority data(权威数据)
6. serialization-and-deserialization(序列化与反序列化):可以参考:序列化与反序列化(美团工程师写的,非常棒的文章)
后面也有单独文章去分析。
6. Scale Up (垂直扩容) 和 Scale out (水平扩容)
驴拉车,通常不是把一头驴养壮(有极限),而通常是一群驴去拉(当然每个个体也不能太差)。
服务器也是一样的道理,至少互联网是这样:
7. Write-through 和 write-behind
8.阿姆而达定律:用于计算缓存加速比
二、缓存的种类或者类型
1. LocalCache(独立式): 例如Ehcache、BigMemory Go
(1) 缓存和应用在一个JVM中。
(2) 缓存间是不通信的,独立的。
(3) 弱一致性。
2. Standalone(单机):
(1) 缓存和应用是独立部署的。
(2) 缓存可以是单台。(例如memcache/redis单机等等)
(3) 强一致性
(4) 无高可用、无分布式。
(5) 跨进程、跨网络
3. Distributed(分布式):例如Redis-Cluster, memcache集群等等
(1) 缓存和应用是独立部署的。
(2) 多个实例。(例如memcache/redis等等)
(3) 强一致性或者最终一致性
(4) 支持Scale Out、高可用。
(5) 跨进程、跨网络
4. Replicated(复制式): 缓存数据时同时存放在多个应用节点的,数据复制和失效的事件以同步或者异步的形式在各个集群节点间传播。(也是弱一致性)
这种用的不太多。
三、数据层访问速度:(作为开发人员要记住这些量级)
相关推荐
文章中提及的面试者programmerone对缓存的理解非常浅显,仅限于知道使用hashtable实现简单的缓存机制,而没有深入了解缓存的工作原理、缓存算法的选择标准和缓存框架的使用。面试官提出的问题主要集中在缓存的基本...
本篇文章将深入探讨MySQL Connector/J 8.0.22及其在Java开发中的应用。 首先,MySQL Connector/J是MySQL官方提供的开源JDBC驱动,它完全符合JDBC 4.2规范,支持Java 8及更高版本。这个版本8.0.22包含了针对MySQL ...
5.5系列是MySQL的一个重要版本,发布于2010年,它引入了许多新功能和性能改进。 MySQL 5.5.60的特性包括: 1. **InnoDB存储引擎增强**:InnoDB是MySQL中支持事务处理的主要存储引擎,5.5版本对InnoDB进行了大量优化...
4. **配置文件**:如`conf/hibernate.cfg.xml`,这是Hibernate的基本配置文件,定义了数据库连接参数、缓存设置、持久化单元等信息。 5. **源码**:如果包含源码,开发者可以查看内部实现,这对于学习和调试非常有...
3. **性能优化**:可能包含了一些性能提升的优化策略,例如缓存机制、并发控制等,以减少不必要的计算和资源消耗。 4. **错误处理和回滚策略**:扩展库可能包含了更智能的错误处理策略,可以自动识别错误并执行适当...
本篇文章将围绕"安卓开发-weibo4andriod-2011-01-14.zip.zip"这一主题,深入探讨Weibo4Android项目在2011年初的开发细节,旨在帮助读者理解安卓平台上的微博应用开发,以及当时的开发环境和技术趋势。 Weibo4...
2. **强大的内容管理**:它允许用户轻松创建、编辑和管理文章、页面和多媒体内容。 3. **用户管理**:内置的用户注册、权限管理和登录功能,支持不同角色的访问控制。 4. **模板系统**:提供多种预设模板,也可...
1. **README.txt**:这是官方提供的文档,包含了安装和使用Redis的基本信息,建议在安装前仔细阅读。 2. **redis-benchmark.exe**:这是一个性能测试工具,可以用来测量Redis服务器的读写速度。 3. **redis-cli.pdb*...
第一部分对Redis进行了介 绍,说明了Redis的基本使用方法、它拥有的5种数据结构以及操作这5种数据结构的命令,并讲解了如何使用Redis去构建文章展示网站、cookie、购物车、网页缓存、数据库行缓存等一系列程序。...
首先,我们需要理解列表页的基本结构和功能:它通常用于展示一系列相关项目,例如新闻、博客文章或产品,并且可以支持分页,以便用户能轻松浏览大量内容。 列表页的实现通常涉及到以下几个关键步骤: 1. **接收...
本篇文章将深入探讨“IncRSIOnArray”类在MT5中的应用,该类专门用于在指标缓存区中计算相对强度指数(Relative Strength Index,简称RSI)的值。通过了解和利用这个类,交易者可以更有效地开发和优化自己的技术分析...
1. 改进的性能:4.2.3.Final版本优化了查询处理和缓存策略,提高了整体运行效率。 2. JPA 2.1支持:此版本支持Java Persistence API 2.1规范,引入了新的特性和改进。 3. 配置增强:提供了更灵活的配置选项,如多...
本篇文章将深入探讨“wordpress-plugin-源码.rar”这个压缩包中的内容,旨在帮助读者理解WordPress插件的源码结构、工作原理,并提供插件开发的基本指引。 一、WordPress插件基础 1. 插件定义:WordPress插件是为...
1. 更好的兼容性:19.2.3版本对Python的多个版本(包括Python 2.7和Python 3.x系列)都有良好的支持,确保不同环境下的正常使用。 2. 速度优化:pip在19.2.3版本中对下载和安装过程进行了优化,提升了整体效率。 3...
在现代网站开发与管理中,各类文件扮演着至关重要的角色,它们不仅支撑着网站的基本框架,还负责处理各种复杂的功能与用户交互。通过深入分析特定网站的文件列表,我们可以更全面地了解其架构设计、功能实现以及潜在...
除了基本的配置,还可以根据需求添加其他优化设置,比如重定向、缓存控制、GZIP压缩等。例如,我们可以添加如下代码实现HTTPS强制跳转: ```nginx if ($scheme = http) { return 301 https://$host$request_uri; }...
1. **内容管理**:Drupal 允许用户创建、组织和发布各种类型的内容,如文章、页面、图像和视频,同时提供灵活的权限系统来控制谁可以访问和编辑这些内容。 2. **模板系统**:Drupal 使用其独特的主题引擎,允许...
在深入探讨HBase数据读取流程之前,我们先来理解一下HBase的基本架构。HBase是一个分布式的、面向列的NoSQL数据库,它基于Google的Bigtable设计,并且构建于Hadoop之上。HBase的数据模型是由行(Row)、列族(Column...
本篇文章将根据提供的文档摘要,详细介绍Apache Spark作为实时指标计算引擎的核心概念和技术特点。 #### 二、什么是Apache Spark Apache Spark是一种**统一的大数据分析引擎**,支持批处理、交互查询、流处理、机器...
1. **认识MSP430与ARM7的比较[微控技术论坛精选文章].pdf** 这篇文章可能对比了两种不同的微控制器:MSP430(由德州仪器推出的超低功耗微控制器)和ARM7(ARM公司早期的微处理器核心)。内容可能包括它们的架构...