缓存服务器

Redis面试题汇总一

社会主义新天地 提交于 2019-12-14 04:33:27
1、什么是Redis redis本质是一个key-value类型的内存数据库,整个数据库统统加载在内存中进行操作,定期通过异步操作把数据库数据flush到硬盘上保存。因为是纯内存操作,Redis的性能非常出色,每秒可以处理超过 10万次读写操作,是已知性能最快的Key-Value DB。除此之外,redis还支持多种数据结构(如list,string,set,zset,hash)。 2、Redis为什么这么快? ①、redis完全基于内存 ②、使用单线程,避免了不必要的上下文切换和竞争条件 ③、使用了I/O多路复用模型 关于redis I/O多路复用解释如下图: 这里“多路”指的是多个网络连接,“复用”指的是复用同一个线程。采用多路 I/O 复用技术可以让单个线程高效的处理多个连接请求(尽量减少网络 IO 的时间消耗),且 Redis 在内存中操作数据的速度非常快,也就是说内存内的操作不会成为影响Redis性能的瓶颈,主要由以上几点造就了 Redis 具有很高的吞吐量。 3、为什么Redis是单线程的? 对于Redis的单线程解释:单线程指的是网络请求模块使用了一个线程(所以不需考虑并发安全性),即一个线程处理所有网络请求,其他模块仍用了多个线程。 官方FAQ表示,因为Redis是基于内存的操作,CPU不是Redis的瓶颈,Redis的瓶颈最有可能是机器内存的大小或者网络带宽

缓存协议:redis和memcached的优缺点及区别

拟墨画扇 提交于 2019-12-13 21:24:20
memcached 和 redis 都很类似:都是内存型数据库,数据保存在内存中,通过tcp直接存取,优势是速度快,并发高,缺点是数据类型有限,查询功能不强,一般用作缓存。 那么题主说 memcached 的事情 redis 都可以做,那么为什么 memcached 还有人用?那是因为它们两者并不是完全可以相互替代的,它们也有各自的长短优缺点 Memcached Memcached的优点: Memcached可以利用多核优势,单实例吞吐量极高,可以达到几十万QPS(取决于key、value的字节大小以及服务器硬件性能,日常环境中QPS高峰大约在4-6w左右)。 适用于最大程度扛量,有效为服务器减压。 支持直接配置为session handle。 配置维护的坑比较少。 Memcached的局限性: 数据结构很简单单一,只支持简单的key/value数据结构,不像Redis可以支持丰富的数据类型。 无法进行持久化,数据不能备份,只能用于缓存使用,且重启后数据全部丢失。 无法进行数据同步,不能将MC中的数据迁移到其他MC实例中。 Memcached内存分配采用Slab Allocation机制管理内存,value大小分布差异较大时会造成内存利用率降低,并引发低利用率时依然出现踢出等问题。需要用户注重value设计。 memcached服务端原生不支持水平扩展

my.ini的配置参数详解,以及binlog的三种模式

一曲冷凌霜 提交于 2019-12-13 15:48:35
先点赞,后观看,伸手才有好习惯 my.ini配置详解 【转载】 #*** client options 相关选项 ***# #以下选项会被MySQL客户端应用读取。注意只有MySQL附带的客户端应用程序保证可以读取这段内容。如果你想你自己的MySQL应用程序获取这些值。需要在MySQL客户端库初始化的时候指定这些选项。 [client] port = 3309 socket = /usr/local/mysql/tmp/mysql.sock [mysqld] !include /usr/local/mysql/etc/mysqld.cnf #包含的配置文件 ,把用户名,密码文件单独存放 port = 3309 bind-address = 0.0.0.0 server-id = 1 #表示是本机的序号为1,唯一 socket = /usr/local/mysql/tmp/mysql.sock pid-file = /usr/local/mysql/var/mysql.pid basedir = /usr/local/mysql/ datadir = /usr/local/mysql/var/ tmpdir = /usr/local/mysql/tmp/ #此目录被 MySQL用来保存临时文件.例如,它被用来处理基于磁盘的大型排序,和内部排序一样,以及简单的临时表

MySQL-配置文件my.cnf参数优化详解

