缓存服务器

[Google Guava] 3-缓存

久未见 提交于 2019-12-10 15:45:22
原文地址 译文地址 译者:许巧辉 校对:沈义扬 范例 01 LoadingCache<Key, Graph> graphs = CacheBuilder.newBuilder() 02 .maximumSize(1000) 03 .expireAfterWrite(10, TimeUnit.MINUTES) 04 .removalListener(MY_LISTENER) 05 .build( 06 new CacheLoader<Key, Graph>() { 07 public Graph load(Key key) throws AnyException { 08 return createExpensiveGraph(key); 09 } 10 }); 适用性 缓存在很多场景下都是相当有用的。例如,计算或检索一个值的代价很高,并且对同样的输入需要不止一次获取值的时候,就应当考虑使用缓存。 Guava Cache与ConcurrentMap很相似,但也不完全一样。最基本的区别是ConcurrentMap会一直保存所有添加的元素,直到显式地移除。相对地,Guava Cache为了限制内存占用,通常都设定为自动回收元素。在某些场景下,尽管LoadingCache 不回收元素,它也是很有用的,因为它会自动加载缓存。 通常来说, Guava Cache 适用于:

Linux中安装使用memcached

旧城冷巷雨未停 提交于 2019-12-10 13:49:45
转至: http://www.czhphp.com/archives/252 如 何将 memcached 融入到您的环境中? 在开始安装和使用 using memcached 之前,我们需要了解如何将 memcached 融入到您的环境中。虽然在任何地方都可以使用 memcached,但我发现需要在数据库层中执行几个经常性查询时,memcached 往往能发挥最大的效用。我经常会在数据库和应用服务器之间设置一系列 memcached 实例,并采用一种简单的模式来读取和写入这些服务器。图 1 可以帮助您了解如何设置应用程序体系结构: 图 1. 使用 memcached 的示例应用程序体系结构 体系结构相当容易理解。我建立了一个 Web 层,其中包括一些 Apache 实例。下一层是应用程序本身。这一层通常运行于 Apache Tomcat 或其他开源应用服务器之上。再下面一层是配置 memcached 实例的地方 — 即应用服务器与数据库服务器之间。在使用这种配置时,需要采用稍微不同的方式来执行数据库的读取和写入操作。 读取 我执行读取操作的顺序是从 Web 层获取请求(需要执行一次数据库查询)并检查之前在缓存中存储的查询结果。如果我找到所需的值,则返回它。如果未找到,则执行查询并将结果存储在缓存中,然后再将结果返回给 Web 层。 写入 将数据写入到数据库中时

redis

廉价感情. 提交于 2019-12-10 11:45:58
Redis 1.1 缓存策略 1.1.1 策略说明 使用缓存,主要目的为了降低服务器访问物理资源的访问频次.提高了用户获取数据的时间. 注意事项: 缓存中的数据必须和数据库中的数据一致. 1.1.2 缓存设计的思路 缓存中如何保存数据? K-V结构,并且key不能重复. 使用C语言开发. 缓存的运行环境应该是内存中. 缓存数据的持久化问题.保证服务器断电之后数据依然存在. 如何控制内存数据的大小? LRU算法(时间维护) LFU(使用次数) 缓存设计时,应该考虑高可用/集群问题. 1.2 Redis 1.2.1 什么是redis redis是一个 key-value 存储系统 。和Memcached类似,它支持存储的value类型相对更多,包括 string( 字符串 ) 、 list( 链表 ) 、 set( 集合 ) 、 zset(sorted set -- 有序集合 ) 和 hash (哈希类型) 。这些 数据类型 都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是 redis 会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件 ,并且在此基础上实现了master-slave(主从)同步。

访问一个网站域名,中间做了什么那些操作-详细

