memcached

美团工作7年,精华全在这份学习笔记里了,已成功帮助多位朋友拿到5个大厂Offer

那年仲夏 提交于 2020-12-05 14:58:27
在美团工作了7年,工作压力大,节奏快,但是从技术上确实得到了成长,尤其是当你维护与大促相关的系统的时候,笔者也是个爱学习的人,把这几年的工作经验整理成了一份完整的笔记。此笔记已助朋友拿到腾讯,阿里,美团等5个offer。 由于细节内容实在太多啦,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容! 大致内容包括了: Java 集合、JVM、多线程、并发编程、设计模式、Spring全家桶、Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、MongoDB、Redis、MySQL、RabbitMQ、Kafka、Linux、Netty、Tomcat等大厂面试题等、等技术栈! 有想获取的读者朋友,见下: 笔记目录展示: 获取完整笔记,见下: 部分内容截图: 获取完整笔记,见下: 来源: oschina 链接: https://my.oschina.net/u/4406332/blog/4775960

Django缓存机制以及使用redis缓存数据库

孤者浪人 提交于 2020-12-05 10:57:34
[TOC] Django 配置缓存机制 **Django ** 是动态网站,一般来说需要实时地生成访问的网页,展示给访问者,这样,内容可以随时变化,但是从数据库读多次把所需要的数据取出来,要比从内存或者硬盘等一次读出来 付出的成本大很多。而使用缓存的话,可以将数据保存在缓存中,下次访问的时候直接从缓存中获得数据,而不用去请求后端数据库,这样服务器可以很快的响应请求,从而提高加载速度。 缓存系统工作原理 对于给定的网址,尝试从缓存中找到网址,如果页面在缓存中,直接返回缓存的页面,如果缓存中没有,一系列操作(比如查数据库)后,保存生成的页面内容到缓存系统以供下一次使用,然后返回生成的页面内容。 一般来说我们用 Django 来搭建一个网站,要用到数据库等。 from django.shortcuts import render def index(request): # 读取数据库等 并渲染到网页 # 数据库获取的结果保存到 queryset 中 return render(request, 'index.html', {'book_list':book_list}) 像这样每次访问都要读取数据库,一般的小网站没什么问题,当访问量非常大的时候,就会有很多次的数据库查询,肯定会造成访问速度变慢,服务器资源占用较多等问题。 当使用了cache后,访问情况就变化了。 from django

打通MySQL架构和业务的任督二脉

匆匆过客 提交于 2020-11-30 03:22:45
目前,在很多OLTP场景中,MySQL数据库都有着广泛的应用,也有很多不同的使用方式。从数据库的业务需求、架构设计、运营维护、再到扩容迁移,不同的MySQL架构有不同的特点,适应一定的业务场景,或者解决一定的业务问题。 DBA作为数据库架构的设计、实施、维护人员,不仅要对各种MySQL架构非常熟悉,还要了解业务,对于不同的业务有一定的划分和认识,并根据业务特点和架构特点,合理选择和使用MySQL,满足业务需求。 本文从MySQL常见架构、业务环境分类、业务与架构结合使用原则三个方面对MySQL数据库和业务场景进行探讨和说明,让大家先分别对MySQL的架构和业务分类有所了解,然后再将两者贯通起来,使得能够在进行业务与MySQL架构设计时纲举目张,让用户可以用合适的技术解决支撑业务需求。 一、MySQL数据库常见架构 为了对MySQL数据库常见架构,能够有进行比较清晰的认识,下面先从MySQL三种通用基础架构、五种特殊需求架构、架构组合与综合使用三个方面进行说明。 1、 MySQL三种常见基础架构 (1)MySQL单实例架构 MySQL单实例,就是在服务器上部署一个MySQL实例来对外提供服务,这是最开始接触MySQL数据库会使用的方式,也是常见学习、研究MySQL数据库的使用方式。 MySQL单实例的使用方式,是MySQL数据库使用的第一阶段,通常这种情况下

阿里P8架构师秘诀:看完这份“Redis面试宝典”,还担心面试被out?完全不存在

别说谁变了你拦得住时间么 提交于 2020-11-27 12:24:52
在大数据时代,频繁地在应用和数据库之间进行读写操作在性能、速度、体验上已经远远不能满足用户、客户、开发人员的要求了,于是一种基于内存操作的数据库便应运而生。Redis 是一种基于内存的数据库,如何轻松理解并熟练操作 Redis 是一个有责任心、进取心程序员应该了解和掌握的技术。Redis在互联网技术存储方面使用如此广泛,几乎所有的后端技术面试官都要在Redis的使用和原理方面对小伙伴们进行各种刁难。 在将面试问的Redis高级题目进行详细的梳理,并结合了解析在这免费分享给大家! Redis高级面试专题 一、Redis基础概念相关问题 1.什么是 Redis? 2.Redis 的特点有哪些? 3. Memcache 与 Redis的区别都有哪些? 4.Redis 相比 Memcached有哪些优势? 5.如何实现本地缓存﹖请描述一下你知道的方式 6.Redis通讯协议是什么?有什么特点? 二、Redis 数据结构及指令相关问题 1. Redis支持的数据类型 2.Redis 常用的命令有哪些? 3.一个字符串类型的值能存储最大容量是多少? 4.Redis各个数据类型最大存储量分别是多少? 5.请介绍一下Redis的数据类型 SortedSet ( zset )以及底层实现机制? 6.Redis 事务相关命令有哪些? 7.什么是 Redis 事务﹖原理是什么? 8.Redis

