缓存服务器

Redis常见面试题

房东的猫 提交于 2019-12-31 23:44:52
1、什么是Redis?   Redis 是一个基于内存的高性能key-value数据库,不过在系统中一般充当高速缓存的角色。 2、为什么Redis需要把所有数据放到内存中?    访问内存的速度远高于访问硬盘的速度,如果不将数据放在内存中,磁盘I/O速度将严重影响Redis的性能。在内存越来越便宜的今天,Redis将会越来越受欢迎。 3、对Redis的访问为什么是单进程单线程的   Redis利用队列技术将并发访问变为串行访问,消除了传统数据库串行控制的开销。Redis的开发者认为Redis的性能瓶颈不在CPU,而是网络等因素。所以采取单线程的方式是最快的。单线程能够有效避免CPU切换的开销,另外I/O多路复用技术也有效的提升了访问速度。 4、Reids的特点(Redis的好处) 访问速度快。原因归结为三个方面:一是数据存储在内存中;二是对数据的访问是单线程操作,避免了不必要的IO开销;三是底层的数据结构合理,类似于hashMap,存取的时间复杂度为O(1)。 拥有丰富数据类型。支持string,list,hash ,set,sorted set五种类型 支持事务。拥有与传统数据库不同的独特的事务特性。在Redis中,一个事务中所有命令操作具有原子性 可以持久化缓存数据。拥有AOF和RDB两种持久化方式,保证系统重启数据不丢失 拥有成熟的可扩展,高可用的分布式解决方案。像Redis

如何让你的移动端网站更快

六眼飞鱼酱① 提交于 2019-12-31 21:09:53
性能测试 优化移动性能的第一步是进行性能测试。目前,业界存在大量免费和付费的资源可以完成这一步。不过,我最喜欢的还是谷歌 Chrome 内建的开发者工具和 WebPageTest 。为了简单起见,本文中我就直接选用 Chrome 的开发者工具了。 你不是一个开发者?没关系,这个开发者工具很容易就可以上手: 打开 Chrome (当然我已经假设你安装了 Chrome 浏览器) 点击右上角类似汉堡的三条线按钮,那是一个菜单键 选择 更多工具 ,最后选择 开发者工具 如果你对开发者工具不太熟悉,或者只了解一点。如果你想再深入的了解,可以阅读《 DevTools Learning 》。这篇文章收集了很多有关于开发者工具的学习资料。 现在你应该已经可以看到网格型的屏幕已经大量有趣的信息。其中最重要的,就是顶部的下拉菜单,其中包含了许多不同的手机和平板模拟模式。太酷了。 接下来,选择一个感兴趣的设备,比如 iPhone 6。在浏览器的地址栏输入站点地址,回车进入!你就可以看到站点被渲染到了 iPhone 6 模拟器上。滚动到页面底部可以看到一系列的性能信息,比如页面加载时间、页面大小和总的请求数。点击 Network 信息栏,可以看到瀑布流形式的页面加载动态,如下所示: 优化移动端图片 根据这份 HTTP 统计 ,图片大概占据了页面总体积的 60% 之多。只凭直觉来说,图片通知了网页

Django学习之缓存和信号

自古美人都是妖i 提交于 2019-12-31 17:06:04
动态网站中,用户请求都要去服务器的数据库中增删改查,会消耗很大的资源,因此,使用缓存在减轻服务器的压力。缓存是将一些常用的数据保存内存或者memcache中,在一定的时间内有人来访问这些数据时,则不再去执行数据库及渲染等操作,而是直接从内存或memcache的缓存中去取得数据,然后返回给用户。Django使用缓存后,用户请求到来时,则不再去执行view中的操作,而是直接从内存或者Redis中之前缓存的内容拿到,并返回。 Django中提供了6种缓存方式: 开发调试 内存 文件 数据库 Memcache缓存(python-memcached模块) Memcache缓存(pylibmc模块) Django中缓存配置 django配置缓存,只需要在settings.py中添加相应的配置即可。 开发调试 # 此为开始调试用,实际内部不做任何操作 # 配置: CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.dummy.DummyCache', # 引擎 'TIMEOUT': 300, # 缓存超时时间(默认300,None表示永不过期,0表示立即过期) 'OPTIONS':{ 'MAX_ENTRIES': 300, # 最大缓存个数(默认300) 'CULL_FREQUENCY': 3, # 缓存到达最大个数之后

击穿