自古美人都是妖i 提交于 2019-12-10 09:49:27
1、在浏览器中输入www.baidu.com 这意味着浏览器要向百度发送一个网页数据包,要发送数据包,需要知道对方的IP地址,这里我们只知道网址为www.baidu.com,却不知道IP地址,此时应用层协议DNS协议会帮我们把网址解析为IP地址,此时会发送一个DNS数据包给DNS服务器,DNS服务器再做出响应来告诉我们百度的IP地址为220.181.111.147,这样我们就知道百度(我们需要通信的主机)的IP地址。 第1步,浏览器会检查缓存中有没有这个域名对应的解析过的IP地址,如果缓存中有,这个解析过程就将结束。浏览器缓存域名也是有限制的,不仅浏览器缓存大小有限制,而且缓存的时间也有限制,通常情况下为几分钟到几小时不等,域名被缓存的时间限制可以通过TTL属性来设置。这个缓存时间太长和太短都不好,如果缓存时间太长,一旦域名被解析到的IP有变化,会导致被客户端缓存的域名无法解析到变化后的IP地址,以致该域名不能正常解析,这段时间内有可能会有一部分用户无法访问网站。如果时间设置太短,会导致用户每次访问网站都要重新解析一次域名。 第2步,如果用户的浏览器缓存中没有,浏览器会查找操作系统缓存中是否有这个域名对应的DNS解析结果。其实操作系统也会有一个域名解析的过程,在Windows中可以通过C:\Windows\System32\drivers\etc\hosts文件来设置

MySQL 查询缓存

