learn.lianglianglee.com/专栏/300分钟吃透分布式缓存-完/index.html
2022-08-14 03:40:33 +08:00

206 lines
14 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<!-- saved from url=(0046)https://kaiiiz.github.io/hexo-theme-book-demo/ -->
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0, user-scalable=no">
<link rel="icon" href="/static/favicon.png">
<title>note-submit</title>
<!-- Spectre.css framework -->
<link rel="stylesheet" href="/static/index.css">
<!-- theme css & js -->
<meta name="generator" content="Hexo 4.2.0">
</head>
<body>
<div class="book-container">
<div class="book-sidebar">
<div class="book-brand">
<a href="/">
<img src="/static/favicon.png">
<span>技术文章摘抄</span>
</a>
</div>
<div class="book-menu uncollapsible">
<ul class="uncollapsible">
<li><a href="/" class="current-tab">首页</a></li>
</ul>
<ul class="uncollapsible">
<li><a href="../">上一级</a></li>
</ul>
<ul class="uncollapsible">
<li>
<a href="/PDF">PDF</a>
</li>
<li>
<a href="/专栏">专栏</a>
</li>
<li>
<a href="/恋爱必修课">恋爱必修课</a>
</li>
<li>
<a href="/文章">文章</a>
</li>
<li>
<a href="/极客时间">极客时间</a>
</li>
</ul>
</div>
</div>
<div class="sidebar-toggle" onclick="sidebar_toggle()" onmouseover="add_inner()" onmouseleave="remove_inner()">
<div class="sidebar-toggle-inner"></div>
</div>
<script>
function add_inner() {
let inner = document.querySelector('.sidebar-toggle-inner')
inner.classList.add('show')
}
function remove_inner() {
let inner = document.querySelector('.sidebar-toggle-inner')
inner.classList.remove('show')
}
function sidebar_toggle() {
let sidebar_toggle = document.querySelector('.sidebar-toggle')
let sidebar = document.querySelector('.book-sidebar')
let content = document.querySelector('.off-canvas-content')
if (sidebar_toggle.classList.contains('extend')) { // show
sidebar_toggle.classList.remove('extend')
sidebar.classList.remove('hide')
content.classList.remove('extend')
} else { // hide
sidebar_toggle.classList.add('extend')
sidebar.classList.add('hide')
content.classList.add('extend')
}
}
function open_sidebar() {
let sidebar = document.querySelector('.book-sidebar')
let overlay = document.querySelector('.off-canvas-overlay')
sidebar.classList.add('show')
overlay.classList.add('show')
}
function hide_canvas() {
let sidebar = document.querySelector('.book-sidebar')
let overlay = document.querySelector('.off-canvas-overlay')
sidebar.classList.remove('show')
overlay.classList.remove('show')
}
</script>
<div class="off-canvas-content">
<div class="columns">
<div class="column col-12 col-lg-12">
<div class="book-navbar">
<!-- For Responsive Layout -->
<header class="navbar">
<section class="navbar-section">
<a onclick="open_sidebar()">
<i class="icon icon-menu"></i>
</a>
</section>
</header>
</div>
<div class="book-content"
style="max-width: 960px; margin: 0 auto; overflow-x: auto; overflow-y: hidden;">
<div class="book-post">
<p id="tip" align="center"></p>
<div><!--add content-->
<h1>300分钟吃透分布式缓存-完</h1>
<ul>
<li><a href = '\专栏\300分钟吃透分布式缓存-完\00 开篇寄语:缓存,你真的用对了吗?.md.html'>00 开篇寄语:缓存,你真的用对了吗?</a></li>
<li><a href = '\专栏\300分钟吃透分布式缓存-完\01 业务数据访问性能太低怎么办?.md.html'>01 业务数据访问性能太低怎么办?</a></li>
<li><a href = '\专栏\300分钟吃透分布式缓存-完\02 如何根据业务来选择缓存模式和组件?.md.html'>02 如何根据业务来选择缓存模式和组件?</a></li>
<li><a href = '\专栏\300分钟吃透分布式缓存-完\03 设计缓存架构时需要考量哪些因素?.md.html'>03 设计缓存架构时需要考量哪些因素?</a></li>
<li><a href = '\专栏\300分钟吃透分布式缓存-完\04 缓存失效、穿透和雪崩问题怎么处理?.md.html'>04 缓存失效、穿透和雪崩问题怎么处理?</a></li>
<li><a href = '\专栏\300分钟吃透分布式缓存-完\05 缓存数据不一致和并发竞争怎么处理?.md.html'>05 缓存数据不一致和并发竞争怎么处理?</a></li>
<li><a href = '\专栏\300分钟吃透分布式缓存-完\06 Hot Key和Big Key引发的问题怎么应对.md.html'>06 Hot Key和Big Key引发的问题怎么应对</a></li>
<li><a href = '\专栏\300分钟吃透分布式缓存-完\07 MC为何是应用最广泛的缓存组件.md.html'>07 MC为何是应用最广泛的缓存组件</a></li>
<li><a href = '\专栏\300分钟吃透分布式缓存-完\08 MC系统架构是如何布局的.md.html'>08 MC系统架构是如何布局的</a></li>
<li><a href = '\专栏\300分钟吃透分布式缓存-完\09 MC是如何使用多线程和状态机来处理请求命令的.md.html'>09 MC是如何使用多线程和状态机来处理请求命令的</a></li>
<li><a href = '\专栏\300分钟吃透分布式缓存-完\10 MC是怎么定位key的.md.html'>10 MC是怎么定位key的</a></li>
<li><a href = '\专栏\300分钟吃透分布式缓存-完\11 MC如何淘汰冷key和失效key.md.html'>11 MC如何淘汰冷key和失效key</a></li>
<li><a href = '\专栏\300分钟吃透分布式缓存-完\12 为何MC能长期维持高性能读写.md.html'>12 为何MC能长期维持高性能读写</a></li>
<li><a href = '\专栏\300分钟吃透分布式缓存-完\13 如何完整学习MC协议及优化client访问.md.html'>13 如何完整学习MC协议及优化client访问</a></li>
<li><a href = '\专栏\300分钟吃透分布式缓存-完\14 大数据时代MC如何应对新的常见问题.md.html'>14 大数据时代MC如何应对新的常见问题</a></li>
<li><a href = '\专栏\300分钟吃透分布式缓存-完\15 如何深入理解、应用及扩展 Twemproxy.md.html'>15 如何深入理解、应用及扩展 Twemproxy</a></li>
<li><a href = '\专栏\300分钟吃透分布式缓存-完\16 常用的缓存组件Redis是如何运行的.md.html'>16 常用的缓存组件Redis是如何运行的</a></li>
<li><a href = '\专栏\300分钟吃透分布式缓存-完\17 如何理解、选择并使用Redis的核心数据类型.md.html'>17 如何理解、选择并使用Redis的核心数据类型</a></li>
<li><a href = '\专栏\300分钟吃透分布式缓存-完\18 Redis协议的请求和响应有哪些“套路”可循.md.html'>18 Redis协议的请求和响应有哪些“套路”可循</a></li>
<li><a href = '\专栏\300分钟吃透分布式缓存-完\19 Redis系统架构中各个处理模块是干什么的.md.html'>19 Redis系统架构中各个处理模块是干什么的</a></li>
<li><a href = '\专栏\300分钟吃透分布式缓存-完\20 Redis如何处理文件事件和时间事件.md.html'>20 Redis如何处理文件事件和时间事件</a></li>
<li><a href = '\专栏\300分钟吃透分布式缓存-完\21 Redis读取请求数据后如何进行协议解析和处理.md.html'>21 Redis读取请求数据后如何进行协议解析和处理</a></li>
<li><a href = '\专栏\300分钟吃透分布式缓存-完\22 怎么认识和应用Redis内部数据结构.md.html'>22 怎么认识和应用Redis内部数据结构</a></li>
<li><a href = '\专栏\300分钟吃透分布式缓存-完\23 Redis是如何淘汰key的.md.html'>23 Redis是如何淘汰key的</a></li>
<li><a href = '\专栏\300分钟吃透分布式缓存-完\24 Redis崩溃后如何进行数据恢复的.md.html'>24 Redis崩溃后如何进行数据恢复的</a></li>
<li><a href = '\专栏\300分钟吃透分布式缓存-完\25 Redis是如何处理容易超时的系统调用的.md.html'>25 Redis是如何处理容易超时的系统调用的</a></li>
<li><a href = '\专栏\300分钟吃透分布式缓存-完\26 如何大幅成倍提升Redis处理性能.md.html'>26 如何大幅成倍提升Redis处理性能</a></li>
<li><a href = '\专栏\300分钟吃透分布式缓存-完\27 Redis是如何进行主从复制的.md.html'>27 Redis是如何进行主从复制的</a></li>
<li><a href = '\专栏\300分钟吃透分布式缓存-完\28 如何构建一个高性能、易扩展的Redis集群.md.html'>28 如何构建一个高性能、易扩展的Redis集群</a></li>
<li><a href = '\专栏\300分钟吃透分布式缓存-完\29 从容应对亿级QPS访问Redis还缺少什么.md.html'>29 从容应对亿级QPS访问Redis还缺少什么</a></li>
<li><a href = '\专栏\300分钟吃透分布式缓存-完\30 面对海量数据,为什么无法设计出完美的分布式缓存体系?.md.html'>30 面对海量数据,为什么无法设计出完美的分布式缓存体系?</a></li>
<li><a href = '\专栏\300分钟吃透分布式缓存-完\31 如何设计足够可靠的分布式缓存体系,以满足大中型移动互联网系统的需要?.md.html'>31 如何设计足够可靠的分布式缓存体系,以满足大中型移动互联网系统的需要?</a></li>
<li><a href = '\专栏\300分钟吃透分布式缓存-完\32 一个典型的分布式缓存系统是什么样的?.md.html'>32 一个典型的分布式缓存系统是什么样的?</a></li>
<li><a href = '\专栏\300分钟吃透分布式缓存-完\33 如何为秒杀系统设计缓存体系?.md.html'>33 如何为秒杀系统设计缓存体系?</a></li>
<li><a href = '\专栏\300分钟吃透分布式缓存-完\34 如何为海量计数场景设计缓存体系?.md.html'>34 如何为海量计数场景设计缓存体系?</a></li>
<li><a href = '\专栏\300分钟吃透分布式缓存-完\35 如何为社交feed场景设计缓存体系.md.html'>35 如何为社交feed场景设计缓存体系</a></li>
</ul>
</div>
</div>
<div>
</div>
</div>
</div>
</div>
</div>
<a class="off-canvas-overlay" onclick="hide_canvas()"></a>
</div>
<script defer src="https://static.cloudflareinsights.com/beacon.min.js/v652eace1692a40cfa3763df669d7439c1639079717194"
integrity="sha512-Gi7xpJR8tSkrpF7aordPZQlW2DLtzUlZcumS8dMQjwDHEnw9I7ZLyiOj/6tZStRBGtGgN6ceN6cMH8z7etPGlw=="
data-cf-beacon='{"rayId":"70996b2f083d3d60","version":"2021.12.0","r":1,"token":"1f5d475227ce4f0089a7cff1ab17c0f5","si":100}'
crossorigin="anonymous"></script>
</body>
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-NPSEEVD756"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag() {
dataLayer.push(arguments);
}
gtag('js', new Date());
gtag('config', 'G-NPSEEVD756');
var path = window.location.pathname
var cookie = getCookie("lastPath");
console.log(path)
if (path.replace("/", "") === "") {
if (cookie.replace("/", "") !== "") {
console.log(cookie)
document.getElementById("tip").innerHTML = "<a href='" + cookie + "'>跳转到上次进度</a>"
}
} else {
setCookie("lastPath", path)
}
function setCookie(cname, cvalue) {
var d = new Date();
d.setTime(d.getTime() + (180 * 24 * 60 * 60 * 1000));
var expires = "expires=" + d.toGMTString();
document.cookie = cname + "=" + cvalue + "; " + expires + ";path = /";
}
function getCookie(cname) {
var name = cname + "=";
var ca = document.cookie.split(';');
for (var i = 0; i < ca.length; i++) {
var c = ca[i].trim();
if (c.indexOf(name) === 0) return c.substring(name.length, c.length);
}
return "";
}
</script>
</html>