![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
redis
文章平均质量分 73
KDoo
Javaer
展开
-
基于Redis实现延时队列——Redisson延时队列解析
一、应用场景订单15分钟后不支付取消交易发生后5分钟给用户发送短信这里在我们项目中是来做一个延时的竞赛发布,指定几小时or几天后执行竞赛的发布流程,无需手动执行。二、实现方式Redis实现延时队列有两种实现方式:key失效监听回调zset分数存时间戳三、方案选择key失效监听存在两个问题:Redis的pubsub不会被持久化,服务器宕机就会被丢弃没有高级特性,没有ack机制,可靠性不高zset的实现是,轮询队列头部来获取超期的时间戳,实现延时效果,可靠性更高。Rediss原创 2021-02-20 18:25:37 · 3628 阅读 · 0 评论 -
Redis scan命令解析——替代keys命令可以在生产环境使用实现遍历
一、什么是scan命令scan 命令用于迭代数据库中的数据库键。也就是实现数据库键的遍历操作,可能大家都熟知一个keys命令,但它存在一些缺陷,在生产环境中scan是更好的选择。二、scan命令和keys命令的对比2.1 时间复杂度scan命令和keys命令的时间复杂度都是O(N),这里是一致的。2.2 是否可以部分遍历keys命令是不支持类似limit的操作的,只能一次性取出符合所有条件的keyscan命令提供了limit参数,可以控制每次返回结果的最大条数。2.3 scan与k原创 2020-12-20 13:24:56 · 751 阅读 · 0 评论 -
JetCache源码(四)——一些有趣特性的实现
一、自动刷新实现这里贴出的代码是添加刷新任务的方法,首先维护了一个任务队列,以taskId作为key,RefreshTask作为value。private ConcurrentHashMap<Object, RefreshTask> taskMap = new ConcurrentHashMap<>();protected void addOrUpdateRefreshTask(K key, CacheLoader<K,V> loader) { R原创 2020-09-23 12:27:28 · 790 阅读 · 0 评论 -
JetCache源码(三)——本地缓存实现
一、类结构二、AbstractEmbeddedCache定义了InnerMap和创建InnerMap的抽象方法,由LinkedHashMapCache和CaffeineCache两个子类来实现。 protected InnerMap innerMap; protected abstract InnerMap createAreaCache();在这个类中实现了一些公共方法,避免子类重复实现,公共方法会调用如innerMap.getValue(newKey),使用每个子类的独原创 2020-09-23 12:26:38 · 1264 阅读 · 0 评论 -
JetCache源码(二)——Cache类库实现
一、Cache类库基本结构二、Cache类似于集合中的List,定义了一些缓存的基本方法,如get、put。提供了方法的默认实现,使用了模板方法模式,小写方法有默认实现,大写方法由子类来实现。小写的方法返回的是数据,不过当方法返回为null时,无法断定是key不存在,已过期,还是访问缓存时出现了异常,大写GET方法提供了完整的信息。模板方法设计模式:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 defa原创 2020-09-23 12:25:19 · 670 阅读 · 0 评论 -
基于Redis的Hyperloglog实现日活量和总活跃量统计
一、背景介绍产品提出想要统计目前系统中某个页面日活量与总活跃用户数量,由于这个页面登录与未登录用户均可访问,因此不能通过用户id来统计,要通过ip地址来做统计和去重处理。二、技术选型首先想到的方案是使用redis的set数据结构,因为它是一个无序集合,我们得到ip地址,然后存入set中即可实现统计与去重的效果,但是set有一个很大的问题是,每一条数据占用的空间会比较大,如果数据量很大的话可能会导致内存问题。因此想到用一些比较节约空间的数据结构,想到了之前了解过的bitmap,空间占用比较低,不过b原创 2020-09-23 12:17:27 · 1936 阅读 · 0 评论 -
springboot整合redis、mybatis、@EnableScheduling定时任务,实现日访问量与日活量的统计与记录
目录一、实现目标二、windows版本redis下载与安装三、springboot集成redis四、springboot集成mybatis集成通用mapper五、实现日访问量@EnableScheduling定时任务六、实现日活量获取IP地址七、项目github地址一、实现目标统计网站的日访问量与日活量,日访问量是每天页面被访问的次数,日活量也是被访问的次数,但重复的ip不作记录。二、windows版本redis下载与安装windows版本的redis安装配置很简单,这里给一个安装过程的参考链接。原创 2020-05-17 14:46:59 · 2657 阅读 · 3 评论