redis和mysql的数据一致型
为了防止网络波动有数据不两个一起存 先存进mysql 从mysql里捞出数据存到Redis(新增|修改)(删除直接删 删完mysql返回大于一删Redis)(查就要反过来了 先Redis后mysql Redis为null查mysql,mysql也为null直接返回否则就是mysql有而Redis没有,这样的话写回从mysql到Redis)
Redis防止中文乱码
redis-cli --raw
ttl key
看看k的过期时间 默认-1永不过期
缓存穿透和缓存击穿
击穿(先击后穿)多线程前一秒查询带到护卫Redis还在 后一秒无了 那么所有的访问全去mysql里去了。。。。。。。
穿透 黑客入侵 每次查询key都不一样 Redis和mysql都顶不住 无了
避免缓存击穿(双重检查锁)
锁前和锁后进行判断
INCR & DECR
加一个减一个 后面跟着key (用于转发量啦 双击星星 点赞 踩。。。)
---------------------------------------------
哈希 : map《string,map》(手机端简易购物车)
list 双端链表 40多亿数据
用于(微信公众号订阅的消息、商品评论列表)
set
常用sdiff sinter sunion(a中b无的 a中b有的 大杂烩)
场景:微信抽奖 微信朋友圈 微博共同关注的人 关注的人也关注ta qq可能认识的人
zset
用于排行榜
点赞实战 给CPU降降温10W+直接开摆
抖音视频最新评论留言设计
排序 分页 高并发 )选吧 list zset
list可以做 但是有瑕疵 插入新的后移 水军霸榜
zset 案例使用Data.getTime()来作为k评论作为值 排序ZRANK&ZREVRANK从小到大和从大到小
以及ZRANKBYSCORE 给个范围 还能加 limit
bitmap(由0 1 状态表现的二进制位的bit数组) 用于签到等
使用string作为底层数据结构 偏移值下标从0开始
HyperLogLog基数统计(去重统计)
java去重可以把list作为hashset的构造参数传进去
bitmap准确但不适合亿级 hyperloglog牺牲准确率换取内存不直接存储数据本身 误差率大概0.81%
GEO
摇个妹子 最近酒店推送 存的是经纬度
布隆过滤器
防止缓存穿透 也有误差率 哈希碰撞 所以为了降低作者采用多种hash函数所以不能删除 因为总有hash碰撞发生 它底层看的是类似比特数组 三个为一可能存在 一个为零坑定不存在 你说说多个对象的触手占用同一个坑怎么删
对付缓存穿透
空缓存 (但黑客有可能每次k不一样)和布隆
存过的不会发生误判 没存过大概默认百分之3可调 空间换时间(瓜娃)
|