进学阁

业精于勤荒于嬉,行成于思毁于随

0%

内存配置和查看

Redis最大内存配置建议

  • Redis默认占用的内存:在64位操作系统下不限制内存大小,在32位操作系统下最多使用3GB。
  • 在生产环境下,一般推荐设置为最大物理内存的四分之三。
  • 配置单位是字节Bytes,如果设置为maxmemory 0即代表内存无限制。
    阅读全文 »

7.1 哨兵介绍

Redis 的主从模式下,主节点一旦发生故障不能提供服务,需要人工干预,将从节点晋升为主节点, 同时还需要修改客户端配置。对于很多应用场景这种方式无法接受。

Sentinel(哨兵)架构解决了 redis 主从人工干预的问题。 Redis Sentinel 是 redis 的高可用实现方案,实际生产环境中,对提高整个系统可用性非常有帮助的。

阅读全文 »

Redis 持久化 RDB AOF

Redis持久化

Redis作为一个键值对内存数据库(NoSQL),数据都存储在内存当中,在处理客户端请求时,所有操作都在内存当中进行,如下所示:

这样做有什么问题呢?

存储在内存当中的数据,只要服务器关机(各种原因引起的),内存中的数据就会消失了,不仅服务器关机会造成数据消失,Redis服务器守护进程退出,内存中的数据也一样会消失。

对于只把Redis当缓存来用的项目来说,数据消失或许问题不大,重新从数据源把数据加载进来就可以了,但如果直接把用户提交的业务数据存储在Redis当中,把Redis作为数据库来使用,在其放存储重要业务数据,那么Redis的内存数据丢失所造成的影响也许是毁灭性。

为了避免内存中数据丢失,Redis提供了对持久化的支持,可以选择不同的方式将数据从内存中保存到硬盘当中,使数据可以持久化保存。

Redis提供了RDB和AOF两种不同的数据持久化方式。


阅读全文 »

Redis

Redis 之 VM 机制

Redis 的 VM (虚拟内存)机制就是暂时把不经常访问的数据(冷数据)从内存交换到磁盘中,从而腾出宝贵的内存空间用于其它需要访问的数据(热数据)。通过 VM 功能可以实现冷热数据分离,使热数据仍在内存中、冷数据保存到磁盘。这样就可以避免因为内存不足而造成访问速度下降的问题。Redis 提高数据库容量的办法有两种:一种是可以将数据分割到多个 Redis Server上;另一种是使用虚拟内存把那些不经常访问的数据交换到磁盘上。「需要特别注意的是 Redis 并没有使用 OS 提供的 Swap,而是自己实现。」

Redis 为了保证查找的速度,只会将 value 交换出去,而在内存中保留所有的 Key。所以它非常适合 Key 很小,Value 很大的存储结构。如果 Key 很大,value 很小,那么vm可能还是无法满足需求。

阅读全文 »

Redis 通信协议 RESP

1、简介

Redis 的通信协议是 Redis Serialization Protocol,翻译为 Redis 序列化协议,简称 RESP。它具有如下特征:

  • 在 TCP 层
  • 是二进制安全的
  • 基于请求 - 响应模式
  • 简单、易懂(人都可以看懂)

RESP 所描述的是 Redis 客户端 - 服务端的交互方式。

阅读全文 »

为什么要自定义负载均衡

在实际的开发中总是会遇到如下的场景:A,B两个成员一起开发,A在开发C服务,B在开发D服务,测试环境中也部署有C服务和D服务,A和B的诉求是不互相干扰对方。但是实际中nacos中注册了服务之后默认的负载策略是根据权重来决定访问哪个服务,当权重一致时就是各50%的访问,很容易就对其他成员造成干扰,所以我们需要一个自定义负载均衡器来做一个分流。

负载均衡的实现

在springcloud的解决方案中负载均衡器使用的LoadBalancer框架,我们需要实现ReactorServiceInstanceLoadBalancer接口来完成自定义负载均衡。所以我们的思路就是在网关中进行打标,然后通过自定义负载均衡器来确定具体调用的服务。

阅读全文 »

我们在权限验证中提到了在网关中会通过缓存取出用户数据。当我们获取到用户信息后应该怎么传递下去,有两种方案:

一种是通过redis对数据进行存储,在不同的服务中通过同一个redis进行调用。

第二种:在SpringCloudGateway中将数据取出后放入请求头,然后通过请求头进行传输

阅读全文 »