
redis
文章平均质量分 58
小P聊技术
免费提供资源 && 解答技术问题 && QQ①群 725477119
展开
-
Redis 分布式请求拦截器
1 自定义拦截器下方的redisOperator就是个工具类,对redis api 操作进行简单的封装,如果有兴趣的,可以下方的地址下载:优快云下载地址: https://download.youkuaiyun.com/download/qq_15769939/15378282import com.auskat.utils.JsonUtils;import com.auskat.utils.R;import com.auskat.utils.RedisOperator;import org.apache.原创 2021-02-25 08:14:41 · 557 阅读 · 2 评论 -
Redis 分布式会话实现
1 常规方式下方的redisOperator就是个工具类,对redis api 操作进行简单的封装,如果有兴趣的,可以下方的地址下载:优快云下载地址: https://download.youkuaiyun.com/download/qq_15769939/153782821.1 登录 // 登录的时候,token存入redis String uniqueToken = UUID.randomUUID().toString().trim(); redisOperator.set("redis_user原创 2021-02-24 08:29:14 · 182 阅读 · 0 评论 -
Redis 分布式会话入门
1 会话会话Session代表的是客户端与服务器的一次交互过程,这个过程可以是连续也可以是时断时续的。曾经的Servlet时代(jsp),一旦用户与服务端交互,服务器用户创建一个session,同时前端会有一个jsessionid,每次交互都会携带。如此一来,服务器只要在接到用户请求时候,就可以拿到jsessionid,并根据这个ID在内存中找到对应的会话session,当拿到session会话后,那么我们就可以操作会话了。会话存活期间,我们就能认为用户一直处于正在使用着网站的状态,一旦session超原创 2021-02-23 08:45:14 · 260 阅读 · 0 评论 -
Redis 常规面试题及解答(下)
1 面试题21. Redis 集群的主从复制模型是怎样的 ?为了使在部分节点失败或者大部分节点无法通信的情况下集群仍然可用,所以集群使用了主从复制模型,每个节点都会有 N-1 个复制品22. Redis 集群会有写操作丢失吗?为什么 ?Redis并不能保证数据的强一致性,这意味这在实际中集群在特定的条件下可能会丢失写操作以下情况可能导致写操作丢失: 1> 过期 key 被清理 2> 最大内存不足,导致 Redis 自动清理部分 key 以节省空间 3> 主库故障后原创 2021-02-22 08:54:17 · 202 阅读 · 0 评论 -
Redis 常规面试题及解答(上)
1 面试题1. 什么是redis ?Redis是现在最受欢迎的NoSQL数据库之一,Redis是一个使用ANSI C编写的开源、包含多种数据结构、支持网络、基于内存、可选持久性的键值对存储数据库,其具备如下特性: 1> 基于内存运行,性能高效 2> 支持分布式,理论上可以无限扩展 3> key-value存储系统 4> 开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API2. Red原创 2021-02-22 08:53:45 · 146 阅读 · 0 评论 -
Redis 批量查询优化
1 介绍redis使用API查询数据,当碰到多个key查询的时候,会下意识的使用循环的查询方式。示例代码: /** * 大量key的查询 * @param keys * @return */ @GetMapping("/getKeys") public List<String> getKeys(String... keys){ List<String> result = new ArrayList&l原创 2021-02-22 08:46:38 · 4373 阅读 · 0 评论 -
Redis 缓存穿透和雪崩
1 缓存穿透1.1 说明缓存穿透是指缓存和数据库中都没有的数据,而用户不断发起请求,如发起为id为“-1”的数据或id为特别大不存在的数据。这时候就会绕过缓存,每次都请求数据库,这样的话,大量的请求都直接到达数据库,这种现象就叫缓存穿透。1.2 解决方案1.2.1 代码层面List<String> list = demoService.getDemoData(demoID);/* * 防止缓存穿透 * 解决方案: 把空的数据也缓存起来,比如空字符串,空对象,空数组或者list原创 2021-02-22 08:42:27 · 131 阅读 · 0 评论 -
Redis Springboot 集成redis哨兵和集群
1 引入依赖<!-- 引入redis依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>2 集成哨兵yml配置文件spring: redis: # Redis 哨兵模式原创 2021-02-21 08:24:57 · 190 阅读 · 0 评论 -
Redis Redis-Cluster集群配置
1 介绍redis的主从复制以及哨兵模式,他们可以提高读的并发,但是单个master容量有限,数据达到一定程度会有瓶颈,这个时候可以通过水平扩展为多master集群。redis-cluster是常用的redis集群搭建方式之一,他可以支撑多个master-slave,支持海量数据,实现高可用与高并发。哨兵模式其实也是一种集群,他能够提高读请求的并发,但是容错方面可能会有一些问题,比如master同步数据给slave的时候,这其实是异步复制,这个时候如果master宕机了,那么slave上的数据就没有m原创 2021-02-21 08:24:13 · 530 阅读 · 0 评论 -
Redis 哨兵模式配置
1 环境资源虚拟机服务器IPMaster192.168.51.4Slave1192.168.51.5Slave2192.168.51.62 配置哨兵2.1 master2.1.1 修改配置文件[root@localhost ~]# cd /usr/local/redis/[root@localhost redis]# ll总用量 68-rw-r--r--. 1 root root 61847 2月 8 17:14 6379.confdrwxr-原创 2021-02-20 08:44:02 · 283 阅读 · 0 评论 -
Redis 哨兵模式数据丢失问题
1 数据丢失情况1.1 异步复制导致的数据丢失因为master -> slave的复制是异步的,所以可能有部分数据还没复制到slave,master就宕机了,此时这些部分数据就丢失了。1.2 脑裂导致的数据丢失脑裂,也就是说,某个master所在机器突然脱离了正常的网络,跟其他slave机器不能连接,但是实际上master还运行着。此时哨兵可能就会认为master宕机了,然后开启选举,将其他slave切换成了master。这个时候,集群里就会有两个master,也就是所谓的脑裂。此时虽然原创 2021-02-19 12:24:02 · 1096 阅读 · 0 评论 -
Redis 哨兵模式核心原理
1 介绍sentinal,中文名是哨兵哨兵是redis集群架构中非常重要的一个组件,主要功能如下:(1)集群监控,负责监控redis master和slave进程是否正常工作(2)消息通知,如果某个redis实例有故障,那么哨兵负责发送消息作为报警通知给管理员(3)故障转移,如果master node挂掉了,会自动转移到slave node上(4)配置中心,如果故障转移发生了,通知client客户端新的master地址哨兵本身也是分布式的,作为一个哨兵集群去运行,互相协同工作(1)故障转移时原创 2021-02-18 14:00:24 · 333 阅读 · 2 评论 -
Redis 缓存过期处理以及内存淘汰机制
1 介绍计算机内存有限,越大越贵,Redis的高并发高性能都是基于内存的,用硬盘的话性能会比较差,为保证快速的数据响应,需要对缓存中的数据进行清除。2 过期key处理设置了expire的key缓存过期了,但是服务器的内存还是会被占用,这是因为redis所基于的两种删除策略 。1(主动)定时删除定时随机的检查过期的key,如果过期则清理删除。(每秒检查次数在redis.conf中的hz配置)2(被动)惰性删除当客户端请求一个已经过期的key的时候,那么redis会检查这个key是否过期,如原创 2021-02-17 09:37:19 · 508 阅读 · 2 评论 -
Redis 主从复制以及读写分离
1 核心原理当启动一个slave node的时候,它会发送一个PSYNC命令给master node。如果这是slave node重新连接master node,那么master node仅仅会复制给slave部分缺少的数据; 否则如果是slave node第一次连接master node,那么会触发一次full resynchronization。开始full resynchronization的时候,master会启动一个后台线程,开始生成一份RDB快照文件,同时还会将从客户端收到的所有写命令缓存原创 2021-02-16 10:28:19 · 209 阅读 · 3 评论 -
Redis 持久化机制RDB与AOF
1 持久化RDBRedis DataBase1.1 RDB概念每隔一段时间,把内存中的数据写入磁盘的临时文件,作为快照,恢复的时候把快照文件读进内存。如果宕机重启,那么内存里的数据肯定会没有的,那么再次启动redis后,则会恢复。1.2 备份和恢复内存备份 --> 磁盘临时文件临时文件 --> 恢复到内存1.3 RDB优缺点1.3.1 优势每隔一段时间备份,全量备份灾备简单,可以远程传输子进程备份的时候,主进程不会有任何io操作(不会有写入修改或删除),保证备份数据的原创 2021-02-09 09:41:40 · 140 阅读 · 0 评论 -
Redis 发布(pub)与订阅(sub)模式
1 订阅发布端发布消息,订阅端处于监听模式和状态,等待接收相应的消息。1.1 单个订阅订阅者1[root@localhost ~]# redis-cli127.0.0.1:6379> auth auskatOK127.0.0.1:6379> SUBSCRIBE food auskat-springboot auskat-vue auskat-nginxReading messages... (press Ctrl-C to quit)1) "subscribe"2) "fo原创 2021-02-09 09:40:36 · 181 阅读 · 0 评论 -
Redis 线程模型(多路复用)
1 线程模型客户端socket01客户端发送 set key value的请求,首先socketo1会发送一个AR_READABLE事件经过 多路复用器 -> 对列 -> 文件事件分派器 -> 连接应答处理器连接应答处理器将 AR_READABLE的事件与 命令请求处理器 关联命令请求处理器 将socket01读取出来得到key和value,在内存中完成key和value的设置将socket01的AR_WRITABLE事件跟 连接应答处理器 关联连接应答处理器 响应socke原创 2021-02-08 16:25:07 · 194 阅读 · 0 评论 -
Redis Springboot 整合Redis单机
1 引入依赖 <!-- 引入redis依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>2 集成配置##########################################原创 2021-02-07 09:20:06 · 129 阅读 · 0 评论 -
Redis 五种数据类型
1 String 数据类型1.1 简介最简单的字符串类型键值对的缓存,最基本的数据存储。1.2 常规命令keys *:查看所有的key (不建议在生产上使用,有性能影响)type key:key的类型127.0.0.1:6379> keys *1) "name"2) "age"127.0.0.1:6379> keys a*1) "age"127.0.0.1:6379> keys *e1) "name"ttl 2) "age"1.2 使用get/set/de原创 2021-02-06 20:37:55 · 125 阅读 · 0 评论 -
Redis 安装和配置以及常用命令
1 下载官网地址: https://redis.io/download**历史版本:**http://download.redis.io/releases/**Windows 版本:**https://github.com/tporadowski/redis/releases优快云-Windows版本地址: https://download.youkuaiyun.com/download/qq_15769939/15039183优快云-Linux版本地址: https://download.csdn原创 2021-02-05 09:24:12 · 181 阅读 · 0 评论