配置php扩展memcache

谁说胖子不能爱 提交于 2020-11-26 09:31:24
配置php扩展memcache 环境说明: 系统版本 CentOS 6.9 x86_64 软件版本 nginx-1.12.2 php-5.5.38 yum安装memcached1.4.4 php扩展memcache2.2.7 MemAdmin1.0.12 MemCache是一个自由、源码开放、高性能、分布式的分布式内存对象缓存系统,用于动态Web应用以减轻数据库的负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高了网站访问的速度。 MemCaChe是一个存储键值对的HashMap,在内存中对任意的数据(比如字符串、对象等)所使用的key-value存储,数据可以来自数据库调用、API调用,或者页面渲染的结果。MemCache设计理念就是小而强大,它简单的设计促进了快速部署、易于开发并解决面对大规模的数据缓存的许多难题,而所开放的API使得MemCache能用于Java、C/C++/C#、Perl、Python、PHP、Ruby等大部分流行的程序语言。 1、数据库服务器配置memcached [root@db01 ~]# yum install memcached -y # 安装 memcached [root@db01 ~]# cat /etc/sysconfig/memcached # 查看配置文件,默认即可,不做修改 PORT= "11211" USER=

缓存算法(FIFO 、LRU、LFU三种算法的区别)

不打扰是莪最后的温柔 提交于 2020-11-26 03:56:18
缓存算法(FIFO 、LRU、LFU三种算法的区别) FIFO算法 # FIFO 算法是一种比较容易实现的算法。它的思想是先进先出(FIFO,队列),这是最简单、最公平的一种思想,即 如果一个数据是最先进入的,那么可以认为在将来它被访问的可能性很小。空间满的时候,最先进入的数据会被最早置换(淘汰)掉 。 FIFO 算法的描述:设计一种缓存结构,该结构在构造时确定大小,假设大小为 K,并有两个功能: set(key,value):将记录(key,value)插入该结构。当缓存满时,将最先进入缓存的数据置换掉。 get(key):返回key对应的value值。 实现:维护一个FIFO队列,按照时间顺序将各数据(已分配页面)链接起来组成队列,并将置换指针指向队列的队首。再进行置换时,只需把置换指针所指的数据(页面)顺次换出,并把新加入的数据插到队尾即可。 缺点:判断一个页面置换算法优劣的指标就是缺页率,而FIFO算法的一个显著的缺点是,在某些特定的时刻,缺页率反而会随着分配页面的增加而增加,这称为 Belady现象 。产生Belady现象现象的原因是,FIFO置换算法与进程访问内存的动态特征是不相容的,被置换的内存页面往往是被频繁访问的,或者没有给进程分配足够的页面,因此FIFO算法会使一些页面频繁地被替换和重新申请内存,从而导致缺页率增加。因此, 现在不再使用FIFO算法 。

弄懂这些redis分布式锁知识点,明天就去跟老板谈涨薪!(建议收藏)

