-
常用数据类型11111
查看全部 -
与memcache对比
查看全部 -
PHP
课程介绍
> 认识Redis的本质:设计目标,应用场景
>理解Redis的工作模式
>认识Redis计数器
>如何用Redis计数器实现并发场景下的数量控制
查看全部 -
课程总结
Redis 的本质
Redis 的工作模式
用 Redis:实现计数器
用 Redis 计数器实现并发场景下的数量控制
查看全部 -
数量控制器 v2
查看全部 -
数量控制器 v1
并发场景:客户端 A、B 同时访问数量控制器
问题 1:
A 先执行 incrby,然后 B 执行 set,数据不一致
问题 2:
假定限量 100,A、B 同时读到当前数量为 99,A、B 执行完 incrby 后,总量为 101,超限了
查看全部 -
Redis 计数器
频率控制:接口防刷,密码尝试次数限制。
数量统计:请求量统计。
数量控制:商品抢购,奖励额度控制。
查看全部 -
Redis 常用数据类型
STRING 字符串。整数型字符串
HASH 哈希。PHP 关联数组,Python 字典
LIST 列表。Python 元组
SET 集合。集合中的元素唯一
ZSET 有序集合。元素有分值,用于排序
Redis 的数据类型如此丰富,如果仅仅当作缓存来用,确实是“杀鸡焉用牛刀”。Memcache 更合适。
查看全部 -
Redis 优缺点
优点:无需处理并发问题,降低系统复杂度
缺点:不适合缓存大尺寸对象(超过 100KB)(为什么?)
查看全部 -
Redis 的工作模式
单进程 单进程 单进程(重要的事情说三遍!!!)
阻塞式
Redis 在同一时刻只能处理一个请求,后来的请求需要排队等待!
查看全部 -
Redis 与 Memcache 对比
Memcache 是内存对象缓存系统,设计目标为通过缓解数据库的压力来加快 web 应用的响应速度
Redis 应用场景更丰富,Memcache 仅适合作为缓存使用
查看全部 -
Redis 是什么
缓存
数据库
消息代理
查看全部 -
课程介绍
认识 Redis 的本质:设计目标,应用场景
理解 Redis 的工作模式
认识 Redis 计数器
如何用 Redis 计数器实现并发场景下的数量控制
查看全部 -
并发场景下数量控制
查看全部 -
v1
function v1() {
$amountLimit = 100;
// ...
}
查看全部 -
PHP function
查看全部 -
Linux Redis PHP Nginx
查看全部 -
setnx = set not exists
先计算,后判断
查看全部 -
并发请求,导致数据不一致问题
set 可能会出现覆盖
先判断,后计算,计算错误
查看全部 -
流程图 抽奖
微信抢红包,金额随机分配逻辑
查看全部 -
数量控制
商品抢购
抽奖
抢红包
查看全部 -
超时时间 30s
```sh
127.0.0.1:6379> expire test2 30
(integer) 1
127.0.0.1:6379> ttl test2
(integer) 23
127.0.0.1:6379> ttl test2
(integer) 21
127.0.0.1:6379> ttl test2
(integer) 17
127.0.0.1:6379> ttl test2
(integer) 14
127.0.0.1:6379> ttl test2
(integer) 12
127.0.0.1:6379> ttl test2
(integer) 8
127.0.0.1:6379> ttl test2
(integer) 6
127.0.0.1:6379> ttl test2
(integer) 3
127.0.0.1:6379> ttl test2
(integer) -2
127.0.0.1:6379> ttl test2
(integer) -2
127.0.0.1:6379> exists test2
(integer) 0
127.0.0.1:6379>
```
查看全部 -
setnx 判断是否存在,不存在才会set,防止错误的覆盖
```sh
127.0.0.1:6379> get test
"6"
127.0.0.1:6379> setnx test 2020
(integer) 0
127.0.0.1:6379> setnx test2 2020
(integer) 1
127.0.0.1:6379> get test
"6"
127.0.0.1:6379> get test2
"2020"
127.0.0.1:6379>
127.0.0.1:6379> set test2 77
OK
127.0.0.1:6379> get test2
"77"
```
查看全部 -
```sh
➜ ~ redis-cli
127.0.0.1:6379> exists test
(integer) 0
127.0.0.1:6379> set test 3
OK
127.0.0.1:6379> get test
"3"
127.0.0.1:6379> incr test
(integer) 4
127.0.0.1:6379> get test
"4"
(integer) 3
127.0.0.1:6379> incrby test 3
(integer) 7
127.0.0.1:6379> get test
"7"
127.0.0.1:6379> incrby test -1
(integer) 6
127.0.0.1:6379> get test
"6"
127.0.0.1:6379>
```
查看全部 -
redis 应用场景
频率限制, 计数器 key ip value time
数量控制
数量统计
查看全部 -
Memcache
查看全部 -
redis 数据类型 string hash list set zset 有序集合
查看全部 -
Redis big key
对象大小 小于100KB
list 元素个数小于 10 万个为什么redis 不适合存储大key对象
查看全部
举报