全部产品
云市场

云数据库 Memcache 版经典案例

更新时间:2017-06-07 13:26:11

黑名单

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

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

  1. 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 进行自增,如未超过访问次数则允许访问该接口,超过访问次数则拒绝,从而实现对接口访问的频率控制。

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