memcached在轮询访问中的应用

本文探讨了一种基于用户ID的广告轮播方案,利用memcached实现跨服务器的用户广告位置跟踪,确保每位用户能按顺序浏览不同的广告内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这个想法来源于最近的一个项目需求,我先来说下需求吧,这个需求其实很简单:假设现在我有10个广告,他们显示顺序暂且定位顺序显示,就是1,2,3...10,那么用户1第一次访问看到第一个广告内容,第二次访问就看到第二个,用户2第一次访问看到第一个,第二次访问看到第二个,依次类推。
需求介绍完了,这个需求如何实现呢?一开始我想的很简单,用一个static类型的变量来保存用户每次访问的位置,即第一次访问这个变量就保存1的值,然后做++,下次来访问就是2了,访问到最后一个就重置到第一个,或者你用求余数的方法,无论如何处理,这样做是能够记录位置的,我已经在tomcat下做过测试,没问题。但是接着问题就来了,这样做无法区分用户,什么意思呢?用一个static变量来保存位置,虽然能够做到内存共享,但是不同用户取这个变量的值都是同一块内存空间,也就是说,如果我访问过一次,显示了第一个广告,下次你再访问就是直接看到第二个广告了。这样显然是不对的,而且这还是单服务器的情况下,如果是集群呢?10台服务器轮询,那怎么办?
现在就要说下memcached了,大家都知道,memcached的服务端可以配置到一台服务器上面来做缓存,如果有多台服务器轮询访问,相当于是多个client访问同一个server,这样利用memcached的特性,我能够把内存空间做到独立出来,用同一个内存区域来保存我要的对象。
那么针对这个需求的业务逻辑处理,我想的是我用用户的id来拼装key,用访问广告位置来做value,但是细节上面需要再完善,这样大体可以满足我一开始提的需求,这只是个想法,欢迎大家一起讨论。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值