开发者社区> 问答> 正文

云数据库 Memcache 版经典案例

云栖大讲堂 2017-11-02 14:58:16 961


黑名单


用云数据库 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;
}

存储 缓存 负载均衡 数据库 Memcache
分享到
取消 提交回答
全部回答(0)
+ 订阅

分享数据库前沿,解构实战干货,推动数据库技术变革

推荐文章
相似问题
推荐课程