redis
文章平均质量分 79
我哪会这个啊
用绝对清醒的理智压制不该有的情绪
展开
-
SpringBoot-心跳机制+redis实现网站实时在线人数统计
4.一般在前后分离项目中,都是有统一返回数据格式的,以及一些项目通用配置。有时候我们需要在响应流中设置返回数据,因此有如下工具类。可以看到成功访问了,并且该用户的token会一直续期。3.定义一个类,用户统计用户的在线人数等操作。1.新建sp项目,导入如下pom.xml。用户登录机制时序图如下。redis序列化配置。原创 2023-04-12 15:54:17 · 4731 阅读 · 5 评论 -
Redis实现点赞、关注、取top榜单实现
redis实现社交场景点赞关注原创 2022-12-07 17:43:27 · 1708 阅读 · 0 评论 -
IO多路复用及Redis网络模型
用户空间和内核空间目前市面上服务器大多数都采用Linux系统,这里以Linux来简单描述在任何的Linux发行版,其系统内核都是Linux,我们的应用都需要通过Linux内核与硬件交互为了避免用户应用与内核发生冲突,用户应用与内核是分离的:进程的寻址空间会划分为两部分:内核空间、用户空间用户空间只能执行受限的命令(Ring3),而且不能直接调用系统资源,必须通过内核提供的接口来访问内核空间可以执行特权命令(Ring0),调用一切系统资源Linux系统为了提高IO效率,会在用户空间和内原创 2022-05-08 22:47:28 · 995 阅读 · 0 评论 -
StringRedisTemplate
StringRedisTemplate继承自RedisTemplate,在这里说明一下,当我们使用RedisTemplate往redis中存储java对象的时候,他会顺带着将该java对象的字节码文件也同时存进了内存中,这是为了实现自动反序列化尽管JSON的序列化方式可以满足我们的需求,但是仍然存在一些问题,如上图所示,为了在反序列化时知道对象的类型,JSON序列化器会将类的class类型写入json结果中,存入Redis,会带来额外的内存开销。在使用RedisTemplate是一般我们都会使用自定义原创 2022-04-30 23:14:22 · 19148 阅读 · 1 评论 -
布隆过滤器解决缓存击穿问题
缓存穿透的问题?缓存穿透: 指定使用一些不存在的key进行大量的查询Redis,导致无法命中,每次请求都会传到持久层进行查询,导致对数据库的压力非常大。那摩有哪些解决方案呢?对我们的服务接口实现限流,用户授权、黑名单和白名单拦截从缓存和数据库都查询不到结果的话,一样将数据库空值结果缓存到Redis中:设置30s的有效期避免使用同一个id对数据库攻击,但是如果真是黑客要搞你,那摩他随机生成的id肯定是不一样的布隆过滤器这里主要说的就是布隆过滤器布隆过滤器(Bloom Filter)是1970原创 2021-09-05 17:39:51 · 589 阅读 · 0 评论 -
Redis之缓存穿透、缓存击穿、缓存雪崩及删除淘汰策略
缓存穿透什么是缓存穿透正常情况下,查询的数据都存在,如果请求一个不存在的数据,也就是缓存和数据库都查不到这个数据,每次都会去数据库查询,这种查询不存在数据的现象我们称为缓存穿透穿透带来的问题如果每次都拿一个不存在的id去查询数据库,可能会导致你的数据库压力增大解决办法缓存空值:之所以发生穿透,是因为缓存中没有存储这些数据的key,从而每次都查询数据库我们可以为这些key在缓存中设置对应的值为null,后面查询这个key的时候就不用查询数据库了当然为了健壮性,我们要对这些key设置过期时间,以防原创 2021-09-03 12:05:30 · 267 阅读 · 0 评论 -
SpringBoot+Redis常用操作
废话不多说1.在maven中导入如下依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> <version>2.1.6.RELEASE</version> </dep原创 2021-07-30 11:20:46 · 423 阅读 · 0 评论 -
redission实现分布式锁
在开始提到Redis分布式锁之前,先说一下redis中的两个命令。SETNX key valuesetnx 是SET if Not eXists(如果不存在,则 SET)的简写。原创 2021-08-25 16:19:20 · 23891 阅读 · 13 评论 -
Redis如何保证缓存数据的一致性
1.方式一:先更新数据库,再更新缓存场景当有两个线程A、B,同时对一条数据进行操作,一开始数据库和redis的数据都为tony,当线程A去修改数据库,将tong改为allen,然后线程A在修改缓存中的数据,可能因为网络原因出现延迟,这个时候线程B,将数据修改成了Mike、然后将数据库中的tony,也改成了Mike,然后线程A恢复正常,将redis中的缓存改成了allen,此时就出现了缓存数据和数据库数据不一致情况。不推荐方式2:先更新缓存,再更新数据库场景当有两个线程A、B,同时对一条数据进行操作,转载 2021-08-13 11:35:57 · 391 阅读 · 0 评论