缓存

简介: 缓存

1、定义:

缓存就是在内存中存储的数据备份,当数据没有发生本质变化的时候,我们避免数据的查询操作直接连接数据库,而是去从内存中读取数据,这样就大大降低了数据库的读写次数(这时读取IO的事件的次数就减少),而且从内存中读取数据的速度要比从数据库查询要快很多。

2、缓存的形成

页面缓存 (smarty静态化技术),php中有静态化的技术

页面缓存经常用在CMS内容管理系统界面。

数据缓存:经常会用在页面的具体数据里面。

3、memcached:并发量比redis还高,单进程多线程的的技术

①、协议简单,基于libevent事件处理,内置内存存储方式,memcached不互相通信的分布式。各个memcached不会互相通信以共享信息,分布策略由客户端实现。不会对数据进行持久化,重启memcached,重启操作系统会导致系统全部数据消失。

②、Memcached常见的应用场景是存储一些读取频繁但更新较少的数据,如静态网页,系统配置及规则数据,活跃用户的基本数据和个性化定制数据,准实时统计信息等。

缺点:在数据更改的时候有可能数据不准确,出现原子性问题,因为它是多线程的,导致上下文的时间片切换比较频繁而导致效率比较低下,还会引发线程的安全性的问题。在php中用的比较多。

4、Redis

①、由于Redis是单线程的不会存在线程的安全性的问题,而且不会导致太多的时间片切换而导致效率降低。redis直接操作内存的

②、Redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string、list、set、zset(有序集合)和hash。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序和算法。

③、与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件(RDB和AOF两种方式),并且在此基础上实现了master-slave(主从)同步,机器重启后能通过持久化数据自动重建内存,使用Redis作为Cache时机器宕机后热点数据不会丢失(这就是持久化的意义)。

④、Redis丰富的数据结构也使其拥有更加丰富的应用场景。Redis的命令都是原子性的,可以简单地利用INCR和DECR实现计数功能。使用list可以实现获取最近N个数的操作。sort set支持对数据排序,可以应用在排行榜中。set集合可以应用到数据排重。Redis还支持过期时间设置,可以应用到需要设定精确过期时间的应用。只要可以使用Redis支持的数据结构表示的场景,就可以使用Redis进行存储。

⑤、redis用的是非阻塞io,就是NIO,里面使用了多路复用的技术,它里面利用的是linux系统中的epoll的模型,所以它的速度很快,它不会像io一样会去阻塞,它所有的阻塞只会阻塞到轮询上面,而不会阻塞到存储的上面。所以redis很受欢迎。

⑥、原子性:如果用redis做一个分布式锁的情况下,这里不需要对redis加锁,因为操作本来是原子的,因为是单线程。

相关文章
|
7月前
|
缓存
你了解缓存吗?
你了解缓存吗?
你了解缓存吗?
|
6月前
|
存储 缓存 对象存储
合理地处理不需要的缓存
【6月更文挑战第8天】本文介绍了管理缓存数据过期的重要性,以避免内存浪费和过时信息的使用。缓存系统通常允许设置默认过期策略或为每个对象指定绝对或滑动过期时间。缓存服务常使用LRU策略进行逐出,但过度使用可能导致内存超出异常。
67 10
合理地处理不需要的缓存
|
6月前
|
存储 缓存 NoSQL
在应用中使用缓存服务
【6月更文挑战第24天】本文介绍redis缓存的基本知识和使用。Redis超越简单的键值存储,Redis查询直接针对键,不支持复杂查询,适合特定场景的高性能缓存。用于减少数据库交互,优化性能。并提供练习源码查阅。
95 1
|
存储 缓存 API
缓存 #23
缓存 #23
53 0
|
存储 缓存 前端开发
缓存的认识
缓存是架构设计中一个重要的手段。缓存的主要特点是技术比较简单,同时对性能提升的效果又很显著,所以缓存在很多业务场景中被使用到。
136 0
|
缓存 开发框架 NoSQL
7.4缓存
缓存是一个用来保存数据的区域,从缓存中读取数据要比从数据源读取数据的速度快很多。如果可以从缓存中获取要获取的数据则称之为“缓存命中”,多次请求命中的请求占全部请求的百分比叫做“命中率”,如果数据源中的数据保存到了缓存后,发生了变化则称之为“缓存数据不一致”
145 0
|
存储 缓存 算法
聊聊缓存那些事
说到缓存,作为技术同学想必大家都不会陌生,平常工作中或多或少也用到过。但是要结构化的说清楚缓存到底是什么,怎么用,用了有问题怎么解,也不是一件简单的事。所以这篇文章也是站在服务端研发的视角,对自己过去经验的一些总结,希望对大家有哪怕一丁点的帮助,也就值得了。 本篇文章计划分为两个章节来写: ● 缓存基础篇:讲一下缓存的基本原理、特性等。 ● 缓存进阶篇:讲一下缓存的实战场景,疑难问题的解决方案等。
167 0
|
存储 缓存 运维
常用缓存技巧
在项目中,大家经常会遇到处理高并发的情况,缓存是应对高并发的有效手段之一。这篇文章简单介绍一下常用的缓存手段。
|
存储 缓存 JSON
缓存的注意点
设计缓存的考虑
|
缓存 中间件
你真的懂缓存使用么?
在业务开发中我们经常会使用缓存来减少服务的响应rt,提升服务性能。除了先读缓存-miss后读DB-再写缓存的套路外,其实还有其他很多套路,本文将从使用模式、对数据一致性要求等方面为大家解释其中的细节。一、缓存模式1.1 Cache-aside该模式就是上文中提到的,也是大家用的最多的模式1.业务先读缓存,如果命中直接返回      2如果未命中,业务加载db数据放入缓存,然后返回1.2 Read-
431 0