这一生的挚爱 提交于 2019-12-13 15:21:46
MySQL-配置文件my.cnf参数优化详解 [client] ######################################################################### # # # MySQL客户端配置 # # # ######################################################################### port = 3306 # MySQL客户端默认端口号 socket = /data/mysql/my3306/mysql.sock # 用于本地连接的Unix套接字文件存放路径 default-character-set = utf8mb4 # MySQL客户端默认字符集 [mysql] ######################################################################### # # # MySQL命令行配置 # # # ######################################################################### auto-rehash # 开启tab补齐功能 socket = /data/mysql/my3306/mysql.sock #

《邓哥奇遇记6》—— HTTP缓存机制

亡梦爱人 提交于 2019-12-13 12:37:42
  我们经常说这个页面有缓存~!这个Css有缓存~!我们如果打开控制台,也经常看到有个叫做Cache-Control的字段,但是这个字段里有很多种类的值,有很多同学不明白这些值都是什么意思~   这些值不但在实际中会经常用到,而且在面试中也会经常被提起,那么今天我们就来一起看一下这些值的含义吧~   其实cache-control里的字段分为两类,一类是RequestHeader中使用的,另一类是ResponseHeader中使用的,我们最常见的或者说和前端最相关的就是ResponseHeader中使用的cache-control。   我们今天来用邓哥吃药的例子,来为大家解释ResponseHeader中的Cache-Control的各种值~   邓哥的近况可以用一句话来形容,那就是“浪多人变傻”。有一天邓哥忽然发现自己的脑子不够用了。于是决定买点药,不能让这种情况进一步恶化下去~   于是邓哥去了药店,药店的医生见了邓哥,顿时大喜道:“呀~!邓哥来啦~!今天想吃点啥?”邓哥向药店医生描述了自己的情况之后,药店的医生推荐给邓哥本店的招牌【脑残片】。我们的故事就是从这开始的~   这时我们可以把邓哥比作浏览器,药店比作服务器,药店医生比作服务器的代理,脑残片就是要请求的资源,比如一个图片之类的~   1.max-age:   邓哥有个怪癖,买回来超过七天就不吃了,就得买新的。

部署Varnish缓存搭理服务器

有些话、适合烂在心里 提交于 2019-12-13 09:25:19
博文大纲: 一、Varnish概述 1.Varnish简介 2.Varnish和squid的区别 3.Varnish的工作原理 4.Varnish架构 5.Varnish配置 6.VCL中内置预设变量 7.VCL的子程序 8.特定功能语句 9.return语句 10.Varnish请求处理的步骤 11.Varnish的优雅模式 二、安装Varnish 1.客户端访问测试缓存 2.服务端测试清除缓存 3.配置http服务器的访问获取客户端的IP地址 一、Varnish概述 1.Varnish简介 Varnish是一款高性能且开源的反向代理服务器和HTTP加速器,其采用全新的软件体系机构,和现在的硬件体系紧密配合。与传统的squid相比,Varnish具有高性能、速度快、管理更加方便等优点,目前很多大型的网站都开始尝试使用Varnish来代替squid,这便是Varnish迅速发展的最根本的原因。 Varnish的主要特征: (1)缓存代理位置:可以使用内存也可以使用磁盘; (2)日志存储:日志存储在内存中; (3)支持虚拟内存的使用; (4)有精确的时间管理机制,即缓存的时间属性控制; (5)状态引擎架构:在不同的引擎上完成对不同的缓存和代理数据进行处理; (6)缓存管理:以二叉堆管理缓存数据,做到数据的及时清理; 2.Varnish和squid的区别 相同点:

高性能MySQL--总览篇

有些话、适合烂在心里 提交于 2019-12-13 01:00:42
文章为转载: MySQL逻辑架构及性能优化原理   说起MySQL的查询优化,相信所有人都了解一些最简单的技巧:不能使用SELECT *、不使用NULL字段、合理创建索引、为字段选择合适的数据类型….. 你是否真的理解这些优化技巧?是否理解其背后的工作原理?在实际场景下性能真有提升吗?我想未必。因而理解这些优化建议背后的原理就尤为重要。 MySQL逻辑架构   如果能在头脑中构建一幅MySQL各组件之间如何协同工作的架构图,有助于深入理解MySQL服务器。下图展示了MySQL的逻辑架构图。   MySQL逻辑架构整体分为三层,最上层为客户端层,并非MySQL所独有,诸如:连接处理、授权认证、安全等功能均在这一层处理。   MySQL大多数核心服务均在中间这一层,包括查询解析、分析、优化、缓存、内置函数(比如:时间、数学、加密等函数)。所有的跨存储引擎的功能也在这一层实现:存储过程、触发器、视图等。   最下层为存储引擎,其负责MySQL中的数据存储和提取。和Linux下的文件系统类似,每种存储引擎都有其优势和劣势。中间的服务层通过API与存储引擎通信,这些API接口屏蔽了不同存储引擎间的差异。       每一个客户端发起一个新的请求都由服务器端的连接/线程处理工具负责接收客户端的请求并开辟一个新的内存空间,在服务器端的内存中生成一个新的线程

