Redis
CV大魔王
再微小的光也是光,再平凡的人也有他们人生当中的高光时刻,记录学习的一点一滴,相信美好的事情即将发生。
展开
-
Redis数据结构Bitmap实战之用户签到
前言bitmap就是通过最小的单位bit来进行0或者1的设置,表示某个元素对应的值或者状态。一个bit的值,或者是0,或者是1;也就是说一个bit能存储的最多信息是2。换句话来说它的优势是占用空间小、处理速度快业务分析我们可以设置Redis的key为user:sign:customerId:yyyyMM 那么可推出如下命令说明:签到天数从0开始,倒数第二位是偏移量代表天数,最后一位1代表已签到第一天签到:setbit user:sign:1001:202203 0 1第二天签到:setb原创 2022-03-02 16:31:06 · 1119 阅读 · 0 评论 -
Redis数据结构Set实战之支付宝天天抽奖
因为支付宝的奖品有限,不能重复抽,故抽奖完后,必须从集合中剔除中奖的人。再举个每个人都参与过的例子,年会抽奖,你公司1000人,年会抽奖3等奖500名100元,2等奖50名1000元,1等奖10名10000元,在抽奖的设计中就必须把已中奖的人剔除,不然就会出现重复中奖的概率。技术方案和京东的京豆类似,但是不同的是:京东的京豆用了srandmember命令,即随机返回set的一个元素。支付宝的抽奖要用spop命令,即随机返回并删除set中一个元素。思考一个问题:支付宝的抽奖 和 京东京豆的抽奖有什么区别?原创 2021-07-15 10:29:47 · 342 阅读 · 0 评论 -
基于Redis的高并发随机展示 - Set实战之QQ群、微博好友随机推荐
QQ群随机推荐微博随机推荐随机展示业务场景分析为什么要随机展示?因为展示的区域有限,在那么小的地方展示全部数据是不可能的,通常的做法就是随机展示一批数据,然后用户点击“换一换”按钮,再随机展示另一批。随机展示的redis技术方案上文已经说了随机展示的原因就是区域有限,而区域有限的地方通常就是首页或频道页,这些位置通常都是访问量并发量非常高的,一般是不可能采用数据库来实现的,通常都是Redis来实现。redis的实现技术方案:步骤1:先把数据准备好,把所有需要展示的内容存入redis的S原创 2021-07-15 10:29:10 · 396 阅读 · 2 评论 -
springboot通过注解优雅的使用Redis进行缓存——SpringCache缓存框架整合Redis
自Spring 3.1起,提供了类似于@Transactional注解事务的注解Cache支持,且提供了Cache抽象;也就是说你只需要写一个注解就能实现缓存。提供基本的Cache抽象,方便切换各种底层Cache;只需要更少的代码就可以完成业务数据的缓存;提供事务回滚时也自动回滚缓存,支持比较复杂的缓存逻辑原创 2021-07-15 10:28:37 · 878 阅读 · 0 评论 -
Redis数据结构Set实战之京豆抽奖
具体的技术方案是采用set集合的srandmember命令来实现,随机返回set的一个元素。京豆抽奖一般是采用redis的set集合来操作的,那为什么是set集合适用于抽奖呢?1.set集合的特点是元素不重复 2.set集合支持随机读取。原创 2021-07-15 10:29:35 · 408 阅读 · 0 评论 -
Redis数据结构Set实战之黑名单校验器
redis技术解决方案:黑名单过滤器除了针对上文说的淘宝评价,针对用户黑名单外,其实还有ip黑名单、设备黑名单等。在高并发的情况下,通过数据库过滤明显不符合要求,一般的做法都是通过Redis来实现的。场景分析:淘宝的商品评价功能,不是任何人就能评价的,有一种职业就是差评师。差评师就是勒索敲诈商家,这种差评师在淘宝里面就被设置了黑名单,即使购买了商品,也评价不了。步骤2:评价的时候验证是否为黑名单,通过sismember命令来实现。步骤1:先把数据库的数据同步到redis的set集合中。原创 2021-07-14 17:40:01 · 1811 阅读 · 0 评论 -
Redis数据结构Hash实战之淘宝短链接
网址链接过长给用户不好的体验,缩短链接长度方便社交化传播,还能跟踪点击量和统计。原创 2021-07-14 17:39:30 · 296 阅读 · 3 评论 -
Redis数据结构 SortedSet实战之用户积分实时榜单
用户玩游戏-积分实时榜单IT视频热销实时榜单电商商品热销实时榜单一般的排行榜读多写少,可以对 master 进行写入操作,然后多个 slave 进行读取操作。如果是对象记得重写HashCode与Equals方法积分对象/** * 积分对象 * @author cv大魔王 * @version 1.0 * @date 2021/5/21 15:37 */@Datapublic class UserPointVO implements Serializable { pub.原创 2021-07-14 17:38:50 · 194 阅读 · 0 评论 -
Redis数据结构 Set实战之社交应用中的共同好友
实践:@Autowiredprivate RedisTemplate redisTemplate;public void test03() { // 用户A BoundSetOperations operationsA = redisTemplate.boundSetOps("user:a"); // 关注了用户A的用户 operationsA.add("A","B","C","D"); System.out.println("老A的粉丝"+operation原创 2021-07-14 17:38:07 · 208 阅读 · 0 评论 -
Redis数据结构Set实战之用户画像标签去重
用户画像 英文为User Profile,是根据用户基本属性、社会属性、行为属性、心理属性等真实信息而抽象出的一个标签化的、虚拟的用户模型。“用户画像”的实质是对 “人”的数字化。应用场景有很多,比如个性化推荐、精准营销、金融风控、精细化运营等等, 举个例子来理解用户画像的实际应用价值,我们经常用手机网购,淘宝里面的千人千面通过“标签 tag”来对用户的多维度特征进行提炼和标识,那每个人的用户画像就需要存储,set集合就适合去重用户画像不止针对某个人,也可以某一人群或行业的画像利用redis可以很.原创 2021-07-14 17:37:29 · 649 阅读 · 0 评论 -
Redis数据结构——List实战之-每日热销榜单
构建模拟数据,实际环境可以使用异步任务每日刷新榜单。分析:List适合非实时更新的榜单。原创 2021-07-14 17:36:45 · 334 阅读 · 0 评论 -
lua脚本+redis原生代码编写分布式锁
import org.springframework.beans.factory.annotation.Autowired;import org.springframework.data.redis.core.StringRedisTemplate;import org.springframework.data.redis.core.script.DefaultRedisScript;import org.springframework.web.bind.annotation.GetMapping;原创 2021-07-14 17:35:30 · 120 阅读 · 0 评论 -
使用Redis完成图形验证码
github地址:https://github.com/whvcse/EasyCaptcha注:我这里没有进行接口返回规范,请在使用时自己设定项目规定的统一返回接口规范项目依赖:<!-- 验证码 --><dependency> <groupId>com.github.whvcse</groupId> <artifactId>easy-captcha</artifactId> <version&g.原创 2021-07-14 17:34:49 · 1986 阅读 · 10 评论 -
Redis实战Hash之电商购物车
购物车数据结构介绍一个购物车里面,存在多个购物项因此购物车结构是一个双层Map:Map<String,Map<String,String>>第一层Map,Key是用户id第二层Map,Key是购物车中商品id,值是购物车数据对应redis里面的存储 — redis里面有多种数据结构,应该使用哪种?答案是 hash结构注:这里模拟在线教育平台购物车,因此命名使用video编写购物车准备工作单个商品对象 CartItemVO/** * 单个商品卡片对.原创 2021-05-24 11:07:39 · 952 阅读 · 0 评论