云数据库Memcache版经典案例

更新时间:

本文为您介绍云数据库Memcache版经典案例。

黑名单

用云数据库Memcache版缓存网站的全部用户名单(黑名单+白名单),因为云数据库Memcache版存储价格低,可以采取空间换时间的策略,提高判断黑名单用户时的命中率,减轻数据库压力。

具体方法:

可以先将黑名单存入云数据库Memcache版,不在黑名单中的用户登录网站时,访问云数据库Memcache版未命中后会查询数据库中黑名单信息,此时查询结果也为空。随后将这个用户信息存为云数据库Memcache版的白名单用户,从而避免缓存击穿。

Key:Username Value:{Black/White, Other}

首页、头条缓存

对首页、新闻头条等更新相对不频繁的内容做缓存时,由于该类缓存的访问频率高但条目少,所以大量访问请求只会落到某几个key的读取上。在访问量非常大时,会造成响应时间延长甚至瘫痪。这类问题是无法通过扩展机器,负载均衡来解决的。

具体方法:

对高频访问的key建立副本,从而解决单一热点的高并发问题。

Key:Username1 Value:{Message}
Key:Username2 Value:{Message}
Key:Username3 Value:{Message}

接口访问频率控制

用来记录访问频率,限制高频访问的接口。

具体方法

通过使用云数据库Memcache版的自增函数public int incr(string $key [, int $offset = 1 [, int $initial_value = 0 [, int $expiry = 0 ]]])将调用的接口名称、用户名、当前时间拼成 key,value存访问次数,每次访问时调用incr进行自增,如未超过访问次数则允许访问该接口,超过访问次数则拒绝,从而实现对接口访问的频率控制。

Key:ApiName+User+Time Value: { count }
if (ocs.incr(key, 1, 1 , 10) > 100) {
Access Denied;
} else {
Pass;
}