![](https://img-blog.csdnimg.cn/20201122013112205.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Redis
文章平均质量分 89
Redis
长臂人猿
进阶的猿猴
展开
-
Redis(十一)缓存击穿,穿透,雪崩
缓存穿透情况说明基于缓存数据库和关系数据库读写分离的前提下,但是如果有一个key缓存数据库和关系数据库中都没有该key,这样每次请求都会去查关系数据库(缓存数据库失去作用),不断访问这个key会穿透(不同于击穿,指的是查不到)关系数据库。如果同一时间有大量请求进来的话,会给数据库造成巨大的查询压力,甚至击垮关系数据库。解决方案目的:不让重复的脏查询直接落到关系数据库。1、在判断关系数据库没有该key后,缓存赋予这个key空值,这样下次查询将不会再直接落到关系数据库。空值不宜多(空值如果太多,也会原创 2021-01-12 14:37:22 · 183 阅读 · 0 评论 -
Redis(十四)Redisson由简到消费实例分析和实现
前言简易demo源自热心网友的代码,稍微修改获取Redisson对象而来。public class RedissonLock { private static final String LOCK_TITLE = "redisLock_"; static RedissonClient redisson; //构造Redisson对象 public static RedissonClient getRedissonObject() { Config config .原创 2020-12-04 15:24:18 · 1417 阅读 · 2 评论 -
Redis(十三)Redis使用setnx实现分布式锁
前言如果是单机,线程之间共享内存,只要使用synchronized线程锁就可以解决并发情况下值的一致性问题。如果是分布式情况,并发的线程A和线程B不在同一JVM中,他们之间的synchronized没有相互作用,这样synchronized线程锁就无效了,这时候就要用到分布式锁来解决,这里我们采用Redis设置关键字(flag)来标记是否锁住。值得注意的是为了实现效果:同一时刻只能有一个线程获取一个值; 防止某一线程死锁的情况导致锁不被释放(设置锁存活时间);原理setnx(key,原创 2020-12-02 16:39:57 · 859 阅读 · 1 评论 -
布隆过滤器及demo代码(含redis布隆过滤器demo)
前言首先我们先了解,布隆过滤器存在的主要存在意义:在极端处理数据量下(海量数据)仍旧保持一种可用的集合判断方案。结构构造位(Bit):即比特,非0即1,是一个二进制数据单位。那么我们判断集合中的数据是否存在也可以用这么个“是否”的单位来存储,类似的在Redis中有Bitmap数据类型:Redis(四)Redis的三种特殊数据类型:GEO、Hyperloglog和Bitmap。这里举个例子: 0-9十个数字,我们有一百个数字(0-9),随机抽出,如何快速判断凑齐了0-9,建立一个十个位置来存放原创 2020-12-01 17:47:01 · 878 阅读 · 0 评论 -
Redis(十二)redis实现session跨域缓存(附JWT存储)
前言当我们进行WEB开发的时候,常常会遇到跨页面的信息传输,这时候最开始基本都是采用的session会话作为存储基础信息的载体,比如说用户名称、id、登陆状态等信息。但是如果涉及到分布式开发,或者说是nginx负载均衡非ip_pash的策略的时候,就显得力不从心了——不在一个应用上,如何同步session信息!这便是跨域问题。这个时候JWThttps://zyqok.blog.csdn.net/article/details/109236009...原创 2020-11-24 16:45:54 · 1160 阅读 · 2 评论 -
Redis(六)事务以及分析和实操代码
目录前言原子性执行事务命令入队中语法错误执行事务命令语法不报错,运行时报错watch命令可以监控键值的变换——取消事务。DISCARD放弃事务JAVA中执行事务输出结果参考链接前言关系数据库据有ACID四个原则:原子性、一致性、隔离性和持久性;原子性单条redis操作是保障原子性的,但是事务不保证原子性。官网参考Redis 事务可以一次执行多个命令, 并且带有以下两个重要的保证:事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行原创 2020-11-21 23:08:04 · 158 阅读 · 0 评论 -
Redis(五)连接池、管道实操代码
连接池为什么要使用连接池正常使用Jedis是需要使用的时候创建,那么在多线程中和重复使用的时候需要不断的创建与Redis的链接,期间直连造成的数据库损耗尤为严重。那么如果预先建立一个Jedis一直存在,当有需要的时候再来使用,使用的对象一直是一个连接(单例),岂不是更好。https://www.cnblogs.com/cing/p/9133662.html final static int MAX_ACTIVE = 10; final static int MAX_IDLE = 100;原创 2020-11-21 23:04:50 · 323 阅读 · 0 评论 -
Redis(十)订阅和发布(sub/pub)以及Java实现代码
目录SubscribePublishPubsubUnaubscribePsubscribe PunsubscribeSubscribe参数格式:subscribe [channel,频道名称]Publish参数格式:publis [channel,频道名称] [message]Pubsubpubsub channels :查看活跃的订阅频道Unaubscribe参数格式:unaubscribe [channel,频道名称]...原创 2020-11-20 17:09:30 · 514 阅读 · 0 评论 -
Redis(九)Redis的过期时间操作以及部分常用命令
前言Redis的存活时间设置一共有四种方法如下(其实可以分为两类:毫秒和秒),ttl全称(Time to Live,存活时间):EXPlRE命令用于将键key 的生存时间设置为ttl 秒。 PEXPIRE命令用于将键key 的生存时间设置为ttl 毫秒。 EXPIREAT< timestamp> 命令用于将键key 的过期时间设置为timestamp所指定的秒数时间戳。 PEXPIREAT< timestamp > 命令用于将键key 的过期时间设置为times...原创 2020-11-20 17:08:09 · 2807 阅读 · 0 评论 -
Redis(八)事务的乐观锁
前言redis中Watch可以加锁,正常情况下127.0.0.1:6379> set wallet 100OK127.0.0.1:6379> set consume 0OK127.0.0.1:6379> multiOK127.0.0.1:6379> decrBy wallet 20QUEUED127.0.0.1:6379> incrBy consume 20QUEUED127.0.0.1:6379> exec1) (integer) 8原创 2020-11-20 17:04:54 · 244 阅读 · 2 评论 -
Redis(七)Redis的持久化存储RDB和AOF
RDB(Redis DataBase)默认存储机制RDB配置都是在配置文件中配置;图片来源:B站视频狂神说JAVARedis教程临时文件不可见,RDB触发机制:1、save规则满足的情况下,会自动触发rdb规则,生成rdb文件;2、执行flushall命令,也会触发rdb规则,生成rdb文件;3、退出redis,也会触发rdb规则,生成rdb文件;redis-server的redis.conf(这里图方便用的windows版本)默认存储rdb文...原创 2020-11-20 17:02:53 · 349 阅读 · 0 评论 -
Redis(四)Redis的三种特殊数据类型:GEO、Hyperloglog和Bitmap
前言Redis有三种特殊的数据格式:GEO存储地理坐标和计算,Hyperloglog用于不重复的基数统计,Bitmap位图用于统计互斥事件。GEO 的数据结构总共有六个命令geoaddgeoposgeodistgeoradiusgeoradiusbymembergeohashRedis GEOADD 命令将指定的地理空间位置(纬度、经度、名称)添加到指定的key中。原创 2020-11-20 16:54:53 · 717 阅读 · 0 评论 -
Redis(三)redisTemplate实操和五种基础数据类型
前言采用SpringBoot自动注入的jedis模板redisTemplate进行操作以及Redis的五种基础数据类型,其自带连接池管理,可自定义:为了中文存储和对象存储。【后续可能会把自定义模板放这里,基础类型单独提出去】。原创 2020-11-20 16:46:08 · 3299 阅读 · 4 评论 -
Redis(二)使用SpringBootTest进行Junit测试自动装配对象(自动装配为空值问题)
前言在我们进行SpringBoot项目的开发的时候,往往开发一个功能模块的某个功能的时候,不需要启动整个SpringBoot项目。这个时候可以采用测试类来测试;引入依赖一般自动快捷创建SpringBoot项目都会有。 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactI原创 2020-11-20 16:44:57 · 1736 阅读 · 1 评论 -
Redis(一) Jedis单机和集群连接
使用Jedis对Redis进行单节点和集群的连接实操案例。原创 2020-11-20 16:38:41 · 2166 阅读 · 2 评论 -
java获取普通参数文件和含有section的参数文件中的参数
前言介绍两种参数获取方式(cfg、ini、properties等):直接通过Properties获取参数文件;获取带有[section]的参数文件;原创 2020-11-20 16:34:36 · 602 阅读 · 4 评论