![](https://img-blog.csdnimg.cn/69478ded1f1b4603ae9396e10c5b30aa.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Redis
文章平均质量分 58
Redis使用学习
世界尽头与你
一个懂安全的开发者
展开
-
一文详解Redis持久化的两种方案
RDB全称Redis Database Backup file(Redis数据备份文件),也被叫做Redis数据快照。简单来说就是把内存中的所有数据都记录到磁盘中。当Redis实例故障重启后,从磁盘读取快照文件,恢复数据。快照文件称为RDB文件,默认是保存在当前运行目录。原创 2023-02-16 14:22:10 · 1232 阅读 · 0 评论 -
【遇见青山】基于Redis BitMap实现签到功能案例
Redis中是利用string类型数据结构实现BitMap,因此最大上限是512M,转换为bit则是2^32个bit位。把每一个bit位对应当月的每一天,形成了映射关系。用0和1标示业务状态,这种思路就称为位图(BitMap)。我们按月来统计用户签到信息,签到记录为1,未签到则记录为0。原创 2023-02-15 22:25:05 · 294 阅读 · 0 评论 -
【遇见青山】基于Redis的Feed流实现案例
Feed流中的数据会不断更新,所以数据的角标也在变化,因此不能采用传统的分页模式,而要采用滚动分页,Redis数据结构中终于List和SortedSet支持分页,但List不支持滚动分页功能,所以Redis数据结构我们宜采用SortedSet!关注推送也叫做Feed流,直译为投喂。为用户持续的提供"沉浸式”的体验,通过无限下拉刷新获取新的信息。分析:实现滚动分页的方式。原创 2023-02-15 18:53:15 · 727 阅读 · 0 评论 -
Redis基于Stream的消息队列 - 消费者组模式
消费者组会维护一个标示,记录最后一个被处理的消息,哪怕消费者宕机重启,还会从标示之后读取消息。确保每一个消息都会被消费。消费者组(Consumer Group):将多个消费者划分到一个组中,监听同一个队列。队列中的消息会分流给组内的不同消费者,而不是重复消费,从而加快消息处理的速度。当处理完成后需要通过XACK来确认消息,标记消息为已处理,才会从。消费者获取消息后,消息处于。原创 2023-02-14 17:24:23 · 1034 阅读 · 0 评论 -
【遇见青山】项目改进:使用Redis +阻塞队列优化秒杀优惠券功能
使用Redis判断用户是否有抢券资格,要比直接接触数据库快50%左右,还能减小数据库的负载。异步执行下单任务的方法:(循环检测执行阻塞队列中的内容)这样子线程就能拿到主线程的代理对象了!注解,表示在项目初始化完毕之后即执行。原创 2023-02-14 15:54:49 · 267 阅读 · 0 评论 -
Redisson实现分布式锁快速入门
Redisson是Redis官方推荐的Java版的Redis客户端。它提供的功能非常多,也非常强大,在Java中主要用于Redis锁的实现工具类。原创 2023-02-13 21:22:23 · 482 阅读 · 0 评论 -
【遇见青山】项目难点:集群下的分布式锁问题
在《【遇见青山】项目难点:解决超卖问题》一文中,我们使用了方法解决了单机系统下的超卖问题,但是在集群的情况下,这种锁就会失效本质原因是集群状态下,不同的服务器的jvm不一致,由不同的锁监视器来控制锁的生成和释放,导致锁失效!依然会存在超卖问题,那么如何解决这个问题呢?这就需要用到分布式锁🔒了!原创 2023-02-13 11:40:58 · 406 阅读 · 0 评论 -
【遇见青山】项目难点:解决超卖问题
使用JMeter测试,发现多线程依然存在并发安全问题,但由于此时我们的目标是新增数据,新增数据无法使用乐观锁来实现,所以我们只得被迫使用悲观锁!这种方案会发生超卖问题,我们尝试使用CAS方法改进,来解决超卖问题。CAS方法要求我们在执行扣减库存的同时判断此时的库存数量是否大于0。这样可以完美解决超卖问题!原创 2023-02-12 15:46:48 · 598 阅读 · 1 评论 -
Redis工具类,持续完善中...
【代码】Redis工具类,持续完善中...原创 2023-02-11 22:03:48 · 179 阅读 · 0 评论 -
【遇见青山】项目难点:缓存击穿问题解决方案
缓存击穿问题也叫热点Key问题,就是一个被高并发访问并且缓存重建业务较复杂的key突然失效了,无数的请求访问会在瞬间给数据库带来巨大的冲击。需求:修改根据id查询商铺的业务,基于逻辑过期方式来解决缓存击穿问题。需求:修改根据id查询商铺的业务,基于互斥锁方式来解决缓存击穿问题。字段,代表逻辑过期时间(并非TTL值)原创 2023-02-11 17:56:09 · 508 阅读 · 0 评论 -
【遇见青山】项目难点:缓存雪崩问题解决方案
是指在同一时段大量的缓存key同时失效或者Redis服务宕机,导致大量请求到达数据库,带来巨大压力。原创 2023-02-11 15:30:01 · 129 阅读 · 0 评论 -
【遇见青山】项目难点:缓存穿透的解决方案
缓存穿透是指客户端请求的数据在缓存中和数据库中都不存在,这样缓存永远不会生效,这些请求都会打到数据库。(一般是指黑客的恶意流量攻击)值,再次查询时,则不通过数据库,直接在缓存层命中。测试:查询不存在的商户信息,Redis中保存了。在查询数据库之前,判断缓存的值是否为。原创 2023-02-11 12:19:59 · 195 阅读 · 0 评论 -
【遇见青山】项目难点:实现缓存与数据库的双写一致
数据库内容更新,Redis缓存中的此商户信息已被删除,下次查询时会再次进行缓存!首先需要基于事务进行,最终解决方案是先更新数据库的内容,再删除缓存。在数据更新时,如何保证缓存与数据库的双写一致呢?原创 2023-02-11 11:28:16 · 110 阅读 · 0 评论 -
SpringDataRedis快速入门
SpringData是Spring中数据操作的模块,包含对各种数据库的集成,其中对Redis的集成模块就叫做中提供了工具类,其中封装了各种对Redis的操作。原创 2023-02-09 20:25:12 · 510 阅读 · 0 评论 -
Java Redis客户端 - Jedis快速入门
Jedis本身是线程不安全的,并且频繁的创建和销毁连接会有性能损耗,因此我们推荐大家使用Jedis连接池代替Jedis的直连方式。原创 2023-02-09 17:12:13 · 213 阅读 · 0 评论 -
一文详解 Redis 常见数据类型
SortedSet中的每一个元素都带有一个score属性,可以基于score属性对元素排序,底层的实现是一个跳表(SkipList)加hash表。Redis支持五种基本数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。Hash类型,也叫散列,其value是一个无序字典,类似于到Java中的HashMap结构。Redis的SortedSet是一个可排序的set集合,与Java中的。Redis中的List类型与Java中的。原创 2023-02-09 16:24:32 · 521 阅读 · 0 评论 -
一文带你了解Redis通用命令
EXPIPE:给key设置一个有效期。TTL:查看某key剩余的有效期时间。key的有效期过就会自动删除。原创 2023-02-09 11:37:36 · 171 阅读 · 0 评论