Redis使用笔记

1. 数据类型和接口

单机模式下,Redis支持以下的数据结构和接口:
Redis使用笔记_第1张图片

2. Redis集群

Redis集群实现了单机模型功能集合的一个子集,包含所有单个key的功能。Redis 集群中的节点有以下责任:

  • 持有键值对数据。
  • 记录集群的状态,包括键到正确节点的映射(mapping keys to right nodes)。
  • 自动发现其他节点,识别工作不正常的节点,并在有需要时,在从节点中选举出新的主节点。

Redis 集群的键空间被分割为 16384 个槽(slot), 集群的最大节点数量也是 16384 个。每个主节点都负责处理 16384 个哈希槽的其中一部分。以下是负责将键映射到槽的算法:

HASH_SLOT = CRC16(key) mod 16384

集群的容错功能是通过使用主节点(master)和从节点(slave)两种角色(role)的节点(node)来实现的:

  • 主节点和从节点使用完全相同的服务器实现, 它们的功能(functionally)也完全一样, 但从节点通常仅用于替换失效的主节点,也就是所谓的冷备份。
  • 不过, 如果不需要保证“先写入,后读取”操作的一致性(read-after-write consistency), 那么可以使用从节点来执行只读查询。

客户端可以自由地向集群中的任何一个节点发送命令请求, 并可以在有需要时, 根据转向错误所提供的信息, 将命令转发至正确的节点, 所以在理论上来说, 客户端是无须保存集群状态信息的。

3.CAP分析

对redis集群进行CAP分析,有集群的实现方式,不难发现

  1. 对Redis集群的读写操作,都由负责给定key的节点处理,redis的单节点是单线程处理的,所以是满足强一致性C的。
  2. 某个主节点失效的情况下,由此主节点处理的key的读写会返回失败。所以是不满足可用性的A。
  3. Redis可以在部分节点失效的情况下,继续提供服务,所以是满足分区容错性P的。

可以看出Redis是比较典型的CP型分布式系统。

4. 高效指南

SCAN命令

SCAN 命令及其相关的 SCAN 命令、 HSCAN 命令和 ZSCAN 命令都用于增量地迭代(incrementally iterate)一集元素(a collection of elements):

  • SCAN 命令用于迭代当前数据库中的数据库键。
  • SSCAN 命令用于迭代集合键中的元素。
  • HSCAN 命令用于迭代哈希键中的键值对。
  • ZSCAN 命令用于迭代有序集合中的元素(包括元素成员和元素分值)。

以上列出的四个命令都支持增量式迭代, 它们每次执行都只会返回少量元素, 所以这些命令可以用于生产环境, 而不会出现像KEYS命令、SMEMBERS 命令带来的问题 —— 当 KEYS 命令被用于处理一个大的数据库时, 又或者 SMEMBERS 命令被用于处理一个大的集合键时, 它们可能会阻塞服务器达数秒之久。

你可能感兴趣的:(Redis使用笔记)