自作多情 提交于 2019-12-10 03:53:54
从 MySQL 4.0.1 开始, MySQL server 有一个重要的特征: Query Cache 。 当在使用中,查询缓存会存储一个 SELECT 查询的文本与被传送到客户端的相应结果。如果之后接收到一个同样的查询,服务器将从查询缓存中检索结果,而不是再次分析和执行这个同样的查询。 注意: 查询缓存绝不返回过期数据。当数据被修改后,在查询缓存中的任何相关词条均被转储清除。 在某些表并不经常更改,而你又对它执行大量的相同查询时,查询缓存将是非常有用的。对于许多 WEB 服务器使用大量的动态信息,这是一个很典型的情况。 下面是查询缓存的一个性能数据。(这些结果的产生,是通过在一个 a Linux Alpha 2 x 500 MHz、2GB RAM 和 64MB 查询缓存上执行 MySQL 基准套件和到的): 如果你执行的所有查询均是简单的(比如从表中一行一行的选取);但是仍然是不同的,所以该查询不能被缓冲,查询缓存处于活动时,开销为 13%。这可以被看作是最差的情况。然而,在实际情况下,查询是比我们的简单示例要复杂得多的,所以开销通常显著得低。 在只有一行记录表中搜索一行后,搜索将快 238% 。这可以被认为是接近于对一个被缓冲的查询所期望的最小的加速。 如果你希望禁用查询缓存,设置 query_cache_size=0 。禁用了查询缓存,将没有明显的开销。(在配置选项 -

CentOS下的yum命令

谁说我不能喝 提交于 2019-12-10 02:52:46
  yum命令是rpm的一款前端工具,可以安装、更新、卸载rpm包,可以从指定服务器下下载rpm包并安装,可以自动解决依赖问题。   语法:     yum [options] [command] [package ...]   常用选项options:     -h:显示帮助     -y:所以交互式问题都回答“yes”     -c:指定配置文件位置     -q:使用安静模式,不显示任何信息(常与"-y"一起使用)     -v:显示详细信息     -R <分钟>:设置最大等待时间     -C:完全从缓存中运行,而不去下载或者更新任何头文件     --nogpgcheck:忽略GPG检查验证     -skip-broken:忽略依赖问题   command:        * install package1 [package2] [...]  安装指定软件包     * update [package1] [package2] [...]  升级指定软件包,默认更新全部     * update-to [package1] [package2] [...]  类似于update,但始终指定包的版本      * check-update              检查是否有可以的rpm更新     * upgrade [package1] [package2] [.

java memcached client

不羁的心 提交于 2019-12-10 02:17:46
Memcach 什么 是Memcache Memcache集群环境下缓存解决方案 Memcache是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。简单的说就是将数据调用到内存中,然后从内存中读取,从而大大提高读取速度。   Memcache是danga的一个项目,最早是LiveJournal 服务的,最初为了加速 LiveJournal 访问速度而开发的,后来被很多大型的网站采用。   Memcached是以守护程序方式运行于一个或多个服务器中,随时会接收客户端的连接和操作 为什么会有Memcache和memcached两种名称 其实Memcache是这个项目的名称,而memcached是它服务器端的主程序文件名,知道我的意思了吧。一个是项目名称,一个是主程序文件名,在网上看到了很多人不明白,于是混用了。 Memcached是高性能的,分布式的内存对象缓存系统,用于在动态应用中减少数据库负载,提升访问速度。Memcached由Danga Interactive开发,用于提升LiveJournal.com访问速度的。LJ每秒动态页面访问量几千次,用户700万。Memcached将数据库负载大幅度降低,更好的分配资源,更快速访问。 上网baidu了很多东西,几乎都差不多

Memcached java简单实例

让人想犯罪 __ 提交于 2019-12-10 02:07:44
最近一直在做一个项目的前期设计工作,考虑到后期系统的扩展和性能问题也找了很多解决方法,有一个就是用到了数据库的缓存工具memcached(当然该工具并不仅仅局限于数据库的缓存)。先简单的介绍下什么是memcached。 Memcached是高性能的,分布式的内存对象缓存系统,用于在动态应用中减少数据库负载,提升访问速度。Memcached由Danga Interactive开发,用于提升LiveJournal.com访问速度的。LJ每秒动态页面访问量几千次,用户700万。Memcached将数据库负载大幅度降低,更好的分配资源,更快速访问。 上网baidu了很多东西,几乎都差不多,而且基于java的说的很少,所有只有在研究了各个其他语言类的应用后再来尝试在java上进行简单的操作应用。先从memcached上进行说明,memcached的最新版是采用c语言进行开发和设计的,据说旧版的是采用perl语言开发的,而且它是一个应用软件来的,是作为缓存服务器的服务器端运行在服务器上的,需要使用特定的语言编写客户端与其进行通信来进行数据的缓存和获取。通常我们是把 memcached安装运行在web服务器上,然后通过对需要的数据进行缓存,据我目前所知,所有数据的缓存设置和存取操作,以及数据的更新后替换操作全部需要程序来进行,而不是自动进行的(自动不知道能不能成功,呵呵)

Memcached在项目中的应用

雨燕双飞 提交于 2019-12-10 01:51:47
Memcached是一个开源的快速分布式缓存框架,它和ehcached等缓存框架相比,具有下面的一些优势: 1、 跨jvm的缓存架。我们知道,在一个jvm进程中,一般情况下的有效内存利用最多为2G,如果你再把数据缓存在项目的jvm进程中,势必造成内存空间的紧 缺,严重的时候会出现堆栈溢出面导致项目终止运行。 2、 集群环境下的缓存框架。Memcached启动后,有自己的独立IP地址及端口号(默认是11211,当然你可以更改),因此,在集群环境下或不同的几个 项目间,都可以访问缓存服务器中的数据,非常的方便。 下面我们一起来看一看笔者在最近的一个项目中,是如何使用memached的。 一、安装memcached缓存服务器 如果你用的是windows服务器系统,请到http://jehiah.cz/projects/memcached-win32/下载,点其中的 exe可执行文件,Memcached就完成了启动,非常的简单。 如果你使用的是linux server,你需要如下的操作(以ubuntu为例): $ sudo apt-get install memcached(安装) $ memcached -d -m 50 -p 11211 -u root(启动) 上面命令行参数说明:-m 指定使用多少兆的缓存空间;-p 指定要监听的端口; -u 指定以哪个用户来运行,默认情况下

nginx之缓存和压缩

青春壹個敷衍的年華 提交于 2019-12-10 01:22:13
location /ecshop{ rewrite "goods-(\d{1,7})\.html" /ecshop/goods.php?id=1; } #有{}正则用“” [root @localhost nginx]# ./sbin/nginx -s stop [root @localhost nginx]# ./sbin/nginx http://192.168.88.170/ecshop/index.php Rewrite语法 Rewrite 正则表达式 定向后的位置 模式 Goods-3.html ---->Goods.php?goods_id=3 goods-([\d]+)\.html ---> goods.php?goods_id =$1 #反向引用######################### location /ecshop { index index.php; rewrite goods-([\d]+)\.html$ /ecshop/goods.php?id=$1; rewrite article-([\d]+)\.html$ /ecshop/article.php?id=$1; rewrite category-(\d+)-b(\d+)\.html /ecshop/category.php?id=$1&brand=$2; rewrite category-(