1 -【 EhCache 】- 1 缓存简介

1 为什么要使用缓存

缓存的分类

  • 客户端缓存

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

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

    • 数据库缓存
    • 平台缓存级缓存

缓存最终的目的:是为减轻服务端压力,减少网络传输请求。

2 分布式 session 问题

session 是存放在服务器端的(保存在 单个 JVM 中),返回 sessionid(在响应头中),客户端存放 sessionid。当下次请求的时候,直接使用对应的 sessionid 从服务器中查询对应的 session

所以在分布式系统中,存在 session 共享的问题

推荐使用 token

2 基于 Map 集合实现本地缓存

2.1 定义 Map 缓存工具类

package com.snow.utils;

import org.springframework.stereotype.Component;

import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

/**
 * Map缓存工具类
 *
 * @param <K>
 * @param <V>
 */
@Component
public class MapCaChe<K, V> {

    // 存放缓存的容器
    private Map<K, V> caCheMap = new ConcurrentHashMap<K, V>();

    public void put(K k, V v) {
        caCheMap.put(k, v);
    }

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

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

2.2 使用

package com.snow.controller;

import com.snow.utils.MapCaChe;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class IndexController {

    @Autowired
    private MapCaChe<String, Object> mapCaChe;

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

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

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

}

测试:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3 缓存框架分类

  • 单点缓存框架(针对单个 JVM,缓存容器存放在 JVM 中,每个 JVM 互不影响):Ehcache
  • 分布式缓存框架:Redis

在这里插入图片描述

发布了687 篇原创文章 · 获赞 229 · 访问量 14万+

猜你喜欢

转载自blog.csdn.net/weixin_42112635/article/details/105115752
今日推荐