NutzCN Logo
问答 本系统的session缓存,update是怎么实现的?
发布于 2854天前 作者 javanan 2105 次浏览 复制 上一个帖子 下一个帖子
标签:

现在是用 ehcache+redis
A服务器登录,把缓存写到A服务器的ehcache+再写到redis
用户下次进去,进入B服务器, 从B 服务器获取ehcache获取session ,获取到了,返回,否则去redis,

是这样的吗?

如果是这样的,,
假设用户进入B服务器,更新了缓存,那么就是写更新B的ehcache,再更新redis,
而这时候用户进入A 服务器,那么这时候他先去A服务的ehcache,这时候获取到了session,就不去redis了,,
那么这时候session 就不是最新的了,,这个问题怎么解决呢?

17 回复

所以你需要插件里面的lcache了

lcache带更新广播,清除其他实例的一级缓存

lcache 是??
lcache带更新广播,清除其他实例的一级缓存 这个能具体一点吗?

@wendal 用了 redis 为什么还要加 ehcache呢?

@javanan nutzmore插件库里面有

你现在不是遇到b机器更新数据,a机器的ehcache没更新的问题吗?

@wendal
不是, 我是再看 这个怎么实现的。 在实现这个功能的时候, 遇到了这个问题。

@wendal 不是, 我是再看 这个怎么实现的。 在实现这个功能的时候, 遇到了这个问题。

核心逻辑就是, 每当需要写入数据,发起一个广播,让其他实例清除特定key的ehcache缓存

@wendal 那这种机制, 会不会存在,A服务更新后,广播还没到B服务器,用户已经访问B服务器的问题。

@javanan 延时在可承受的范围内就可以了哦

@wendal 那么服务器之间已经可以进行通信了,缓存能更新,保存,,,那么还要用redis干嘛呢? A服务器更新后,也更新到B 也可以吧?
加入redis 是为了保证 服务器挂了后, 从启还能从redis中获取到吗? 还是有其他原因?

@wendal lcache带更新广播 是 使用了 redis的 广播吗??

用redis的订阅发布

添加回复
请先登陆
回到顶部