自古美人都是妖i 提交于 2019-12-31 17:05:07
Redis缓存的使用,极大的提升了应用程序的性能和效率,特别是数据查询方面。但同时,它也带来了一些问题。其中,最要害的问题,就是数据的一致性问题,从严格意义上讲,这个问题无解。如果对数据的一致性要求很高,那么就不能使用缓存。 另外的一些典型问题就是,缓存穿透、缓存雪崩和缓存击穿。目前,业界也都有比较流行的解决方案。本篇文章,并不是要更加完美的解决这三个问题,也不是要颠覆业界流行的解决方案。而是,从实际代码操作,来演示这三个问题现象。之所以要这么做,是因为,仅仅看这些问题的学术解释,脑袋里很难有一个很形象的概念,有了实际的代码演示,可以加深对这些问题的理解和认识。 缓存穿透 缓存穿透,是指查询一个数据库一定不存在的数据。正常的使用缓存流程大致是,数据查询先进行缓存查询,如果key不存在或者key已经过期,再对数据库进行查询,并把查询到的对象,放进缓存。如果数据库查询对象为空,则不放进缓存。 Redis缓存流程 代码流程 参数传入对象主键ID 根据key从缓存中获取对象 如果对象不为空,直接返回 如果对象为空,进行数据库查询 如果从数据库查询出的对象不为空,则放入缓存(设定过期时间) 想象一下这个情况,如果传入的参数为-1,会是怎么样?这个-1,就是一定不存在的对象。就会每次都去查询数据库,而每次查询都是空,每次又都不会进行缓存。假如有恶意攻击,就可以利用这个漏洞,对数据库造成压力

前端HTTP 缓存简单了解

China☆狼群 提交于 2019-12-31 12:58:51
始发掘金: 《前端HTTP 缓存简单了解》 同步到博客园。 HTTP 缓存简单了解。文章整理了相关资料,记录了部分实践。方便大家轻松了解缓存。能回答上三个问题,HTTP缓存就算理解呢。能否缓存?缓存是否过期?协商缓存? 概要: web缓存 缓存的处理 前端解决方案 总结 1. web缓存 Web缓存是可以自动保存常见文档副本的 HTTP 设备。当 Web请求抵达缓存时, 如果本地有“已缓存的”副本,就可以从本地存储设备而不是原始服务器中提取这个文档。《HTTP权威指南》 缓存是一种存储给定资源副本并在请求时将其提供回来的技术。 当Web缓存在其存储中具有请求的资源且能用时,它将拦截该请求并返回其副本,而不是从原始服务器重新下载。 关键字:缓存,原始服务器(产生原始文档) 1.1 缓存类型 缓存的种类:浏览器缓存(本文讨论点),代理缓存,网关缓存。 以上种类 缓存工作的原理 是一致的,只是缓存所在的位置不同,涉及面更宽广。 这几种缓存,可以分为两大类: 专用缓存(私有缓存):私有缓存专用于单个用户。 共享缓存:多用户共享。 图片源:HTTP caching 上图展示了: 没有缓存: 没有缓存直接向服务器请求资源。 共享缓存: 当用户Browser1请求资源,经过缓存服务器,缓存服务器也没有资源,向原始服务器请求资源。得到资源后,缓存服务器缓存资源并返还数据给Browser1

nginx配置图片服务器

