缓存中间件对比
Session 和 Cookie 的区别:
cookie 数据存放在客户的浏览器上,session 数据放在服务器上。
cookie 不是很安全,别人可以分析存放在本地的 cookie 并进行 cookie 欺骗,考虑到安全应当使用 session。
session 会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用 cookie。
Session 和 Cache 的区别:
session 是单用户的会话状态。当用户访问网站时,产生一个 sessionid。并存在于 cookies 中。
每次向服务器请求时,发送这个 cookies,再从服务器中检索是否有这个 sessionid 保存的数据。
而 cache,则是服务器端的缓存,是所有用户都可以访问和共享的。
Application 和 Cache 的区别:
二者存储的变量的有效范围都是整个应用程序的生命周期。二者都可以存贮对象。
application 是在 asp 阶段使用的,后来升级到 .net 后,使用的是 cache,但为了向前兼容,依然保留了 application。
Memcached 与 Cache 的区别:
memcached 是一个缓存框架,是对 cache 的二次封装。
cache 是基本的会话(缓存)技术。
memcached 一个分布式的,cache 一般是单机。
Memcached 与 Memcache 的区别:
memcached 比 memcache 支持更多的 memcache 协议,大概也就是说 memcached 有更多的方法,比如 getMulti() 和 setMulti() 函数非常有用,但是 memcache 并不支持。
Memcached 与 Redis 的区别:
redis 和 memcached 都是基于内存的数据存储系统(在内存中存储数据,防止高并发影响数据库性能,减少数据库压力,提高查询速度……
memcached 只支持简单的 key-value 存储,仅用来缓存数据;
redis 不仅仅支持简单的 k/v 类型的数据,同时还提供 list,set,hash 等数据结构的存储。
memCached 不支持数据持久化,断电或重启后数据消失,但其稳定性是有保证的;
redis 支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。但是同时也会付出性能的代价。
redis 只支持单核,memcached 可以使用多核,所以平均每一个核上 redis 在存储小数据时比 memcached 性能更高。但是在100k以上的数据中,memcached 性能要高于 redis。
memcached 单个 key-value 大小有限,一个 value 最大只支持1MB,而 redis 最大支持1GB(memCached 可以修改最大内存,采用 LRU 算法)
应用场景
Memcached:动态系统中减轻数据库负载,提升性能;做缓存,适合多读少写,大数据量的情况。(如人人网大量查询用户信息、好友信息、文章信息等)
Redis:适用于对读写效率要求都很高,数据处理业务复杂和对安全性要求较高的系统。(如新浪微博的计数和微博发布部分系统,对数据安全性、读写要求都很高)
Redis
Redis 是C语言开发的一个开源的高性能键值对的内存数据库,可以用做数据库、缓存、消息中间件等,是一种 NoSQL(非关系型数据库)的数据库。
Redis 支持的数据类型:string、hash、list(列表)、set(集合)、zsetsorted set(有序集合)等…
Redis 缓存雪崩、击穿、穿透:
https://blog.csdn.net/qq_35190492/article/details/102889333
个人理解:
Redis主动删除:定期随机删除 + 惰性删除(查询时如果超期则删除,解决多次逃避随机删除)+ 内存淘汰策略(解决不查询的多次逃避随机删除)。
缓存雪崩应对:程序设置随机过期时间。
缓存击穿应对:同一ip访问次数限制。热点数据永不过期,更新操作就更新缓存。
缓存穿透应对:参数校验、布隆过滤器。
Redis 主从模式、哨兵模式、分片集群:
主从模式只实现了主从机数据同步,一旦主机宕机,将不再提供写服务,从机可提供读服务,在 redis 主机的 redis.conf 中有配置:slave-read-only yes,从机只读属性。而哨兵模式就解决了这个问题,哨兵模式的前提条件:就是主从模式,意思就是先有了主从模式,才能配置哨兵集群。在哨兵模式中,主机宕机以后(可手动模拟宕机,关闭redis主机服务),哨兵集群会在多个从机中,进行选举( raft 算法)一个从机当作 master,其余的从机就会继续以这个新选举的主机(从机)进行数据同步。并且,原 master 恢复后,不会夺取当前 master 位置,只能当作从机。哨兵模式可实现高可用、高性能。
高可用:从机会在主机宕机以后自动顶替。高性能:主写从读。
如何搭建主从模式:单机 Redis 复制多份,改成不同端口,执行命令。
Redis 能抗住 10w级 QPS 操作,所以一般系统不需要分片集群,设置主从模式 + 哨兵模式即可。
分片集群:把一份数据分为多份存储,数据量很大时考虑。
Redis集群之主从、哨兵、分片集群,SpringBoot整合Redis集群