Redis安全设置实施:
1、访问网络受限,2、设置redis密码
#设置网络访问ip
-bind 127.0.0.1
#设置密码
-requirepass 123456
#设置访问主服务器密码
-masterauth 123456
#在sentinel哨兵配置文件sentinel.conf中配置
-sentinel auth-pass mymaster 123456
#Redis命令行登录 其中a就是访问的密码
-./redis-cli -h 192.168.200.129 -p 6318 -a 123456
内置集群的架构特点:
1、所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽。
2、节点的fail是通过集群中超半数的master节点检测失效时才生效。
3、客户端与redis节点直连,不需要连接集群所有节点,只需要连接集群中任意可用节点即可
4、集群把所有的物理节点映射到【0-16383】slot上,cluster负责维护node<>slot<>key关系
集群的数据分配:
node<>slot<>key关系意思是,说的是数据是如何放到集群的节点中
Redis集群中有16384个哈希槽,每个key通过CRC16校验后对16384取模来决定放置那个槽,集群的每个节点负责一部分哈希槽
#查看节点中的参数
./redis-cli -p 7001 cluster nodes | grep master
redis是如何保证一致性的:
主节点对命令的复制工作发生在返回命令之后,因为如果主节点每次处理命令请求都需要等待复制操作完成的话,那么主节点处理命令请求的速度将降低。
当然现在这种情况有问题,如果回复过后宕机了,并没有完成操作。
需要在性能和一致性之间做出选择。
传统哈希方案
传统方案是使用对象的哈希值,对节点个数取模,再映射到相应编号的节点,这种方案在节点个数变动时,绝大多数对象的映射关系会失败而需要迁移。
例:有三个节点,就是取3的模,分配数据。随着节点的变化哈希key对不同的数据取模进行存放数据。