白昼怎懂夜的黑 提交于 2020-11-25 13:47:48
1 介绍 这篇博文讲介绍如何一步步构建一个基于Redis的分布式锁。会从最原始的版本开始,然后根据问题进行调整,最后完成一个较为合理的分布式锁。 本篇文章会将分布式锁的实现分为两部分,一个是单机环境,另一个是集群环境下的Redis锁实现。在介绍分布式锁的实现之前,先来了解下分布式锁的一些信息。 开始之前,记得点赞收藏加关注哦 ,需要下载PDF版本和获取更多知识点、面试题的朋友可以点一点下方链接免费领取 链接: 点这里!!! 799215493 暗号:CSDN 2 分布式锁 2.1 什么是分布式锁? 分布式锁是控制分布式系统或不同系统之间共同访问共享资源的一种锁实现,如果不同的系统或同一个系统的不同主机之间共享了某个资源时,往往需要互斥来防止彼此干扰来保证一致性。 2.2 分布式锁需要具备哪些条件 互斥性:在任意一个时刻,只有一个客户端持有锁。 无死锁:即便持有锁的客户端崩溃或者其他意外事件,锁仍然可以被获取。 容错:只要大部分Redis节点都活着,客户端就可以获取和释放锁 2.3 分布式锁的实现有哪些? 数据库 Memcached(add命令) Redis(setnx命令) Zookeeper(临时节点) 等等 3 单机Redis的分布式锁 3.1 准备工作 3.1.1 定义常量类 public class LockConstants { public static final

tcpsock.v2 与 ecocache

不想你离开。 提交于 2020-11-25 08:07:46
  因为很不满意 tcpsock 的设计与实现,及有意专为譬如游戏服务器端开发设计一套 TCP 网络库,所以年初即有了 tcpsock.v2 的开发计划,于是粗略整理出了以下几条目标计划:     1) TcpConn 的 ID 类型由 uint32 升级为 uint64     2) 比较灵活的 Create / Config Options 支持     3) 以队列的方式实现数据发送等逻辑     4) 库代码最好不使用反射     5) 对游戏服务器端开发友好(TCP ONLY)     6) TcpServer 增加诸如 Iterate、Send、Kick 等常用接口     7) 回调、超时、重连等逻辑的整理优化与支持等   而截至目前,除了第 2 条, tcpsock.v2 基本初步实现了以上目标(譬如重连,可能在应用层实现更合适),但不少设计实现或还比较粗糙,我应该会在测试及使用中对之慢慢修补改进增强(不排除后期再开发一套全新的库)。其改动较大的部分设计实现,如下可见一斑(conn.go): // Copyright (C) 2018 ecofast(胡光耀). All rights reserved. // Use of this source code is governed by a BSD-style license. package tcpsock

Alibaba2016校招实习面经(拿到offer)

◇◆丶佛笑我妖孽 提交于 2020-11-25 08:01:16
作者: 骚年编程去 ,发表于2015年4月 转载自:http://blog.csdn.net/a837199685 一面 IO模型有哪些?(linux下的io模型,当时没答上,后来下去查了一下,阻塞,非阻塞,io复用,驱动,同步,异步等) 进程线程的区别 不同操作系统实现进程怎么样(ps:我还真不知道,以后要好好看看OS了) gc算法,回收器有哪些(这个答得不错,标记-整理,标记-清理,复制,分代,cms收集器的并行这些说了一下) ACID。事务隔离机制(一致性,原子性,隔离性,持久性,读未提交,读提交,可重复读,序列化) syn在方法上和代码块有什么不同(作用域,和锁对象) memcached和其他nosql的区别(拿memcached和redis做了一下比较) 解释mvc threadlocal解释(结合源码的threadmap讲了一下) volatile的作用(内存可见性,内存屏障,重排序,happens-before) 堆和栈的区别和联系(自由发挥啊) tcp和udp的不同之处(面向链接,是否可靠等) tcp如何保证可靠的(超时重传,ack确认,滑动窗口,连接管理,差错控制等) 数组和链表的区别(先说说数据结构上的区别,然后结合java的两个类的源码做了一些分析) 排序算法应用场景(。。。。。这个比较简单) lucene全文检索原理(分词过滤,filter等,) 二面

重磅消息|民工哥公众号更名啦.........

巧了我就是萌 提交于 2020-11-24 10:28:00
点击上方“ 民工哥技术之路 ”,选择“置顶公众号” 有趣有内涵的文章第一时间送达! 细心的小伙伴肯定在这之前就已经发现了,公众号的LOG换了,公众号简介文字也变更了。的确,改变就在不经意间发生了,如同这个时代一样,如同生活一样,它悄无声息。 民工哥的公众号于2016年07月08日注册并开通,第一篇文章: 哥的侃(说) ,马上快两年了,时间过的真快。 由于去年结束杭漂回撤霸都,实在太忙,更新放慢。 想看民工哥的故事请戳下面的文字 民工哥的十年故事续集:杭漂十年,今撤霸都 不管怎么样,在这还是要感谢一直以来支持与关注的小伙伴们,是你们,让我有了一直坚持写下去的动力,再次感谢。 再来聊一聊为什么改名? 公众号从最开始的名字: 友侃有笑 ——> 民工哥Linux运维 ——> 民工哥技术之路 ,其实也是个学习与发展的过程。 如同我们在人生的道路上,不同的阶段,有不同的目标,做着不同的事情一样。期间,同样会 不断去修正方向, 这样,你会离你所预定的目标越来越近, 走的弯路也会越来越少。 公众号写着写着,慢慢的发现,小伙伴们对知识的的需求不再只有Linux系统这一个面,或者说也不能仅仅只有这一个面。另一个方面就是,在读者当中,不再全是运维人员,只能说都是IT技术人员(有运维、DBA、JAVA开发、前端开发、安卓、IOS开发、测试、自动化开发、架构类的等等)。 更名的主要原因, 其一