![](https://img-blog.csdnimg.cn/76fc34e076bd40a78fbb7bb1b607d911.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Redis
文章平均质量分 53
Redis
BasicLab基础架构实验室
本人深耕基础架构领域,曾在国内500强大厂研发企业级百亿量级吞吐中间件,擅长Java语言、Go语言、Python语言、C语言、NodeJS、Web、Linux、深度学习、大数据、云原生等
展开
-
Redis 单点登录(设计思路)
1、登录页面提交用户名密码。2、登录成功后生成token。Token相当于原来的jsessionid,字符串,可以使用uuid。3、把用户信息保存到redis。Key就是token,value就是TbUser对象转换成json。4、使用String类型保存Session信息。可以使用“前缀:token”为key5、设置key的过期时间。模拟Session的过期时间。一般半个小时。6、把token写入Cookie中,每次请求接口都需要带上token,请求通过路由网关进行登录校验,...原创 2020-05-26 00:08:27 · 1385 阅读 · 0 评论 -
Redis 缓存穿透和缓存失效的预防和解决
缓存穿透:认识缓存穿透是指查询一个一定不存在的数据,由于缓存是不命中时需要从数据库查询,查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到数据库去查询,造成缓存穿透。解决办法:对所有可能查询的参数以hash形式存储,在控制层先进行校验,不符合则丢弃。还有最常见的则是采用布隆过滤器,将所有可能存在的数据哈希到一个足够大的bitmap中,一个一定不存在的数据会被这个bitmap拦截掉,从而避免了对底层存储系统的查询压力。也可以采用一个更为简单粗暴的方法,如果一个查询返回的数原创 2022-01-24 18:01:49 · 352 阅读 · 0 评论 -
【原理】redis的过期时间和过期删除机制
一:设置过期时间redis有四种命令可以用于设置键的生存时间和过期时间:EXPIRE <KEY> <TTL> : 将键的生存时间设为 ttl 秒PEXPIRE <KEY> <TTL> :将键的生存时间设为 ttl 毫秒EXPIREAT <KEY> <timestamp> :将键的过期时间设为 timestamp 所指定的秒数时间戳PEXPIREAT <KEY> <timestamp>: 将键的过期原创 2021-09-23 10:37:11 · 530 阅读 · 0 评论 -
Redis分布式锁的原理以及如何续期
面试问题Redis锁的过期时间小于业务的执行时间该如何续期?问题分析首先如果你之前用Redis的分布式锁的姿势正确,并且看过相应的官方文档的话,这个问题So easy.我们来看很多同学在用分布式锁时,都是直接百度搜索找一个Redis分布式锁工具类就直接用了,其实Redis分布式锁比较正确的姿势是采用redisson这个客户端工具如何回答只要客户端一旦加锁成功,就会启动一个watch dog看门狗,他是一个后台线程,会每隔10秒检查一下客户端锁是否被释放,如果客户端还持有锁key,原创 2021-09-23 10:27:35 · 1705 阅读 · 0 评论 -
SpringBoot Redis工具类封装
SpringBoot整合Redis的博客很多,但是很多都不是我想要的结果。因为我只需要整合完成后,可以操作Redis就可以了,并不需要配合缓存相关的注解使用(如@Cacheable)。看了很多博客后,我成功的整合了,并写了个Redis操作工具类。特意在此记录一下,方便后续查阅。一、Maven依赖1、本文所采用的SpringBoot的版本如下<parent> <...原创 2019-06-18 19:50:53 · 7908 阅读 · 19 评论 -
Ubuntu 加入开机自启动命令(rc.local)
写这篇文章的目的是因为网上的文章A抄B,B抄C,自己写的什么玩意都不知道就抄,特此记录便于日后查阅。首先打开rc.local文件,代码如下:$ sudo vim /etc/rc.local在里面加入你想要开机就执行的命令(这里我是开机自启动redis),代码如下:#!/bin/sh -e## rc.local## This script is executed at the end of each multiuser runlevel.# Make sure that the原创 2021-01-07 18:05:16 · 3952 阅读 · 0 评论 -
Redis 雪崩、穿透、并发问题解决
最近在面试过程中经常有面试官问Redis雪崩、穿透、并发等问题解决方案,特此记录便于日后查阅。一、缓存雪崩数据未加载到缓存中,或者缓存同一时间大面积的失效,从而导致所有请求都去查数据库,导致数据库CPU和内存负载过高,甚至宕机。一个雪崩的简单过程redis集群大面积故障 缓存失效,但依然大量请求访问缓存服务redis redis大量失效后,大量请求转向到mysql数据库 mysql的调用量暴增,很快就扛不住了,甚至直接宕机 由于大量的应用服务依赖mysql和redis的服务,这个时原创 2020-07-16 15:48:29 · 1146 阅读 · 2 评论 -
SpringBoot Redis批量存取数据
springboot中的redisTemplate封装了redis批处理数据的接口,我们使用redisTemplate可以直接进行批量数据的get和set。package com.huateng.applacation.service; import org.springframework.beans.factory.annotation.Autowired;import org.sp...原创 2019-10-14 19:05:08 · 6589 阅读 · 0 评论 -
redis加mybatis,org.apache.commons.pool2.impl.GenericObjectPoolConfig记住这个是pool2!!
今天用redis做mybatis的二级缓存,总是报下面这个错误。Caused by: java.lang.ClassNotFoundException: org.apache.commons.pool2.impl.GenericObjectPoolConfig at org.apache.catalina.loader.WebappClassLoader.loadClass(Weba...原创 2019-07-19 13:45:09 · 1202 阅读 · 0 评论 -
Redis Fastjson进行序列化和反序列化
之前写过redis相关的代码,发现只有Jackson的序列化方式,而Fastjson的序列化和反序列化速度是高于Jackson的,所以这里需要自己实现Fastjson的序列化方式。1、fastjson序列化类/** * @Classname: com.openailab.oascloud.datacenter.common.serializer.FastJson2JsonRedisSe...原创 2019-07-08 15:58:35 · 6657 阅读 · 1 评论 -
Centos7 Redis哨兵模式主从集群搭建
目前项目组还处于刚刚成立阶段,有许多东西需要从零到一,借着这个机会,学习到许多以前没有接触过的东西,Redis哨兵模式主从集群也是在这个阶段搭建的,其实在很久以前就一直有搭建哨兵集群的想法,直到一年之后才来做这件事感到挺惭愧的,将知识点记录和总结下来也是一种快乐。一、Redis 哨兵模式简介Redis-Sentinel是官方推荐的高可用解决方案,当redis在做master-slave的高...原创 2019-06-15 14:27:59 · 1293 阅读 · 1 评论 -
SpringBoot Redis工具类封装
SpringBoot整合Redis的博客很多,但是很多都不是我想要的结果。因为我只需要整合完成后,可以操作Redis就可以了,并不需要配合缓存相关的注解使用(如@Cacheable)。看了很多博客后,我成功的整合了,并写了个Redis操作工具类。特意在此记录一下,方便后续查阅。一、Maven依赖1、本文所采用的SpringBoot的版本如下<parent> <...原创 2019-06-18 19:50:53 · 7908 阅读 · 19 评论 -
Java语言操作Redis
目前Jedis是官方推荐的比较好的Redis操作API包,我们这里结合Spring来看下如何使用Redis这一神器。1、在pom文件中引入jredis包:<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <v...原创 2018-08-08 13:27:32 · 373 阅读 · 2 评论 -
Redis 为什么说它是单线程并且还这么快!
一、前言近乎所有与Java相关的面试都会问到缓存的问题,基础一点的会问到什么是“二八定律”、什么是“热数据和冷数据”,复杂一点的会问到缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等问题,这些看似不常见的概念,都与我们的缓存服务器相关,一般常用的缓存服务器有Redis、Memcached等,而笔者目前最常用的也只有Redis这一种。如果你在以前面试的时候还没有遇到过面试官问你《为什么说R...原创 2018-08-06 15:51:54 · 271 阅读 · 0 评论 -
Redis 基于Sentinel(哨兵)搭建实现高可用集群
概述Redis哨兵为Redis提供了高可用性。实际上这意味着你可以使用哨兵模式创建一个可以不用人为干预而应对各种故障的Redis部署。哨兵模式还提供了其他的附加功能,如监控,通知,为客户端提供配置。下面是在宏观层面上哨兵模式的功能列表:监控:哨兵不断的检查master和slave是否正常的运行。 通知:当监控的某台Redis实例发生问题时,可以通过API通知系统管理员和其他的应用程序...原创 2018-07-30 14:42:35 · 369 阅读 · 0 评论 -
Redis 集群搭建详细指南
先有鸡还是先有蛋?最近有朋友问了一个问题,说毕业后去大城市还是小城市?去大公司还是小公司?我的回答都是大城市!大公司!为什么这么说呢,你想一下,无论女孩男孩找朋友都喜欢找个子高胸大的。同样的道理嘛,「大」总有大的好。当然,如果你要有能力找一个胸大个子高就更完美了。Redis 集群简介Redis 是一个开源的 key-value 存储系统,由于出众的性能,大部分互联网企业都用来做服务...原创 2018-07-26 15:20:21 · 236 阅读 · 1 评论 -
Redis 两种持久化方式对比
一.概念介绍redis提供了两种持久化的方式,分别是RDB(Redis DataBase)和AOF(Apend Only File)。RDB方式RDB方式是一种快照式的持久化方法,将某一时刻的数据持久化到磁盘中。•redis在进行数据持久化的过程中,会先将数据写入到一个临时文件中,待持久化过程都结束了,才会用这个临时文件替换上次持久化好的文件。正是这种特性,让我们可以随时来进行备份...原创 2018-07-14 17:43:12 · 314 阅读 · 0 评论 -
Redis 五种数据类型基本命令
概述本Redis支持五中数据类型:String(字符串),Hash(哈希),List(列表),Set(集合)及zset(sortedset:有序集合)。文详细介绍这五种数据类型的使用方法。本文命令介绍部分只是列举了基本的命令,至于具体的使用示例,可以参考Redis官方文档:Redis命令大全字符串类型字符串是Redis中最基本的数据类型,它能够存储任何类型的字符串,包含二进制数据。可以...原创 2018-07-14 17:12:49 · 281 阅读 · 3 评论