Redis过期策略及持久化机制 一、Redis设置过期时间二、Redis的过期策略1、定时过期2、惰性过期3、定期过期三、Redis的8种内存淘汰策略LRU与LFU四、Redis 的持久化机制1、RDB快照持久化(redis默认)2、AOF追加文件持久化3、AOF和RDB都开启 凯哥Java Redis 2023-04-07 523已阅读 0 Redis实战15-Redis实现分布式锁思路 在上一篇文章中(Redis实战14-分布式锁基本原理和不同实现方式对比),我们介绍了为什么在集群或者分布式环境下,JVM级别的锁会失效,什么是分布式锁,分布式锁需要满足哪些条件以及实现分布式锁的三种常见方案,同时对三种实现方案做了对比。那么本文,咱们就来讲讲基于Redis实现分布式锁思路。实现分布式锁时候,需要实现两个基本的方法获取锁和释放锁获取锁获取锁时候需要考虑互斥和非阻塞。互斥:确保只能有一 凯哥Java Redis 2023-04-02 508已阅读 0 Redis实战14-分布式锁基本原理和不同实现方式对比 在上一篇文章(Redis实战13-集群下线程并发安全问题)中,我们知道了,当在集群环境下,synchronized关键字实现的JVM级别锁会失效的。那么怎么解决这个问题呢?我们可以使用分布式锁来解决。本文咱们就来介绍分布式锁基本原理以及不同实现方式对比。我们先来回顾,JVM级别锁的时序图。如下图:在集群下,不同jvm,就有多个锁监视器。那么,使用分布式锁应该是什么样的?我们可不可以把锁监视器提出来 凯哥Java Redis 2023-04-02 517已阅读 0 Redis实战13-集群下线程并发安全问题 通过前面两篇(Redis实战11-实现优惠券秒杀下单 Redis实战12-优惠券实现一人一单功能)的学习,我们已经解决了单机情况下优惠券秒杀及一人一单功能。其中,在优惠券秒杀时候,使用到了乐观锁处理的,在一人一单功能时候,使用了悲观锁,synchronized关键字及处理了spring事务失效情况。但是随着业务的增长,单机服务已经不能满足我们需求了,这个时候,需要多台机器来支撑。这就构成 凯哥Java Redis 2023-04-02 465已阅读 0 Redis实战12-优惠券实现一人一单功能 本文收获在上一篇,我们已经把超卖问题解决了。接下来,我们来开发,优惠券一人一单功能。通过本文学习,您将有如下收获:1:悲观锁、乐观锁的使用场景;2:synchronized关键字,在不同位置,锁的颗粒度是不同的,怎么优化呢;3:toString方法之后,不能保证唯一,如果要保证唯一,需要在调用String的intern方法;4:对spring事务有更深入了解-解决spring事务失效一种情况;5: 凯哥Java Redis 2023-02-18 1162已阅读 0 Redis实战11-实现优惠券秒杀下单 本篇,咱们来实现优惠券秒杀下单功能。通过本篇学习,我们将会有如下收获:1:优惠券领券业务逻辑;2:分析在高并发情况下,出现超卖问题产生的原因;3:解决超卖问题两种方案:版本号法及CAS法4:乐观锁弊端改进方案;本文涉及内容比较多,篇幅会比较长,同时有大量截图。希望大家能耐心看完。好了,话不对说,咱们开始gogogo~一:基本的秒杀实现下单时候需要判断:1:秒杀是否开始或结束,如果尚未开始或者已经结 凯哥Java Redis 2023-02-11 1149已阅读 0 Redis实战-session共享之修改登录拦截器 在上一篇中Redis实战之session共享,我们知道了通过Redis实现session共享了,那么token怎么续命呢?怎么刷新用户呢?本来咱们就通过拦截器来实现这两个功能。登录拦截器优化:先来看看现在拦截器情况:拦截流程:当拦截器拦截需要拦截到的url时候,才会在拦截器中更新用户token的过期时间。那如果,访问了不被拦截的路径,就不会给token续命的。这样就会导致用户token过期,而重新 凯哥Java Redis 2023-02-07 1008已阅读 0 Redis实战之session共享 当线上集群时候,会出现session共享问题。虽然Tomcat提供了sessioncopy的功能,但是缺点比较明显:1:当Tomcat多的时候,session需要大量同步到多台集群上,占用内网宽带2:同一个用户session,需要在多个Tomcat中都存在,浪费内存空间如果要替换掉Tomcat的session共享,替代方案应该满足:1:数据共享2:内存存储3:key\value结构基于Redis实 凯哥Java Redis 2023-02-06 1101已阅读 0 分库分表之后,ID主键如何处理? 分库分表之后,ID主键如何处理?当业务量大的时候,数据库中数据量过大,就要进行分库分表了,那么分库分表之后,必然将面临一个问题,那就是ID怎么生成?因为要分成多个表之后,如果还是使用每个表的自增长ID,意味着每个表都是从1开始累加的,这样肯定是不对的。需要一个全局唯一的ID来支持。所以这也是你实际生产环境中必须考虑的一个问题。全局ID生成器,一般需要满足下列几个特性:唯一性、高可用、递增性、安全性 凯哥Java Redis 2023-02-02 950已阅读 0 Redis快速入门 Redis快速入门,分两个客户端:Jedis和SpringDataRedis使用Jdedis1、引入依赖 redis.clients je 凯哥Java Redis 2023-01-30 1240已阅读 0