Mysql安装、配置、优化

妖精的绣舞 提交于 2019-12-13 00:50:45
一: MYSQL安装和基本配置 在linux上安装,可以用包管理工具来安装,比较简单: RedHat 系列:yum -y install mysql mysql-server Debian系列:sudo apt-get install mysql mysql-server 安装之后不知道mysql装到哪了怎么办,用whereis mysql 命令来找一下。 先找到mysql的默认配置文件。一般来说,安装后有这么几个备选的配置: 1 my-huge.cnf my-innodb-heavy-4G.cnf my-large.cnf my-medium.cnf my-small.cnf  就2014年的机器配置来说,咱们直接用my-huge.cnf。把my-huge.cnf 复制到/etc/下,改名my.cnf。配置文件就有了, 然后启动mysql: /etc/init.d/mysqld start 。 安装之后默认的帐号是root, 密码为空。咱们要做的第一件事是改root密码。 进入mysql:mysql -uroot -p 选择数据库: use mysql 改密码: UPDATE user SET Password = PASSWORD(‘xxxx’) WHERE user = ‘root’; 刷新权限: FLUSH PRIVILEGES; 现在数据库装好了, 帐号和权限也设置了

负载均衡与缓存

倖福魔咒の 提交于 2019-12-13 00:47:42
 反向代理 ¶ 反向代理服务器配置nginx.conf #配置域名为test.web1.test的虚拟主机 server{ listen 80; server_name test.web1.test; #域名test.web1.test的请求全部转发到Web服务器192.168.1.101 location / { proxy_pass http://192.168.1.101 ; } } #配置域名为test.web2.test的虚拟主机 server{ listen 80; server_name test.web2.test; #域名test.we2.test的请求全部转发到Web服务器192.168.1.102 location / { proxy_pass http://192.168.1.102 ; } } 实验客户端配置,hosts文件,...103为nginx反向代理服务器地址 192.168.1.103 test.web1.test 192.168.1.103 test.web2.test 反向代理其他指令 proxy_set_header 在将客户端请求发送给后端服务器之前,更改来自客户端的请求头信息 proxy_connect_timeout 配置与后端服务器尝试建立连接的超时时间 proxy_read_ timeout 配置向后端服务器组发出read请求后

Django的缓存机制

此生再无相见时 提交于 2019-12-12 15:34:25
本文目录 一 缓存介绍 二 Django中的6种缓存方式 三 Django6种缓存的配置 四 Django中的缓存应用 回到目录 一 缓存介绍 在动态网站中,用户所有的请求,服务器都会去数据库中进行相应的增,删,查,改,渲染模板,执行业务逻辑,最后生成用户看到的页面. 当一个网站的用户访问量很大的时候,每一次的的后台操作,都会消耗很多的服务端资源,所以必须使用缓存来减轻后端服务器的压力. 缓存是将一些常用的数据保存内存或者memcache中,在一定的时间内有人来访问这些数据时,则不再去执行数据库及渲染等操作,而是直接从内存或memcache的缓存中去取得数据,然后返回给用户. 回到目录 二 Django中的6种缓存方式 开发调试缓存 内存缓存 文件缓存 数据库缓存 Memcache缓存(使用python-memcached模块) Memcache缓存(使用pylibmc模块) 经常使用的有文件缓存和Mencache缓存 回到目录 三 Django6种缓存的配置 1.2.1 开发调试(此模式为开发调试使用,实际上不执行任何操作) settings.py文件配置 CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.dummy.DummyCache', # 缓存后台使用的引擎 'TIMEOUT': 300, #