redisson分布式锁原理学习笔记整理

整理完毕的笔记,收获很大 视频 https://www.bilibili.com/video/av667586995/ 提交订单 1. Redis里查库存-库存充足-扣减成功-更新库存 并发测试三单,从50变成49(其实为47),库存会超卖 2. synchroinzed(productID) 上锁 单机可以,多机器就拉倒了 synchroinzed JVM级别的锁 3. 分布式锁 锁标记productID,多方机器共享锁标记 More


电商秒杀系统设计

秒杀活动对稀缺或者特价的商品进行定时定量售卖,吸引成大量的消费者进行抢购,但又只有少部分消费者可以下单成功。因此,秒杀活动将在较短时间内产生比平时大数十倍,上百倍的页面访问流量和下单请求流量。 秒杀活动可以分为3个阶段: 秒杀前:用户不断刷新商品详情页,页面请求达到瞬时峰值。 秒杀开始:用户点击秒杀按钮,下单请求达到瞬时峰 More


redis的分布式锁实现

总结: 单机互斥锁 1. SET KEY Value PX milliseconds NX SET 商品ID 线程ID PX 30000 NX 1.PX 防止锁过期,NX互斥 2.线程ID 记录下来,作为唯一值 3.释放锁验证value,不能让别人的线程,解了别人的锁。 2. 集群锁 RedLock 假设集群5个节点 P1.获取当前Unix时间,毫秒为单位 P2.依次从5台机器,相同的KEY 和 唯一性的Value请求锁,为每 More


REDIS缓存穿透,缓存击穿,缓存雪崩

REDIS缓存穿透,缓存击穿,缓存雪崩原因+解决方案 缓存穿透:程序绕过缓存,不停的查询数据库 key对应的数据在数据源并不存在,每次针对此key的请求从缓存获取不到,请求都会到数据源,从而可能压垮数据源。比如用一个不存在的用户id获取用户信息,不论缓存还是数据库都没有,若黑客利用此漏洞进行攻击可能压垮数据库。 举例子:查询id=-1 这条数据库不 More


订单过期30分钟,不支付自动取消方案

订单过期30分钟,不支付自动取消方案 1. 扫描数据库 最简单,粗暴的办法。开个任务,每3分钟扫描一次数据库 select orderid from table where .... 服务器开启crontab 定时扫描 优点:容易实现,支持集群服务 缺点: 1. 服务器消耗大 2. 存在延迟,并不是精确的3分钟 3. 如果订单量很大,比如1000万条没有付款,数据库压力很大 2. JDK延迟 More


借助redis实现快速排序

背景:电商的产品数据来自不同的数据库,比如商品ID和名字,价格来自商品表,而订单量来自订单表,收藏来自收藏表,浏览数据来自浏览表。不同的表数据需要组合在一起各种排序,如果建立一个大的MYSQL就发现MYSQL的作用仅仅是一个临时排序用的。 所以就想到了Redis Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。 不同的是每个元素都 More


攻击者正在利用你的Redis服务器吗?

月小升的博客用了redis加速,防止被攻击,直接把外部端口封死了,本地玩自己的。不过如果redis集群,那么必须开放端口了。好一点的做法是内网集群,只开放局域网IP端口,公网,太危险了。 今年早些时候,安全研究人员警告说,Apache Solr、Redis和Windows服务器可能受到加密器的攻击。 Imperva现在说,现在有太多面向互联网的Redis服务器,其中75%的服 More


redis缓存wordpress

月小升研究完毕静态缓存,立即改了一套redis,这内存数据库的速度就是惊人 在java-er.com wordpress根目录建立文件cacheredis.php内容如下 首页index.php头部进行调用 require('cacheredis.php');


php安装redis扩展

前言:php安装redis扩展有很多办法,自己下载,编译,但是最简单得办法是利用apache的pecl 直接去github下载安装 https://github.com/phpredis/phpredis/ 省事的办法 http://pecl.php.net/package/redis cd /Applications/XAMPP/bin sudo ./pecl install redis 安装redis的过程中,会提示询问两个问题,默认答案是no,直接回车即 More


redis操作命令大全

一、key pattern 查询相应的key   (1)redis允许模糊查询key  有3个通配符 *、?、[]   (2)randomkey:返回随机key     (3)type key:返回key存储的类型   (4)exists key:判断某个key是否存在   (5)del key:删除key   (6)rename key newkey:改名   (7)renamenx key newkey:如果newkey不存在则修改成功   (8)move key 1:将ke More