Redis 分布式缓存 基于 Redis 集群解决单机 Redis 存在的问题,单机的 Redis 存在四大问题: 1. 持久化 1.1 RDB 持久化 RDB 全称 Redis Database Backup file(Redis 数据备份文件),也被叫做 Redis 数据快照。简单来说就是把内存中的所有数据都记录到磁盘中。当 Redis 实例故…
Redis 通讯协议和内存回收 1. RESP 协议 Redis 是一个 CS 架构的软件,通信一般分两步(不包括 pipeline 和 PubSub): 客户端(client)向服务端(server)发送一条命令 服务端解析并执行命令,返回响应结果给客户端 因此客户端发送命令的格式、服务端响应结果的格式必须有一个规范,这个规范就是通信协议 而在 …
Redis网络模型 1. 用户空间和内核空间 服务器大多都采用 Linux 系统,这里我们以 Linux 为例来讲解: ubuntu 和 Centos 都是 Linux 的发行版,发行版可以看成对 Linux 包了一层壳,任何 Linux 发行版,其系统内核都是 Linux。我们的应用都需要通过 Linux 内核与硬件交互 用户的应用,比如 red…
Redis 数据结构 1. 简单动态字符串 SDS 我们都知道 Redis 中保存的 Key 是字符串,value 往往是字符串或者字符串的集合。可见字符串是 Redis 中最常用的一种数据结构 不过 Redis 没有直接使用 C 语言中的字符串,因为 C 语言字符串存在很多问题: 获取字符串长度的需要通过运算 非二进制安全 不可修改 Redis …
缓存 1. 基本概念 缓存(Cache),就是数据交换的缓冲区,俗称的缓存就是缓冲区内的数据,一般从数据库中获取,存储于本地代码 // 1. 本地用于高并发 static final ConcurrentHashMap map = new ConcurrentHashMap(); // 2. 用于redis等缓存 static final Cach…
命令 1. 通用命令 通用命令是所有数据类型都可以使用的指令,常见的有: KEYS:查看符合模板的所有 key,不建议在生产环境设备上使用 DEL:删除一个指定的 key EXISTS:判断 key 是否存在 EXPIRE:给一个 key 设置有效期,有效期到期时该 key 会被自动删除 TTL:查看一个 KEY 的剩余有效期 通过 help [c…