Redis集群的分类:

1.主从架构(主服务器负责写,从服务器负责读)。

2.哨兵架构(哨兵服务器负责监控主服务器的状态,主服务器如果宕机,将从服务器提升为主)。

 

3.集群架构(并发能力,可用性高于哨兵架构),

一个redis集群包含16384个插槽(hash slot),数据库中的每个键都属于这16384个插槽的其中一个。

集群使用公式:将数据的key进行hash运算,获得保存数据的位置,该位置可能是集群中任意一台服务器。

 搭建Redis伪集群的步骤

真正的集群:每个Redis安装到不同服务器上。

伪集群:在一台机器上安装多个Redis实例。

至少需要多少服务器:

master的选举需要半数以上服务器投票支持,最少需要三台服务器,每台服务器需要有一个备份,最少需要六台服务器。

1)新建redis-cluster目录,新建redis01~redis06六个子目录 cd /usr/local mkdir redis-cluster cd redis-cluster mkdir redis01  .... 2)复制redis/src和redis.conf到redis01~redis06目录中 cd redis cp -r src/* /usr/local/redis-cluster/redis01 cp reids.conf /usr/local/redis-cluster/redis01 .... 3)修改redis.conf daemonize yes cluster-enabled yes port 7001~~~~7006  4)在redis-cluster中创建启动脚本vi start.sh cd redis01 ./redis-server redis.conf cd .. cd redis02 ./redis-server redis.conf cd .. cd redis03 ./redis-server redis.conf cd .. cd redis04 ./redis-server redis.conf cd .. cd redis05 ./redis-server redis.conf cd .. cd redis06 ./redis-server redis.conf cd .. 5)启动redis实例 chmod +x start.sh ./start.sh 6)创建集群 /usr/local/redis/src/redis-cli --cluster create 192.168.52.3:7001 192.168.52.3:7002 192.168.52.3:7003 192.168.52.3:7004 192.168.52.3:7005 192.168.52.3:7006 --cluster-replicas 1 7)访问集群 /usr/local/redis/src/redis-cli -h 192.168.223.223 -c -p 7001

布隆过滤器(Bloom Filter)是1970年由布隆提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都比一般的算法要好的多,缺点是有一定的误识别率和删除困难。

特点:判断存在的数据不一定存在,判断不存在的数据一定不存在。

 

 

Redis本身就支持布隆过滤器的实现

Redission工具库,提供了基于Redis实现分布式工具,如:分布式锁、布隆过滤器、分布式原子类等。

添加依赖:

        <dependency>             <groupId>org.springframework.boot</groupId>             <artifactId>spring-boot-starter-data-redis</artifactId>         </dependency>          <!-- https://mvnrepository.com/artifact/org.redisson/redisson-spring-boot-starter -->         <dependency>             <groupId>org.redisson</groupId>             <artifactId>redisson-spring-boot-starter</artifactId>             <version>3.17.0</version>         </dependency>

配置类

@Configuration public class RedissonConfig {      @Bean     public RedissonClient redissonClient(){         Config config = new Config();         config.setTransportMode(TransportMode.NIO);         SingleServerConfig singleServerConfig = config.useSingleServer();         //可以用"rediss://"来启用SSL连接         singleServerConfig.setAddress("redis://127.0.0.1:6379"); //        singleServerConfig.setPassword("123456");         RedissonClient redisson = Redisson.create(config);          return redisson;     } }

测试类

@SpringBootTest class RedisdemoApplicationTests {      @Autowired     private RedissonClient client;      @Test     void contextLoads() {         //创建布隆过滤器         RBloomFilter<String> bloom = client.getBloomFilter("bloom-filter");         //初始化,参数1 序列长度  识别误差率         bloom.tryInit(10000000L,0.03);         //添加数据到过滤器         bloom.add("hello");         bloom.add("world");         bloom.add("app");         //判断过滤器中是否存在该值         System.out.println(bloom.contains("hello"));         System.out.println(bloom.contains("world"));         System.out.println(bloom.contains("java"));     }  }