Fork me on GitHub

【Distributed】缓存技术

一、缓存概述

1.1 缓存技术分类

  • 1.客户端缓存

    • 页面缓存
    • 浏览器缓存
    • App客户端缓存
  • 2.网络缓存

    • 代理缓存
    • CDN缓存
  • 3.服务器缓存

    • 数据库缓存
    • 平台缓存级缓存
  • 4.缓存最终的目的是为减轻服务端压力,减少网络传输请求

1.2 缓存框架分类

  1. 单点缓存框架(只能针对于单个jvm中,缓存容器存放在jvm中,每个jvm互不影响,内置缓存框架,JVM缓存框架)
    • ache、gauva cache、oscache。
    • 其中eheache,2003生产,是以java语言写的,是在单个jvm中缓存框架。众多市面上很多java优秀的开源框架,mybats、 hibernate 底层中都使用呢ehcache。
  2. 以RMI方式可以支持分布式缓存。分布式缓存框架(共享缓存数据) 跨语言。
    • Redis、Menchache

1.3 Session理解的误区

  • Session 是存放在服务器端(保存在单个JVM中) , 返回Sessionid (响应头),客户端存放在Sessionid.下次请求的时候直接使用对应的Sessionid从服务器中查询对应的Session。
  • 分布式Session (Session共享的问题) --- 直接使用Token。
  • 如何写单个JVM缓存框架? Session Key value
  • Map过期时间基于Map集合实现Jvm缓存框架缓存是容器是存放在内存中,为了保证持久化机制,将缓存中的值持久化到硬盘上。(日志缓存文件格式。)。缓存框架都是支持对内存和硬盘支持。

二、基于Map集合实现本地缓存

2.1 定义Map缓存工具类

@Component
public class MapEhcaChe<K, V> {
  private Map<K, V> mapCaChe = new ConcurrentHashMap<K, V>();
    
    public void put(K k, V value) {
        mapCaChe.put(k, value);
    }

    public V get(K k) {
        return mapCaChe.get(k);
    }

    public void remove(K k) {
        mapCaChe.remove(k);
    }
}

2.2 使用案例

@RequestMapping("/put")
    public String put(String key, String value) {
        mapCaChe.put(key, value);
        return "success";
    }

    @RequestMapping("/get")
    public String get(String key) {
        String value = mapCaChe.get(key);
        return value;
    }

三、Ehcache 缓存框架

  【Ehcache】基础知识学习

四、分布式缓存Redies

 【Redis】基础学习概览

posted @ 2019-09-09 22:26  这个世界~  阅读(244)  评论(0编辑  收藏  举报