扶醉桌前 提交于 2019-12-31 01:25:34
这几天研究了一下nginx配置图片服务器的相关内容,个人的一些收获与大家分享一下: Nginx是目前非常流行的web服务器,它起源于俄罗斯。它具有处理速度快,并发量大,占用资源极低等优点,尤其对于静态资源的处理更佳,有测试证明是apache的30倍。现在已经广泛的应用于多家门户网站、中大型网站中,作为反向代理、图片缓存服务器等。 本例是结合张宴的blog(http://blog.s135.com/nginx_cache/),做的变动。 主站是IIS7.5(192.168.36.70),用的是.net 3.5+sql 2005,用于处理aspx,ashx等动态网页程序,而网站的图片服务器为nginx(centos 5.6,IP:192.168.33.243). nginx图片服务器配置: 1.centos5.6上安装nginx.安装步骤如下: wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.00.tar.gz tar zxvf pcre-8.00.tar.gz cd pcre-8.00/ ./configure make && make install cd ../ wget http://labs.frickle.com/files/ngx_cache_purge-1.0.tar.gz tar

配置nginx的图片服务器

柔情痞子 提交于 2019-12-31 01:25:18
user nginx; worker_processes 8; error_log /usr/local/webserver/nginx/logs/nginx_error.log crit; pid /usr/local/webserver/nginx/nginx.pid; #Specifies the value for maximum file descriptors that can be opened by thisprocess. worker_rlimit_nofile 65535; events { use epoll; worker_connections 65535; } http { include mime.types; default_type application/octet-stream; charset utf-8; server_names_hash_bucket_size 128; client_header_buffer_size 32k; large_client_header_buffers 4 32k; client_max_body_size 300m; sendfile on; tcp_nopush on; keepalive_timeout 60; tcp_nodelay on; client_body_buffer_size

nginx缓存模块配置总结proxy_cache(未完)

[亡魂溺海] 提交于 2019-12-31 01:16:52
简介:此缓存设置用到了第三方模块purge,使用的时候就在源链接和访问的具体内容之间加入关键字"/purge/"即可。 如:访问http://192.168.0.1/a.png 会生成a.png的缓存文件; 只要通过http://192.168.0.1/purge/a.png就可以将生成的缓存清除掉了。 一、获取安装包 获取安装包: wget http://nginx.org/download/nginx-1.7.9.tar.gz 获取缓存清理模块: wget http://labs.frickle.com/files/ngx_cache_purge-2.3.tar.gz 二、安装nginx [root@HOST]# tar -xvzf nginx-1.7.9.tar.gz [root@HOST]# tar -zxvf ngx_cache_purge-2.3.tar.gz [root@HOST]# cd nginx-1.7.9 [root@HOST]# ./configure --prefix=/usr/local/nginx \ --add-module=../ngx_cache_purge-2.3 [root@HOST]# make[root@HOST]# make install 三、配置nginx(主要添加加粗字体部分) [root@HOST]cd /usr/local

修改jsp文件刷新网页没有更新

我是研究僧i 提交于 2019-12-30 23:56:59
在用jsp开发网页时,遇到修改文件而网页不更新的问题,首先我们要明白的是刷新网页只是重新从内存/缓存中请求数据,而修改了jsp文件并不会自动清理缓存,所以就会出现以下几种情况: 1. 修改jsp文件并保存,但是刷新eclipse中的页面并没有变化,这时应该先关闭服务器,然后清理服务器数据 再次启动服务器就会发现网页更新了 2.浏览器刷新没有变化时,其实是一样的情况,浏览器会记录缓存,会优先向缓存中提取数据,我用的是chrome浏览器, 打开 设置, 在最上面的搜索框中输入‘ 缓存 ’,点清除浏览数据 会弹出一个选项框,可以根据自己的情况选择清除那些信息,我除了登录密码和自动填充数据没选,其他的都勾上了,范围可以根据自己的情况选 清除完成后,再输入地址,回车,就可以看到更新后的页面了 来源: CSDN 作者: Hurry_ounce 链接: https://blog.csdn.net/Hurry_ounce/article/details/103772723

大型网站系统架构分析

十年热恋 提交于 2019-12-30 23:31:19
千万级的注册用户,千万级的帖子,nTB级的附件,还有巨大的日访问量,大型网站采用什么系统架构保证性能和稳定性? 首先讨论一下大型网站需要注意和考虑的问题。 数据库海量数据处理 :负载量不大的情况下select、delete和update是响应很迅速的,最多加几个索引就可以搞定,但千万级的注册用户和一个设计不好的多对多关系将带来非常严重的性能问题。另外在高UPDATE的情况下,更新一个聚焦索引的时间基本上是不可忍受的。索引和更新是一对天生的冤家。 高并发死锁 :平时我们感觉不到,但数据库死锁在高并发的情况下的出现的概率是非常高的。 文件存储的问题 :大型网站有海量图片数据、视频数据、文件数据等等,他们如何存储并被有效索引?高并发的情况下IO的瓶颈问题会迅速显现。也许用RAID和专用存贮服务器能解决眼下的问题,但是还有个问题就是各地的访问问题,也许我们的服务器在北京,可能在云南或者新疆的访问速度如何解决?如果做分布式,那么我们的文件索引以及架构该如何规划。 接下来讨论大型网站的底层系统架构,来有效的解决上述问题。 毋庸置疑,对于规模稍大的网站来说,其背后必然是一个服务器集群来提供网站服务,例如,2004年eBay的服务器有2400台,估计现在更多。当然,数据库也必然要和应用服务分开,有单独的数据库服务器集群。对于像淘宝网这样规模的网站而言,就是应用也分成很多组。 下面