`
goodscript
  • 浏览: 73462 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

memcached问题备忘

 
阅读更多
应用场景:
用户对象列表数据查询频率很高、需要把用户对象列表保存到缓存中。每次查询的时候无需再查询数据减轻数据库的压力

Memcached实现缓存列表对象:
假如列表对象很大、把整个列表对象作为一个大对象来缓存的话、每次获取的时候都要获取一个大对象、很浪费资源。
所以把列表对象分解成为多个对象来保存

缓存列表对象的步骤:
1、 封装列表对象:把用户对象ID列表缓存到列表对象中,用户对象ID指向用户对象
2、 以ID为key分别缓存用户对象保存到缓存中
3、 缓存对象经过分布式策略分别保存在不同的memcached服务中




获取用户对象列表的时候:获取用户对象ID列表、再根据ID逐个获取用户对象。
现在问题来了:
假如有一台memcached服务器down掉了。
1、 当我们根据用户对象ID列表来获取对象信息的时候可能就有一部分的对象是无法获取。
解决的方法一、根据用户对象ID打开一个数据库连接查询数据库、把对象数据补充到缓存中
好处:保证了数据的完整性、逐步恢复缓存数据
缺点:真正的应用中可能一台memcached服务里面保存有几百万甚至几千万条类似用户对象这样的对象。这样每个对象打开一次数据库连接就需要打开几百万次数据库连接甚至几千万次数据库连接。
解决方法二、当发现从缓存中获取对象列表的数据不完整、放弃缓存获取对象列表,直接从数据库获取、启动一个线程补充缓存中的用户对象
以上的解决方法都觉得不是很好、备忘一下
  • 大小: 38.1 KB
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    Hibernate 备忘

    还可以集成第三方缓存系统,如 EhCache 或 Memcached。 9. **延迟加载(Lazy Loading)** Hibernate 提供了懒加载机制,当对象的某个关联属性未在初始加载时加载,而是在需要时才去数据库中获取。这有助于减少不必...

    2018校招12家企业笔试真题汇总 十分全面

    3. 行为型模式:观察者、模板方法、策略、职责链、命令、解释器、迭代器、备忘录、状态、访问者模式等。 四、算法与数据结构 在面试中,算法和数据结构的考察是非常重要的一环: 1. 排序算法:冒泡、选择、插入、...

    JAVA架构师课程+面试资料 2.zip

    熟练掌握常见的23种设计模式,如单例、工厂、建造者、观察者、适配器、装饰器、代理、桥接、责任链、命令、状态、策略、模板方法、迭代器、访问者、享元、备忘录、组合、外观等,它们是解决软件设计问题的通用解决...

    C#\企业面试题汇总

    2. **优化100万条记录的查询**:可以考虑建立合适的索引、分页查询、减少JOIN操作、使用存储过程、数据分区、内存缓存(如Redis或Memcached)等策略来提升查询效率。 3. **string与StringBuilder的区别**:string是...

    java 面试葵花宝典

    这本书旨在帮助Java程序员在求职过程中更好地理解和应对各种面试问题,提升自己的竞争力。 1. **Java基础知识** - 类与对象:深入理解面向对象特性,如封装、继承、多态。 - 内存管理:垃圾回收机制,JVM内存模型...

    architect-awesome-java:《后端架构师技术图谱》java实现

    《后端架构师技术图谱》是针对Java开发者的一份全面指南,旨在帮助他们提升到后端...通过深入学习和实践这些内容,开发者可以逐步构建自己的技术体系,提升解决问题的能力,为成为一名优秀的后端架构师打下坚实基础。

Global site tag (gtag.js) - Google Analytics