随笔分类 - 数据库 / Redis
摘要:哈希取余算法 1、公式:hash(key) % N(机器台数),哈希值决定数据映射的节点 2、优点 (1)简单直接,负载均衡,分而治之 (2)只需预估节点数,就能保证一段时间的数据支撑,每台服务器固定处理一部分请求,并维护这些请求的信息 3、缺点 (1)每次数据变动导致节点有变动,映射关系需要重新进
阅读全文
摘要:内存回收 1、当内存使用达到上限时,就无法存储更多数据 2、Redis 提供策略实现内存回收 (1)内存过期策略 (2)内存淘汰策略 过期策略 1、通过 expire 命令给 Redis 的 key 设置 TTL(存活时间) 2、Redis 判断一个 key 过期 (1)Redis 本身是一个 ke
阅读全文
摘要:RESP 协议 1、Redis 是一个 CS 架构的软件,通信一般分两步(不包括 pipeline 和 PubSub) (1)客户端(client)向服务端(server)发送一条命令 (2)服务端解析并执行命令,返回响应结果给客户端 (3)客户端发送命令的格式、服务端响应结果的格式必须有一个规范,
阅读全文
摘要:用户空间、内核空间 1、任何 Linux 发行版,其系统内核都是 Linux,应用都需要通过 Linux 内核与硬件交互 2、为了避免用户应用导致冲突甚至内核崩溃,用户应用与内核是分离的 (1)进程的寻址空间会划分为两部分:内核空间、用户空间 (2)用户空间只能执行受限的命令(Ring3),而且不能
阅读全文
摘要:动态字符串 1、Redis 中保存的 Key 是字符串,value 往往是字符串或字符串的集合,字符串是 Redis 中最常用的一种数据结构 2、Redis 没有直接使用 C 语言中的字符串,因为 C 语言字符串存在很多问题 (1)获取字符串长度的需要通过运算 (2)非二进制安全 (3)不可修改 3
阅读全文
摘要:key 结构 1、key 最佳实践约定 (1)遵循基本格式:[业务名称]:[数据名]:[id] (2)长度不超过 44 字节 (3)不包含特殊字符 2、优点 (1)可读性强 (2)避免 key 冲突 (3)方便管理 (4)节省内存:key 是 string 类型,底层编码包含 int、embstr、
阅读全文
摘要:多级缓存 1、充分利用请求处理的每个环节,分别添加缓存,减轻 Tomcat 压力,提升服务性能 (1)浏览器访问静态资源时,优先读取浏览器本地缓存 (2)访问非静态资源(ajax 查询数据)时,访问服务端 (3)请求到达 Nginx 后,优先读取 Nginx 本地缓存 (4)如果 Nginx 本地缓
阅读全文
摘要:最简单的消息队列模型包括 3 个角色 1、消息队列:存储、管理消息,也被称为消息代理(Message Broker) 2、生产者:发送消息到消息队列 3、消费者:从消息队列获取消息,并处理消息 Redis 提供三种实现 1、List结构:基于 List 结构模拟消息队列 2、PubSub:基本的点对
阅读全文
摘要:概述 1、Jedis (1)为性能和易用性而设计的 Java Redis 客户端 (2)以 Redis 命令作为方法名称,学习成本低,简单实用 (3)但 Redis 实例是线程不安全的,多线程环境下需要配合连接池使用 2、Lettuce (1)高级 Java Redis 客户端,基于 Netty 实
阅读全文
摘要:ACL 1、Access Control List:访问控制列表 2、在 Redis 5 之前,安全规则只有密码控制、rename 调整高危命令(flushdb、keys * 、shutdown 等) 3、Redis 6 提供 ACL 功能对用户进行更细粒度的权限控制 (1)接入权限:用户名和密码
阅读全文
摘要:缓存穿透 1、key 对应 value 不存在于数据源 (1)每次从缓存中无法获取此 key,获取请求都会压到数据源,从而可能压垮数据源 (2)一个一定不存在缓存及查询不到的数据,出于容错考虑,如果从存储层查不到数据,则不写入缓存,这将导致这个不存在的数据每次请求都要到存储层去查询,失去了缓存的意义
阅读全文
摘要:概述 1、Redis 集群是一个提供在多个 Redis 节点间共享数据的程序集 2、优点 (1)通过分区来提供一定程度的可用性,自动分割数据到不同的节点上 (2)在实际环境中,整个集群的部分节点失败,或不可达的情况下,能够继续处理命令 (3)实现对 Redis 水平扩容,即启动 N 个 Redis
阅读全文
摘要:Redis 提供不同级别的持久化方式 1、RDB 持久化方式:在指定的时间间隔,对数据进行快照存储 2、AOF 持久化方式:记录每次对服务器写的操作,当服务器重启时,会重新执行这些命令来恢复原始的数据,AOF 命令以 redis 协议追加保存每次写的操作到文件末尾,Redis 还能对 AOF 文件进
阅读全文
摘要:概述 1、Redis 事务是一个单独的隔离操作 (1)事务中的所有命令都会序列化、按顺序地执行 (2)事务在执行的过程中,不会被其他客户端发送来的命令请求所打断 2、主要作用:串联多个命令,防止别的命令插队 3、使用乐观锁(CAS)实现 Multi、Exec、Discard 1、从输入 Multi
阅读全文
摘要:Bitmaps 1、不是一种数据类型, 实际上是字符串(key-value),但可以对字符串的位进行操作 2、Bitmaps 单独提供一套命令,所以在 Redis 中使用 Bitmaps,和使用字符串的方法不太相同 3、可以把 Bitmaps 类比为一个以 bit 为单位的数组 (1)数组的每个单元
阅读全文
摘要:概述 1、Redis 发布 / 订阅是一种消息通信模式 (1)发送者 (publish) 发送消息 (2)订阅者 (subscribe)接收消息 2、Redis 客户端可以订阅任意数量的频道 PUBLISH channel message 1、将信息 message 发送到指定的频道 channel
阅读全文
摘要:Units 单位 1、配置大小单位 2、定义一些基本度量单位,只支持 bytes,不支持 bit 3、大小写不敏感 INCLUDES 1、可以包含其他配置文件 2、多实例的情况,可以把公用的配置文件提取出来 NETWORK 1、bind bind 127.0.0.1 -::1 (1)默认在回环的 I
阅读全文
摘要:Redis 键(key) 1、查看当前库所有 key keys * 2、判断某个 key 是否存在 exists <key> (1)若存在,则返回 1 (2)若不存在,则返回 0 3、返回 key 所存储 value 的数据结构类型 type <key> (1)如果 key 不存在时,返回 none
阅读全文
摘要:NoSQL 1、Not Only SQL 2、泛指非关系型的数据库 3、不依赖业务逻辑方式存储,而以简单的 key-value 模式存储,因此大大的增加数据库的扩展能力 (1)不遵循 SQL 标准 (2)不支持 ACID (3)远超于 SQL 性能 4、应用场景 (1)数据高并发的读写 (2)海量数
阅读全文