redis
文章平均质量分 92
切尔诺贝尔
学海无涯.....做了程序员之后有深刻的体会....
展开
-
redis-进程锁-分布式锁
文章目录需求背景解决过程1,通过redis的setnx解决2,通过set命令解决3,通过lua脚本参考链接 需求背景 服务端用的Python + gunicorn部署维护服务端程序时发现某些任务会多次下发 导致原因 原有程序单纯flask,所以对于数据库操作用了线程锁,但是加上gunicorn之后就没办法保证一致性了 解决过程 1,用redis做分布式锁,用setnx和expire,但是setnx(set if key not exist)和expire不是原子操作,所以改用set或者lua脚本原创 2020-08-22 11:57:01 · 443 阅读 · 0 评论 -
redis-布隆过滤器 和 hyperLogLog --》 去重操作相关
HyperLogLog 应用场景: 比如做单网站今日UV统计的时候,把每个用户都加到hyperloglog里面,最后直接统计hpyerloglog的数量就好了 特点 : 1,不会记录元素的内容 2,单个key提供去重计数统计,但是会有误差 优点 : 12 KB 内存,就可以计算接近 2^64 个不同元素 缺点 : 标准误差是:0.81% 实现原理:数学概率论 布隆过滤器 应用场景...原创 2019-11-12 19:25:47 · 315 阅读 · 0 评论 -
redis-限流相关-zset-Redis-Cell
简单的窗口限流操作,通过zset来实现 步骤 1,单个用户uid + 某个行为 作为redis中的key 2, 用毫秒时间戳做zset中的key和value 3,每次请求过来计算当前时间到往前推算n分钟/秒的请求 4,删除zset中关于n分钟前的数据 优点 1, 实现简单 缺点 2, 如果限制次数非常大,那么会消耗大量的储存空间 python 代码示例 def record...原创 2019-11-12 19:24:56 · 253 阅读 · 0 评论 -
redis-位图bitmap
起因 某某次去面试,和面试官聊得开心了,就说了《编程珠玑》,里面有一个用二进制来计算的案例 案例如下: 给定一个最多包含m=40亿个随机排列的n=32位整数的顺序文件,找出一个不在文件中的32位整数。在内存足够的情况下如何解决该问题?如果有几个外部的“临时文件“可用,但是仅有几百字节的内存,又该如何处理? 解决方案: 如果内存足够,把这批数据全部依次读出,数字是多少就标对应的二进制位 如...原创 2019-11-12 19:18:45 · 238 阅读 · 0 评论