
redis
文章平均质量分 60
ADRU
这个作者很懒,什么都没留下…
展开
-
秒杀系统的业务流程以及优化方案(实现异步秒杀)
确定了我们可以将判断库存和检验一人一单业务抽取出来之后,我们在想一下 还能不能优化,这个时候我们会发现,这两个操作还是在数据库进行的,那么mysql的并发本身也是不高的,现在我们就要通过另一个性能更好的数据库进行实现,就是。首先我们要思考怎么对业务进行拆分,可以想象一个我们去饭店点餐,会有前台接待,询问订单,之后将小票传给后厨去做饭,这样就会快很多,也可以接待更多的客人。如果有下单资格就可以将用户id,优惠券id,和订单id存入一个阻塞队列里面,之后异步进行写入数据库操作。原创 2023-08-25 18:10:31 · 1561 阅读 · 0 评论 -
亲测可用!SpringBoot手动封装一个redis工具类解决缓存穿透、击穿
queryWithMutex可以解决缓存击穿,采用了逻辑删除的形式,采用开辟新线程去执行更新,执行期间可以读到旧值并返回给用户,实用性强,但是占用额外的内存,一致性较差,具体根据业务逻辑选择使用哪种方法。queryWithLogicalExpire可以解决缓存击穿,采用的是互斥锁的形式,与数据库一致性较强,每次都能够拿到最新的数据,但是更新数据需要用户等待。依次需要提供的参数为:缓存的key值,查找方法的参数,实体类,调用查找的方法,过期时间,过期时间单位。CacheClient类中封装了三个方法。原创 2023-08-05 16:41:26 · 186 阅读 · 0 评论 -
redis缓存雪崩和缓存击穿
突然失效了,无数的请求访问会在瞬间给数据库带来巨大的冲击。服务宕机,导致大量请求到达数据库,带来巨大压力。使用互斥锁的形式解决缓存击穿。给缓存业务添加降级限流策略。是指在同一时段大量的缓存。线程需要等待,性能受影响。线程无需等待,性能较好。集群提高服务的可用性。原创 2023-08-05 14:28:21 · 594 阅读 · 0 评论 -
详解redis的缓存穿透解决策略(含代码样例)
是指客户端请求的数据在缓存中和数据库中都不存在,这样缓存永远不会生效,这些请求都会打到数据库。用户请求的数据在缓存中和数据库中都不存在,不断发起这样的请求,给数据库带来巨大压力。优点:内存占用较少,没有多余。缓存穿透产生的原因是什么?缓存穿透的解决方案有哪些?优点:实现简单,维护方便。采用缓存空值解决缓存穿透。做好数据的基础格式校验。可能造成短期的不一致。的复杂度,避免被猜测。原创 2023-08-05 10:29:12 · 190 阅读 · 0 评论 -
redis的缓存更新策略
超时剔除(TTL,Time To Live):在向Redis存储数据时,可以为每个键设置一个过期时间。内存淘汰(Eviction)策略:Redis在内存不足时,会根据预设的策略选择一些键进行淘汰,释放内存空间。主动更新:当你在操作数据库时,同时对Redis进行操作,以保持数据的一致性。一定要先操作数据库,再删除缓存,如果先删除缓存,再操作数据库在多线程的情况下,会导致缓存拿到数据库旧的数据。更新缓存:每次更新数据库都更新缓存,无效写操作较多(不建议采用)删除缓存:更新数据库时让缓存失效,查询时再更新缓存。原创 2023-08-05 02:27:15 · 1065 阅读 · 0 评论 -
SpringBoot使用redis作为缓存的实例
缓存就是数据交换的缓冲区(称作Cachekæʃ),是存贮数据的临时地方,一般读写性能较高。 缓存的作用? 降低后端负载 提高读写效率,降低响应时间 缓存的成本? 数据一致性成本(多了一份缓存中的数据) 代码维护成本(代码复杂度上升) 运维成本(会有缓存雪崩等一系列问题)原创 2023-08-04 17:17:19 · 1257 阅读 · 0 评论 -
redis的常用命令和数据结构
最常用的八种结构类型,其中GEO是存放的经纬度地理坐标,BitMap和HyperLog都是按位存储的结构。比如添加一个key为name,值为jack 就输入下面的命令。key一般都是String类型的,但是value种类多种多样。键值型,value支持多种不同的数据结构,功能丰富。低延迟,速快(基于内存,IO多路复用,良好的编码)查询所有以n开头的 KEYS n*同样可以查找一个或者多个key。单线程,每个命令具备原子性。支持主从集群、分片集群。原创 2023-07-20 20:05:05 · 119 阅读 · 0 评论 -
什么是SQL和NoSQL?
与关系型数据库不同,NoSQL数据库通常以文档、键值对、列族或图形等非结构化的方式存储数据。关系型数据库以表格的形式存储数据,表格由行和列组成。常见的关系型数据库包括MySQL、Oracle、SQL Server等。各种数据库之间的查询语法都是SQL语句,统一使用SQL语法。比如redis就是典型的非结构化数据库,它是一种键值型数据库。数据与数据之间是有关系的,表之间是可以通过外键连接起来的。表的结构在创建的时候就指定好的,包括数据类型也是确定的。,比如下面的这些数据库之间做查询都是不一样的。原创 2023-07-20 16:21:02 · 383 阅读 · 0 评论