Redis应用梳理

Posted by ShiYu on 2018-10-23
应用 实现
简单限流 利用zset,score圈出时间窗口,统计时间窗口内同一个用户同一个行为出现的次数
漏斗限流 Redis-Cell,Redis4.0提供的限流模块,提供了原子的限流指令: cl.throttle key capacity actoin time quota
分布式锁 set key value ex time nx Redis2.8set支持指令扩展参数,setnx和expire可以原子执行,但是无法解决超时问题,如果想解决超时,需要使用Lua脚本保证命令执行原子性,先判断确实是执行完了再释放key
位图 setbit getbit,用来设置和获取指定位置值,bitcount统计指定范围内1的个数,bitpos查找指定范围内出现的第一个0或1,注意参数范围必须是8的倍数
HyperLogLog 提供不精确的去重技术方案,误差0.81%,提供pfadd和pfcound指令,该数据结构占用12k空间,不适合单用户数据统计,可以用来统计大型网站的UV
布隆过滤器 一个不精确的set结构,判断是否存在,可能会误判,但是判断不存在,一定是准确的,应用场景有:推荐系统,判断内容是否没有推荐给用户,redis4.0提供该插件,提供两个基本指令,bf.add和bf.exists
GeoHash Redis提供6个Geo指令,Geo指令内部实现实际是zset,score存储GeoHash的52位整数,value存储元素的key,geoadd 用于添加,geodlist用于计算两个元素之间距离,geopos用于获取坐标,geohash用于获取经纬度编码字符串,georadiusbymember查询指定元素附近的其它元素