缓存服务器

redis删除指定前缀的缓存

只谈情不闲聊 提交于 2019-12-25 23:17:16
redis作为缓存服务器为MySQL数据库提供较高的防御性,对于一些数据的查询可以直接从缓存中可以进行查询。 但是,某些情况下,我们需要清除缓存。 以下场景: 公司经常做活动,每个活动都存在大量的数据。在新活动进行测试的时候,也会产生一些缓存,但是删除这些缓存如果不能批量删除就有点烦了。 在写活动的时候,为了保证活动的缓存不冲突,用自己姓名的前缀及活动的英文名作为前缀。缓存在很大程度上能够帮助我们降低服务器的访问压力,但是也要防止缓存失效的情况,缓存并不能作为我们的最终依靠。 首先在缓存中查询,如果缓存中不存在再去mysql数据库中查询,当数据库中真的不存在的时候,才能确定该查询的数据不存在;因此在数据库中查到数据的时候,再将该数据写入缓存。 ------------------------------------------------------------------------------------------------------ 如何删除指定前缀的redis。。。 我们一开始给redis封装了一个类库 <?php class RedisClass { static $_instance; //存储对象 public $handler ; private function __construct($dbindex = 0) { global $_G ; $data =

网站开发中的服务器缓存处理

此生再无相见时 提交于 2019-12-25 19:37:21
文章目录 服务器缓存的概述 使用服务器缓存的好处 服务器缓存通常都保存些什么 处理服务器缓存的最佳时机 模拟一下spring工厂的创建时机。 服务器缓存处理前的问题 服务器缓存处理 服务器缓存的概述 使用服务器缓存的好处 缓存:就是存放在内存中的数据 浏览器缓存:浏览器内存中保存的以前的服务器做出的响应 服务器缓存:保存在服务器内存中的数据 服务器缓存通常都保存些什么 一般来讲,服务器缓存就是用来保存数据字典的,因为数据字典数据量大,而且值不是很容易发生变化。( 重点是:值不容易发生变化 ) 总是在实时更新表中的数据,每一次我们使用都要求重新从表中取得最新的数据。而不是从服务器缓存中取得老数据。 处理服务器缓存的最佳时机 使用监听器处理服务器缓存 。 监听器作为web开发3大组件(Servlet(controller)、Filter、Listener),是由Tomcat服务器帮我们维护的。 监听器,能够监听域对象的创建与销毁,还能够监听域对象中属性值的创建,更新和移除。 最常用的是监听域对象创建、销毁本身。 你监听什么,我们就是实现哪个所需的监听器 例如: 我们现在拿spring的监听器来举例 public class ContextLoaderListener extends ContextLoader implements ServletContextListener

分布式缓存Redis使用心得

我的未来我决定 提交于 2019-12-25 13:32:51
一、缓存在系统中用来做什么 1. 少量数据存储,高速读写访问。通过数据全部in-momery 的方式来保证高速访问,同时提供数据落地的功能,实际这正是Redis最主要的适用场景。 2. 海量数据存储,分布式系统支持,数据一致性保证,方便的集群节点添加/删除。Redis3.0以后开始支持集群,实现了半自动化的数据分片,不过需要smart-client的支持。 二、从不同的角度来详细介绍redis 网络模型:Redis使用单线程的IO复用模型,自己封装了一个简单的AeEvent事件处理框架,主要实现了epoll、kqueue和select,对于单纯只有IO操作来说,单线程可以将速度优势发挥到最大,但是Redis也提供了一些简单的计算功能,比如排序、聚合等,对于这些操作,单线程模型实际会严重影响整体吞吐量,CPU计算过程中,整个IO调度都是被阻塞住的。 内存管理:Redis使用现场申请内存的方式来存储数据,并且很少使用free-list等方式来优化内存分配,会在一定程度上存在内存碎片,Redis跟据存储命令参数,会把带过期时间的数据单独存放在一起,并把它们称为临时数据,非临时数据是永远不会被剔除的,即便物理内存不够,导致swap也不会剔除任何非临时数据(但会尝试剔除部分临时数据),这点上Redis更适合作为存储而不是cache。 数据一致性问题:在一致性问题上

squid+apache实现缓存加速

帅比萌擦擦* 提交于 2019-12-25 08:04:51
本实例是squid和apache在同一台机器上,squid做前端反向代理。port为80,apache作为后端web,port为81 serverip:172.16.8.102 1.首先介绍下版本号选择,在进行測试之前一定要选定一个合适的squid版本号,在此推荐2.7。她和2.6功能相似但更好的支持http1.1,也有3.0以上版本号的不少特性。 2.squid2.7安装 cd /usr/local/src tar -zxvf squid-2.7.STABLE9.tar.gz cd squid-2.7.STABLE9 ./configure -prefix=/usr/local/squid2.7 -enable-xmalloc-statistics --enable-async-io=320 --with-maxfd=65536 -enable-useragent-log -enable-referer-log -enable-epoll -disable-poll -enable-large-cache-files -disable-internal-dns -enable-linux-netfilter -enable-truncate -enable-x-accelerator-vary -enable-follow-x-forwarded-for -with-large

squid介绍及其简单配置

拜拜、爱过 提交于 2019-12-25 07:59:29
squid-cache 官网 http://www.squid-cache.org squid介绍及其简单配置 https://www.cnblogs.com/cherishry/p/5706736.html CentOS 7安装squid代理服务器 https://blog.csdn.net/ithomer/article/details/78136993 squid的概念 squid是一种用来缓存Internet数据的软件。接受来自人们需要下载的目标(object)的请求并适当的处理这些请求。也就是说,如果一个人想下载一web界面,他请求squid为他取得这个页面。squid随之连接到远程服务器并向这个页面发出请求。然后,squid显式地聚集数据到客户端机器,而且同时复制一份。当下一次有人需要同一页面时, squid可以简单的从磁盘中读到它,那样数据会立即传输到客户机上。 squid代理的作用 通过缓存的方式为用户提供Web访问加速 对用户的Web访问进行过滤控制 工作流程 当代理服务器中有客户端需要的数据时: a. 客户端向代理服务器发送数据请求; b. 代理服务器检查自己的数据缓存; c. 代理服务器在缓存中找到了用户想要的数据,取出数据; d. 代理服务器将从缓存中取得的数据返回给客户端。 当代理服务器中没有客户端需要的数据时: 客户端向代理服务器发送数据请求;

squid-正向代理

偶尔善良 提交于 2019-12-25 07:42:26
squid http://www.squid-cache.org/ squid软件主要有两大应用: 1,代理上网(正向代理,透明代理) 2,网站静态页面缓存加速(反向代理) 三种代理类型 正向代理 代理内部主机上网,共享上网,缓存,控制内网用户上网行为等功能(客户端需要设置代理服务器的IP和代理端口) 透明代理 和正向代理的功能完全一致(客户端不需要设置代理服务器的IP和代理端口,对用户是透明的) 外网 | medem | 路由器(dhcp,snat共享上网,上网行为控制,限速等) | | squid正向代理(共享上网,静态页面缓存加速,内网用户四七层上网行为控制,限速等) | | |----------------------| 上网用户一 上网用户二 反向代理 从外部网络访问内部服务器,与正向方向相反,主要用于网站架构的缓存加速或CDN client | | 反向代理 (缓存加速,七层切分,负载均衡,会话保持等) | | web =================================================================== 正向代理实验 公网 | | eth0 172.16.2.9 squid 服务器 vmnet1 192.168.1.1 | | | 内网用户VM1 eth0(vmnet1) 192.168.1.128

yum 缓存包的使用

只愿长相守 提交于 2019-12-25 00:23:24
[TOC] yum 缓存包的使用 一、下载网上的rpm包 有时候我们要安装一些软件,但是需要一些基础环境,这是我们需要使用yum安装一些基础包,我们在线上使用的时候有的服务器是离线的,无法使用yum来进行安装,如果我们自己去做rpm包,这样会占用我们的大量的时间,得不偿失;这时我们就可以使用yum的缓存功能来缓存包来供我们使用, yum install --downloadonly 包名 指定下载不安装、查看下载的缓存文件,默认存 `/var/cache/yum 例如我要安装zabbix,但是需要很多的安装包,我就可以这样来做 缓存包 yum install --downloadonly ntp vim-enhanced gcc gcc-c++ \ flex bison autoconf automake bzip2 gzip zip \ bzip2-devel ncurses-devel zlib-devel \ libjpeg-devel libpng-devel libtiff-devel \ unzip net-snmp-devel libXpm-devel gettext-devel \ pam-devel libtool libtool-ltdl openssl openssl-devel \ fontconfig-devel libxml2-devel curl

http协议(三)

三世轮回 提交于 2019-12-24 18:19:00
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 3. 深入了解篇 3.1 Cookie和Session Cookie和Session都为了用来保存状态信息,都是保存客户端状态的机制,它们都是为了解决HTTP无状态的问ti而所做的努力。 Session可以用Cookie来实现,也可以用URL回写的机制来实现。用Cookie来实现的Session可以认为是对Cookie更高级的应用。 3.1.1两者比较 Cookie和Session有以下明显的不同点: 1)Cookie将状态保存在客户端,Session将状态保存在服务器端; 2)Cookies是服务器在本地机器上存储的小段文本并随每一个请求发送至同一个服 务器。Cookie最早在RFC2109中实现,后续RFC2965做了增强。网络服务器用HTTP头向客户端发送cookies,在客户终端,浏览器解 析这些cookies并将它们保存为一个本地文件,它会自动将同一服务器的任何请求缚上这些cookies。Session并没有在HTTP的协议中定 义; 3)Session是针对每一个用户的,变量的值保存在服务器上,用一个sessionID来区分是哪个用户session变量,这个值是通过用户的浏览器在访问的时候返回给服务器,当客户禁用cookie时,这个值也可能设置为由get来返回给服务器; 4)就安全性来说

数据库同步原理及常见问题解决方案-运维实记

孤街醉人 提交于 2019-12-24 13:54:13
mysql问题 mysql 主从同步原理 同步过程: 1.在备库B上通过change master命令,设置主库A的IP、端口、用户名、密码,以及要从哪个位置开始请求binlog,这个位置包含文件名和日志偏移量 2.在备库B上执行start slave命令,这时备库会启动两个线程,就是图中的io_thread和sql_thread。其中io_thread负责与主库建立连接 3.主库A校验完用户名、密码后,开始按照备库B传过来的位置,从本地读取binlog,发给B 4.备库B拿到binlog后,写到本地文件,称为中转日志 5.sql_thread读取中转日志,解析出日志里的命令,并执行 日志: undo_log:回滚日志 redo_log:重做日志 binlog: 二进制日志 relay_log:中继日志 日志作用参考 主备延迟、主从延迟 数据同步延迟情况参考: show slave status; --> seconds_behind_master , 此参数表示同步延迟时间为多少秒 延迟时间点: 1.主库A执行完成一个事务,写入binlog,时间点time1 2.之后传给备库B,备库B接收完这个binlog,时间点time2 3.备库B执行完这个事务,时间点 time3 time3 减去 time1 的时间差为同步延迟时间,主要是在执行一个事务中备库与主库执行执行完的时间偏差

【分布式缓存系列】集群环境下Redis分布式锁的正确姿势

匆匆过客 提交于 2019-12-24 12:03:03
一、前言   在上一篇文章中,已经介绍了基于Redis实现分布式锁的正确姿势,但是上篇文章存在一定的缺陷——它加锁只作用在一个Redis节点上,如果通过sentinel保证高可用,如果master节点由于某些原因发生了主从切换,那么就会出现锁丢失的情况: 客户端1在Redis的master节点上拿到了锁 Master宕机了,存储锁的key还没有来得及同步到Slave上 master故障,发生故障转移,slave节点升级为master节点 客户端2从新的Master获取到了对应同一个资源的锁   于是,客户端1和客户端2同时持有了同一个资源的锁。锁的安全性被打破了。针对这个问题。Redis作者antirez提出了RedLock算法来解决这个问题 二、RedLock算法的实现思路   antirez提出的redlock算法实现思路大概是这样的。   客户端按照下面的步骤来获取锁: 获取当前时间的毫秒数T1。 按顺序依次向N个Redis节点执行获取锁的操作。这个获取锁的操作和上一篇中基于单Redis节点获取锁的过程相同。包括唯一UUID作为Value以及锁的过期时间(expireTime)。为了保证在某个在某个Redis节点不可用的时候算法能够继续运行,这个获取锁的操作还需要一个超时时间。它应该远小于锁的过期时间。客户端向某个Redis节点获取锁失败后,应立即尝试下一个Redis节点