memcache遍历策略

69 篇文章 1 订阅

mysql的内存引擎其实很好用,但是我担心并发大还是不行。


用memcache,不好遍历。我想了一个办法。


键分三种,

第1种,只有一个就是news_index_index,值的模样是逗号分隔的字符串或数组。

第2种,news_index_XXX,XXX是数字,长度不限,如果xxx=1200,则news_index_1200只能存120000-120099的新闻id,值的模样同上。

第3 种,news_XXX,XXX长度不限,就是新闻id,值就是点击量,int型


分3步,存,取,遍历(倍数为100)。



假设有一个item,key为news_index_index,值为如同1,2,4,44,这样的数据。


当一篇新闻的id例如12004,则除以100取整,得到120,


查询key=news_index_index
if (没有120) {
  在key=news_index_index的item 的值中添加120;
  添加news_index_120的item ,值为空。

}

查询key=news_index_120,查有无12004

 if (有12004) {

   key为news_12004   的item 的值加1;

}else {

  key=news_index_120,的item的值加上一个12004;

  添加一个item,key=news_12004,value=1

}







如果要id为333367的点击量,

则直接取key为 news_333367的item的值即可



遍历

当我要遍历所有在 memcache中的新闻id时,则有了上述机制后,太简单了,就不说了。

 

备注

另外,为防止数据过多,可以在半夜把点击量保存到数据库中,然后清除第2、3种键,并把第一个键的值清空。

 

2、为防止查询某键得到结果0,此时不知道是item存在值为0,还是item不存在,应避免使用值为0的item。

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值