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")); } }
热门文章
- 1月27日|Clash/V2ray/SSR/Shadowrocket每天更新22.7M/S免费节点订阅链接地址分享
- 三国杀动态皮肤为什么没有特效(三国杀手游我动态皮肤为什么没有特效)
- ElasticSearch7.3学习Filter与Query对比、使用explain关键字分析语法
- 猫根本不必打三联多少钱(猫咪需要打三联多少钱)
- 2月24日|Clash/V2ray/SSR/Shadowrocket每天更新21.8M/S免费节点订阅链接地址分享
- 1月21日|Shadowrocket/Clash/V2ray/SSR每天更新22.2M/S免费节点订阅链接地址分享
- 动物医院牌匾设计图片(动物医院名片设计)
- 2月8日|V2ray/SSR/Clash/Shadowrocket每天更新18.4M/S免费节点订阅链接地址分享
- css图片上面显示文字
- 有没有24小时营业的宠物店(这附近哪里有24小时宠物店)