1. 除了常见的redis/memcache等进程外缓存服务,缓存还有一种常见的玩法,进程内缓存,将一些数据缓存在站点,或者服务的进程内,这就是进程内缓存。redis
2. 进程内缓存的实现载体,最简单的,能够是一个带锁的Map。又或者,能够使用第三方库,例如leveldb数据库
3.与进程外缓存相比(例如redis/memcache),数据读取再也不须要访问后端,例如数据库,省去了网络开销,因此一来节省了内网带宽,二来响应时延会更低后端
4.一样是多节点统一存储,容易带来数据不一致的问题缓存
总结:网络
状况一,只读数据,能够考虑在进程启动时加载到内存。并发
画外音:此时也能够把数据加载到redis / memcache,进程外缓存服务也能解决这类问题。高并发
状况二,极其高并发的,若是透传后端压力极大的场景,能够考虑使用进程内缓存。进程
例如,秒杀业务,并发量极高,须要站点层挡住流量,能够使用内存缓存。内存
状况三,必定程度上容许数据不一致业务。秒杀
例如,有一些计数场景,运营场景,页面对数据一致性要求较低,能够考虑使用进程内页面缓存。
末了,再次强调,进程内缓存的适用场景并不如redis/memcache普遍,不要为了炫技而使用。
更多的时候,仍是老老实实使用redis/mc吧。