分布式session 本文介绍了session的工作原理及其在分布式环境下的解决方案。session数据存储于服务端,通过客户端的jsessionId进行访问,但默认情况下session不可跨域。为了实现session在不同服务或集群间的共享,提出了几种方案:直接将信息存入cookie中(存在安全风险和大小限制)、session复制(效率低且不推荐)、基于哈希一致性算法分配特定机器处理请求(远程调用问题难以解决)以及使用Redis作为统一存储介质(目前较为流行的解决方案)。每种方法都有其优缺点,在实际应用时需根据具体需求选择合适的策略。 2021-07-16 1299 0 java 总结 redis 分布式
分布式锁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 分布式 微服务
lettuce堆外内存溢出bug 在进行压力测试时,可能会遇到堆外内存溢出(OutOfDirectMemoryError)的问题。这主要是由于Spring Boot 2.0之后默认使用的Redis客户端lettuce存在bug,导致Netty在处理网络通信时出现堆外内存溢出。Netty如果没有明确指定堆外内存大小,默认会使用Xms的值,可以通过设置-Dio.netty.maxDirectMemory来调整,但这不是根本解决办法。为了解决这一问题,建议升级Spring Boot版本或切换到使用Jedis作为Redis客户端。如果选择后者,需要在项目的依赖中排除lettuce-core,并添加jedis依赖。 2021-06-30 2135 0 java 问题 redis 分布式
Redis持久化 redis 提供了两种持久化的方式,分别是RDB(Redis DataBase)和AOF(Append Only File)。RDB,简而言之,就是在不同的时间点,将 redis 存储的数据生成快照并存储到磁盘等介质上;AOF,则是换了一个角度来实现持久化,那就是将 redis 执行过的所有写指令记 2021-05-25 1092 0 总结 redis