分布式session 本文介绍了session的工作原理及其在分布式环境下的解决方案。session数据存储于服务端,通过客户端的jsessionId进行访问,但默认情况下session不可跨域。为了实现session在不同服务或集群间的共享,提出了几种方案:直接将信息存入cookie中(存在安全风险和大小限制)、session复制(效率低且不推荐)、基于哈希一致性算法分配特定机器处理请求(远程调用问题难以解决)以及使用Redis作为统一存储介质(目前较为流行的解决方案)。每种方法都有其优缺点,在实际应用时需根据具体需求选择合适的策略。 2021-07-16 1299 0 java 总结 redis 分布式
SpringCache Spring从3.1版本开始引入了`Cache`和`CacheManager`接口来统一不同缓存技术,并支持JCache(JSR-107)注解以简化开发。`Cache`接口的实现包括`RedisCache`、`EhCacheCache`等。每次调用需要缓存的方法时,Spring会检查该方法是否已执行过,若存在结果则直接返回缓存中的数据;否则执行方法并将结果缓存后返回。 使用步骤如下: 1. 添加依赖:`spring-boot-starter-cache`。 2. 在配置文件中指定缓存类型(如Redis)及过期时间。 3. 编写配置类设置缓存序列化方式及其他属性。 4. 通过`@EnableCaching`启用缓存功能。 Spring Cache提供了多个注解如`@Cacheable`用于定义缓存、`@CachePut`更新缓存、`@CacheEvict`清除缓存等。此外,`@Caching`可以组合多种缓存操作。对于缓存问题,如穿透、击穿和雪崩,Spring提供了相应解决方案,例如缓存空值、加锁以及随机过期时间策略。针对读多写少且一致性要求不高的场景,Spring Cache是一个很好的选择。 2021-07-03 1891 0 java 总结 锁 springboot 分布式 微服务
分布式锁Redisson Redisson是一个在Redis的基础上实现的Java驻内存数据网格(In-Memory Data Grid)。它不仅提供了一系列的分布式的Java常用对象,还提供了许多分布式服务。其中包括(BitSet, Set, Multimap, SortedSet, Map, List, Queue, B 2021-07-02 1956 0 java 总结 锁 redis 分布式 微服务
本地缓存与分布式缓存 缓存在服务端编程当中,缓存主要是指将数据库的数据加载到内存中,之后对该数据的访问都在内存中完成,从而减少了对数据库的访问,解决了高并发场景中数据库容易成为性能瓶颈的问题;以及基于内存的访问速度高于磁盘的访问速度的原理(数据库读取数据一般需要从磁盘读取),提高了数据的访问速度和程序性能。本地缓存本地缓 2021-07-01 1193 0 java 总结 redis 分布式 微服务