
redis
文章平均质量分 75
我必进厂
这个作者很懒,什么都没留下…
展开
-
dp Redis消息队列
所谓解耦,举一个生活中的例子就是:快递员(生产者)把快递放到快递柜里边(Message Queue)去,我们(消费者)从快递柜里边去拿东西,这就是一个异步,如果耦合,那么这个快递员相当于直接把快递交给你,这事固然好,但是万一你不在家,那么快递员就会一直等你,这就浪费了快递员的时间,所以这种思想在我们日常开发中,是非常有必要的。注意:当我们指定起始ID为$时,代表读取最新的消息,如果我们处理一条消息的过程中,又有超过1条以上的消息到达队列,则下次获取时也只能获取到最新的一条,会出现漏读消息的问题。原创 2024-05-30 22:56:08 · 615 阅读 · 0 评论 -
dp秒杀优化
用jmeter测试1000个线程同时秒杀优惠券,优惠券数量为200,1000个线程为不同用户。测试结果平均时延为为497ms,性能较差。这是因为查询优惠券、查询订单、减库存、创建订单都需要查询数据库,且tomcat中串行执行的,因此会导致我们的程序执行的很慢。原创 2024-05-30 22:03:07 · 638 阅读 · 0 评论 -
dp分布式锁
线程1现在持有锁之后,在执行业务逻辑过程中,他正准备删除锁,而且已经走到了条件判断的过程中,比如他已经拿到了当前这把锁确实是属于他自己的,正准备删除锁,但是此时他的锁到期了,那么此时线程2进来,但是线程1他会接着往后执行,当他卡顿结束后,他直接就会执行删除锁那行代码,相当于条件判断并没有起到作用,这就是删锁时的原子性问题,之所以有这个问题,是因为线程1的拿锁,比锁,删锁,实际上并不是原子性的,我们要防止刚才的情况发生。= -1 则会进去抢锁,抢锁的逻辑就是之前说的那三个逻辑。原创 2024-05-28 09:43:39 · 2206 阅读 · 0 评论 -
dp秒杀优惠券
由于现在我们部署了多个tomcat,每个tomcat都有一个属于自己的jvm,那么假设在服务器A的tomcat内部,有两个线程,这两个线程由于使用的是同一份代码,那么他们的锁对象是同一个,是可以实现互斥的,但是如果现在是服务器B的tomcat内部,又有两个线程,但是他们的锁对象写的虽然和服务器A一样,但是锁对象却不是同一个,所以线程3和线程4可以实现互斥,但是却无法和线程1和线程2实现互斥,这就是 集群环境下,syn锁失效的原因,在这种情况下,我们就需要使用分布式锁来解决这个问题。原创 2024-05-28 09:42:01 · 4114 阅读 · 0 评论 -
dp商品缓存
缓存更新是redis为了节约内存而设计出来的一个东西,主要是因为内存数据宝贵,当我们向redis插入太多数据,此时就可能会导致缓存中的数据过多,所以redis会对部分数据进行更新,或者把他叫为淘汰更合适。redis自动进行,当redis内存达到咱们设定的max-memery的时候,会自动触发淘汰机制,淘汰掉一些不重要的数据(可以自己设置策略方式)当我们给redis设置了过期时间ttl之后,redis会将超时的数据进行删除,方便咱们继续使用缓存。商品类型缓存代码:(List类型)原创 2024-05-24 17:19:53 · 682 阅读 · 0 评论 -
hmdp-短信验证
用户将验证码和手机号进行输入,后台从session中拿到当前验证码,然后和用户输入的验证码进行校验,如果不一致,则无法通过校验,如果一致,则后台根据手机号查询用户,如果用户不存在,则为用户创建账号信息,保存到数据库,无论是否存在,都会将用户信息保存到session中,方便后续获得当前登录信息。所以咱们后来采用的方案都是基于redis来完成,我们把session换成redis,redis数据本身就是共享的,就可以避免session共享的问题了。2、session拷贝数据时,可能会出现延迟。原创 2024-05-24 17:18:28 · 907 阅读 · 1 评论 -
IDEA自带的数据库连不上dockers部署的mysql
之前有想到过是防火墙的问题,但是只针对3306端口进行了关闭,连接失败。问题:测试连接数据库时失败。原创 2024-05-15 15:01:37 · 1177 阅读 · 0 评论 -
resp无法连接redis服务器的解决方法
主要解决两个方面问题。1)linux端启动redis不成功;2)resp无法连接redis服务器;原创 2024-05-14 11:18:33 · 1494 阅读 · 1 评论