(五)Redis在项目中应用

参考:

1. redis实现分布式锁

参考:

127.0.0.1:6379> set distributeKey requestId ex 10 nx
OK
127.0.0.1:6379> get distributeKey
"requestId"
127.0.0.1:6379> del distributeKey
(integer) 1
127.0.0.1:6379> get distributeKey
(nil)
127.0.0.1:6379> set distributeKey requestId ex 10 nx
OK
127.0.0.1:6379> set distributeKey requestId_1 ex 10 nx
(nil)
127.0.0.1:6379> get distributeKey
"requestId"
127.0.0.1:6379> 

2. 订单或任务缓存

127.0.0.1:6379> lpush face "{url:http://**.jpg,roi:{x:0,y:0,w:1,h:1}}"
(integer) 1
127.0.0.1:6379> lpush face "{url:http://**1.jpg,roi:{x:0,y:0,w:1,h:1}}"
(integer) 2
127.0.0.1:6379> lrange face 0 -1
1) "{url:http://**1.jpg,roi:{x:0,y:0,w:1,h:1}}"
2) "{url:http://**.jpg,roi:{x:0,y:0,w:1,h:1}}"
127.0.0.1:6379> 

3. Redis和DB数据一致性

只要有多份数据,就会涉及到数据一致性的问题。
更新缓存步骤:

  1. 更新DB;
  2. 更新Redis;
  3. 更新Redis失败,出现数据不一致:
    • 重试n次;
    • 更新操作插入MQ,后台继续更新;

4. 大并发Redis穿透直接访问DB

使用连接池,限制访问DB并发数。

5. 接口限流器

参考:

posted @ 2018-12-20 14:52  yvhqbat  阅读(362)  评论(0编辑  收藏  举报