首页 > 系统相关 >本地内存和分布式缓存(面试)

本地内存和分布式缓存(面试)

时间:2024-09-12 18:53:21浏览次数:3  
标签:缓存 本地 Redis 线程 内存 应用 分布式

本地缓存和分布式缓存

本地缓存缓存组件和应用在同一进程中。但各应用都需要维护单独的缓存,无法共享缓存
分布式缓存:缓存组件和应用分离,不在同一进程,多个应用可直接共享缓存。
本地缓存的实现

  • 缓存一般是一种key-value的键值对数据结构
  • 与此同时,本地缓存由于需要被并发读写,需要保证线程安全。由于 HashMap 不是线程安全的,而 ConcurrentHashMap 是线程安全的,一般使用 ConcurrentHashMap 实现 Java 编程中的本地缓存
    分布式缓存的实现:
    Redis和MemCached,但Redis优于MenCached,一般使用Redis
  • Redis 有着丰富的key-value 键值对的数据结构,如 Set 集合去重、有序集合 ZSet 实现数据排序等。
  • Redis 是单线程的,不存在高并发下线程安全问题,以及保证数据读写操作的顺序性
  • Redis 支持主从同步(读写分离)、集群分片拓展、数据持久化等特性,这也是 MemCached 不支持的

本地缓存和分布式缓存的优缺点

本地缓存的优缺点

  1. 访问速度快,但无法进行大数据存储
  2. 数据随应用进程的重启而丢失
    本地缓存的数据是存储在应用进程的内存空间的,所以当应用进程重启时,本地缓存的数据会丢失
    分布式缓存的优缺点
  3. 数据需要跨网络传输,性能较低.
  4. 支持大数据量存储,不受应用进程重启影响
    分布式缓存由于拥有自身独立的内存空间。应用进程重启后,分布式缓存的数据依然存在

标签:缓存,本地,Redis,线程,内存,应用,分布式
From: https://blog.csdn.net/kiku1002149488/article/details/142151609

相关文章

  • 浅析 MyBatis 中的连接池和缓存
    文章目录一、MyBatis简介二、连接池1.连接池的作用2.MyBatis中的连接池实现3.连接池的参数配置三、缓存1.缓存的作用2.MyBatis的一级缓存3.MyBatis的二级缓存4.缓存的刷新和清空四、总结在使用MyBatis进行Java应用开发时,连接池和缓存是两个非常重要......
  • c语言--整数和浮点数在内存中的存储
    一整数在内存中的存储1.1源码反码补码整数的2进制表⽰⽅法有三种,即原码、反码和补码。有符号的整数,三种表⽰⽅法均有符号位和数值位两部分,符号位都是⽤0表⽰“正”,⽤1表⽰“负”,最⾼位的⼀位是被当做符号位,剩余的都是数值位。正整数的原、反、补码都相同。负整数的三种......
  • C 语言内存管理语法全解析(malloc、calloc、free)
    目录一、引言二、动态内存分配1.malloc函数2.calloc函数 3.realloc函数 三、内存释放 1.free函数 2.内存泄漏的避免四、内存管理的最佳实践1.检查内存分配的返回值2.避免内存访问越界  3.释放内存的顺序4.使用内存管理工具五、总结 一、引言   ......
  • C语言进阶【3】---C语言内存函数
    本章概述本章函数概述memcpy使用和模拟memmove使用和模拟memset函数的使用memcmp函数的使用彩蛋时刻!!!本章函数概述我们在本章的博客中讲的内容是有关内存的操作,我们直接通过内存块对数据进行操作。因为我们是直接对内存块操作,所以可以对任意类型数据进行操作(我们没......
  • vue3 h5自定义tabbar并用keep-alive保存缓存路由
            路由嵌套封装tabbar组件创建一个容器放tabbar和子路由keep-alive保存路由状态1.路由嵌套{ path:'/', name:'index', component:()=>import('@/views/index.vue'), children:[ { path:'', redirect:'/com', m......
  • pbootcms模板自动清理runtime缓存
    //自动会话清理脚本publicfunctionclean_session(){check_dir(RUN_PATH.'/archive',true);$data=json_decode(trim(substr(file_get_contents(RUN_PATH.'/archive/session_ticket.php'),15)));if($data->expire_time&&$......
  • 清理C盘缓存,清理C盘缓存的详细方法步骤
    清理C盘缓存是优化Windows系统性能的重要步骤之一。以下是一些详细的方法来清理C盘缓存:一、使用Windows内置工具磁盘清理打开磁盘清理:通过文件资源管理器右键点击C盘,选择“属性”,然后点击“磁盘清理”。或者在“设置”中选择“系统”>“存储”,查看C盘的存储使用情况,并点......
  • 清理C盘缓存,怎么清理电脑C盘缓存垃圾
    清理C盘缓存是维护Windows系统性能和释放存储空间的重要步骤。以下是详细的清理C盘缓存的步骤:一、使用Windows内置工具磁盘清理步骤:1.打开磁盘清理:方法一:在文件资源管理器中,右键点击C盘(通常是系统盘),选择“属性”,然后在弹出的窗口中点击“磁盘清理”。方法二:通过“设置”进......
  • 不使用Redis分布式锁,如何避免用户重复点击提交?
    前端,在用户点击后,对按钮做置灰操作。但有些情况,用户会绕过置灰,实现重复点击。后端,对客户端携带的token,验证是否使用过;验证逻辑,存储在数据库中,验证逻辑使用悲观锁或者乐观锁实现。前端按钮置灰前端按钮置灰:在用户点击按钮后,将按钮禁用一段时间或直到请求响应。优点:简......
  • 【项目实战】NIO 与 直接内存 (Direct Memory),由JVM直接管理,而不是通过垃圾回收器来管
    一、技术概览1.1定义直接内存,DirectMemory。直接内存,是指位于Java堆外的一块内存区域。直接内存,由JVM直接管理,而不是通过垃圾回收器来管理。直接内存,可以通过Java的ByteBuffer.allocateDirect()方法创建。直接内存,可以提高数据传输效率,特别是当数据需要频繁地在网络......