redis

2022-02-22  本文已影响0人  Supreme_DJK

Redis:

slot

在redis集群内部,采用slot槽位的逻辑管理方式, 集群内部共有16384(2的14次方)个Slot,集群内每个Redis Instance负责其中一部分的Slot的读写。一个Key到底属于哪个Slot,由分片算法:

crc16(key) % 16384

决定。也正是通过此分片算法,将不同的key以相对均匀的方式分配到不同的slot上。

watch:当执行多键值事务操作时,Redis不仅要求这些键值需要落在同一个Redis实例上,还要求落在同一个slot上。

官方介绍MULTI 、 EXEC 、 DISCARD 和 WATCH 是 Redis 事务相关的命令,事务可以一次执行多个命令,但是必须满足2个条件:

事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。
事务是一个原子操作:事务中的命令要么全部被执行,要么全部都不执行。执行和是否成功是2个概念,并不是一个失败报错等,其他就失败。redis对事务是部分支持。如果最开始语法等就有提交错误,就相当于java的编译器都过不了,那么肯定全部不执行。如果在执行过程中报错,已经全部执行了,但是谁报错找谁,其他正常执行放行。各取所需!这里的事务并不是要么全部成功,要么全部失败,全部执行和全部成功(或者都失败)是2个概念。

hashtag

Hash Tag原理是:当一个key包含 {} 的时候,不对整个key做hash,而仅对 {}包括的字符串做hash。

Hash Tag可以让不同的key拥有相同的hash值,从而分配在同一个槽里;这样针对不同key的批量操作(mget/mset等),以及事务、Lua脚本等都可以支持。不过Hash Tag可能会带来数据分配不均的问题,这时需要:(1)调整不同节点中槽的数量,使数据分布尽量均匀;(2)避免对热点数据使用Hash Tag,导致请求分布不均。

bigkey

高可用

主从复制

  1. 一台redis服务的数据,复制到多台redis服务器。前者称为主节点,后者为从节点
  2. 数据的复制是单向的,只能从主节点复制到从节点

哨兵

  1. 能够自动完成故障发现和转移,从而实现高可用
  2. 由一组哨兵节点和一组(或多组)主从复制节点组成

cluster集群

  1. 由多个主从复制的结构组成
  2. 每个主从复制的结构看做一个节点
上一篇 下一篇

猜你喜欢

热点阅读