
redis实战
文章平均质量分 78
PnJg?
这个作者很懒,什么都没留下…
展开
-
Redis实战案例及问题分析之-附近商铺(GEO数据结构)-用户签到(BitMap)-UV统计(HyperLogLog)
GEO就是Geolocation的简写形式,代表地理坐标。Redis在3.2版本中加入了对GEO的支持,允许存储地理坐标信息,帮助我们根据经纬度来检索数据。常见的命令有:GEOADD:添加一个地理空间信息,包含:经度(longitude)、纬度(latitude)、值(member)GEODIST:计算指定的两个点之间的距离并返回GEOHASH:将指定member的坐标转为hash字符串形式并返回GEOPOS:返回指定member的坐标GEORADIUS:指定圆心、半径,找到该圆内包含的所有member,并原创 2022-07-01 16:33:13 · 953 阅读 · 0 评论 -
Redis实战案例及问题分析之好友关注功能(关注、共同好友、消息推送)
利用redis实现好友模块的关注、共同关注、关注好友消息推送等功能原创 2022-06-30 23:02:15 · 1444 阅读 · 0 评论 -
Redis实战案例及问题分析之达人探店(获取博客内容、点赞、实现点赞排行榜-sortset)
达人探店功能是实现发布博客、获取博客内容、给大人点赞,并可以根据点赞时间顺序在排行榜中显示出点赞前五名,其中利用redis实现点赞用户的缓存,以及获取点赞排行榜。实现点赞功能需求:实现步骤 : 实现点赞排行榜需求:按照点赞时间先后排序,返回Top5的用户使用sortedset来代替set来实现点赞功能:将点赞的时间戳放入score,并且通过ZSCORE命令来判断是否已经点赞(没有点赞就没有对应的score值),通过ZRANGE可以排序,并且在排行榜中显示前五名......原创 2022-06-30 17:02:17 · 622 阅读 · 3 评论 -
Redis实战案例及问题分析之秒杀功能优化(异步下单、Redis消息队列)
原本的优惠券秒杀业务中,查询优惠券、查询订单、减库存、创建订单都是直接访问的MySQL数据库,其中减库存和创建订单是写操作,当高并发的时候会给数据库造成较大的压力。 在redis中:利用string结构保存优惠券的库存利用set集合(可以存多个值且不可重复)来实现一人一单功能: 同时利用lua脚本实现上述两个操作的原子性......原创 2022-06-29 22:45:24 · 1082 阅读 · 0 评论 -
Redis实战案例及问题分析——分布式锁(解决优惠券秒杀场景集群并发下的安全问题)
目录 分布式锁 基于redis实现分布式锁改进Redis的分布式锁上述的改进依然存在问题:上述改进后仍然存在的问题: ReidssonRedisson可重入锁原理Redisson的锁重试和WatchDog机制 分布式锁解决上述问题的方式总结Redisson分布式锁主从一致性问题 总结:1)不可重入Redis分布式锁:2)可重入的Redis分布式锁:3)Redisson的multiLock:集群下一人一单的线程并发安全问题:集群模式下用synchronized并不能解决并发安全问题......原创 2022-06-29 12:38:34 · 725 阅读 · 0 评论 -
Redis实战案例及问题分析之单机优惠券秒杀
当用户抢购时,就会生成订单并保存到tb_voucher_order这张表中,而订单表如果使用数据库自增ID就存在如下问题:全局ID生成器,是一种在分布式系统下用来生成全局唯一ID的工具,已满要满足以下特性:为了增加ID的安全性,我们不可以直接使用Redis自增数值,而是拼接一些其他信息 实现优惠券秒杀的下单功能下单需要判断两点: 优惠券秒杀超卖问题为什么会出现超卖问题?高并发的情况下,会出现访问量过大,同时拿到了库存大于1的数据,多个线程交叉执行,就会出现超卖问题。超卖问题是典型的多线程原创 2022-06-28 17:09:28 · 408 阅读 · 1 评论 -
封装redis工具类——缓存工具类
基于StringRedisTemplate封装一个缓存工具类,满足下列要求:方法1:将任意Java对象序列化为json并存储在string类型的key中,并且可以设置TTL时间方法2:将任意Java对象序列化为json并存储在string类型的key中,并且可以设置逻辑过期时间,用于处理缓存击穿问题方法3:根据指定的key查询缓存,并反序列化为指定类型。利用缓存空值解决缓存穿透问题方法4:根据指定的key查询缓存,并反序列化为指定类型,需要利用逻辑过期时间解决缓存击穿问题...原创 2022-06-27 20:35:54 · 446 阅读 · 0 评论 -
Redis实战案例及问题分析之redis解决商户缓存以及相应缓存问题解决方案(穿透、雪崩、击穿)
Redis实战案例及问题分析之redis解决商户缓存以及相应缓存问题解决方案(穿透、雪崩、击穿)原创 2022-06-27 17:25:04 · 1120 阅读 · 2 评论 -
Redis实战案例及问题分析之redis实现短信登陆
集群的session共享问题:多台tomcat并不共享session存储空间,当请求切换到不同tomcat服务时导致数据丢失的问题。session的替代方案应该满足:使用redis代替session:生成验证码之后,以手机号为key,验证码为value,类型为string存入redis。短信验证码登陆注册:以手机号码为key去redis读取验证码,校验是否一致,如果一致以随机生成的token为key,用户信息以hash类型为value存入redis数据库,并返回给客户端(一般是浏览器) 校验原创 2022-06-24 22:32:29 · 738 阅读 · 0 评论