几大缓存在实际场景中的应用

    缓存相信作为it工作者来说,都不陌生,那么我今天就来讲讲java中的几大缓存技术:

1:分布式memcache:一款开源的高性能分布式内存对象缓存系统,采用key-value形式存储和访问数据,在内存中维护一张巨大的hashtable,并会使用LRU(last recently used)算法来保证对最近不常访问的数据进行清除,

   (1):使用:由于memcache使用了libevent进行高效的网络连接处理,所以在安装之前,要安装libevent,安装好后,启动memcache

   (2):API:初始化SockIOPool pool = SockIOPool.getInstance();然后给pool进行一些配置,具体配置请百度,这里不写了,然后pool.initialize()进行初始化,设置缓存的值:MemcacheClient client = new MemcacheClient (),client.set("key",1);

    (3):memcache本身不是一个分布式缓存系统,它的分布式是由访问他的客户端来实现的,实现方式就是根据缓存的key来进行hash,当后端有n台服务器时,访问的服务器为hash(key)%N,将前端的请求均衡的映射到后端的缓存服务器,这样也会存在一个问题,一旦后端服务器宕机,或者是由于集群压力过大,需要新增缓存服务器时,大部分的key将会重新分布,对于高并发系统来说,,所有请求将会涌向数据库,导致数据库瘫痪,造成整个系统的不可用,形成雪崩效应;

  2:分布式session:

       对于大型网站而言,支撑业务的不止是一台服务器,而是一个分布式集群,那么请求在不同服务器之间跳转,如何保证session同步呢?第一,就是将session存储到数据库中,可以保证宕机时session不会丢,但是这样却增加了数据的压力,对系统整体吞吐收到影响;第二:将session统一存储到缓存集群中,如memcache,这样可以保证安全性,较高的读写性能,缺点是一旦缓存重启,session将会丢失,需要客户重新建立会话,将sessionid作为key保存 在后端的缓存集群中,使得不管后端服务器宕机,也不会影响webserver通过sessionid从cacheserver中取出session,,memcached-session-manager是高可用的tomcat session共享解决方案,支持Sticky模式和Nonsticky模式,sticky也就是粘性session,表示每次请求都会映射到同一台服务器,这样可以先将session缓存到本地,然后等请求结束后同步到后端memcache服务器,non-sticky模式就是分布session,每次请求的服务器都是不确定的,请求来时,从缓存中读取session,请求处理完成后,将session写回到memcache中

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值