• 非关系型数据库之Redis【Jedis客户端+Jedis连接集群】


    1. Jedis介绍

    Redis不仅是使用命令来操作,现在基本上主流的语言都有客户端支持,比如java、C、C#、C++、php、Node.js、Go等。

    在官方网站里列一些Java的客户端,有Jedis、Redisson、Jredis、JDBC-Redis、等其中官方推荐使用Jedis和Redisson。 在企业中用的最多的就是Jedis。

    2. 前期准备【设置防火墙】

    首先,redis配置 默认禁止远程连接,所以,想用物理机Jedis 访问 redis 虚拟服务器,需要为被访问端口设置防火墙白名单。如果不设置会报错:

    redis远程连接失败,连接超时redis.clients.jedis.exceptions.JedisConnectionException: java.net.SocketTimeoutExce
    
    • 1

    其次,Centos7 默认使用的是firewall作为防火墙,没有 iptable 文件。本文使用的Linux操作系统为CentOS 7。所以下面 只讲解 CentOS 7 如何设置防火墙白名单

    2.1 已启动防火墙服务,添加白名单

    首先, 修改 redis.conf 配置

    • vim redis.conf
    • 下面是要修改的内容
    bind 127.0.0.1  这个需要注释掉,去掉#
    protected-mode no
    
    • 1
    • 2

    然后,检查redis默认端口(6379)添加到白名单

    • firewall-cmd --zone=public --add-port=6379/tcp --permanent
    • 输出success则为成功

    重启防火墙,再次检查端口是否开启firewall-cmd --query-port=6379/tcp

    • systemctl restart firewalld
    • firewall-cmd --query-port=6379/tcp

    在这里插入图片描述

    2.2 未启动防火墙服务(或提前关闭防火墙服务)

    • 修改/ect/firewalld/zones/public.xml文件,并重启。

    在这里插入图片描述

    在这里插入图片描述

    3. 工程搭建

    • 首先 eclipse 创建一个java 工程
    • 然后,添加下面两个 jar 包
      在这里插入图片描述

    3.1 单实例连接 redis

    首先,开启服务器
    在这里插入图片描述

    import org.junit.Test;
    import redis.clients.jedis.Jedis;
    
    public class JedisClient {
    	
    	@Test
    	public void jedisClient() {
    		Jedis jedis = new Jedis("192.168.188.127",6379);
    		
    		//选择 0 号数据库 :0-15
    		jedis.select(0);
    		
    		//通过jedis赋值
    		jedis.set("s2", "222");
    		
    		//通过jedis取值
    		String result = jedis.get("s2");
    		System.out.println(result);
    		
    		jedis.close();
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    输出:

    222
    
    • 1

    3.2 使用 jedis 连接池连接 redis

    import org.junit.Test;
    import redis.clients.jedis.Jedis;
    import redis.clients.jedis.JedisPool;
    
    public class JedisClient {
    	
    	@Test
    	public void jedisPool() {
    		//使用jedis连接池连接redis服务器
    		JedisPool jedispool = new JedisPool("192.168.188.127",6379);
    		
    		//通过连接池获取Jedis对象
    		Jedis jedis = jedispool.getResource();
    		
    		//jedis.set("s4", "444");
    		
    		String result = jedis.get("s4");
    		
    		System.out.println(result);
    		
    		//关闭jedis客户端
    		jedis.close();
    		
    		//关闭连接池
    		jedispool.close();
    			
    	}
    
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30

    输出

    444
    
    • 1

    4. Jedis连接集群

    redis集群搭建详细讲解

    4.1 代码

    package jedishm19;
    
    import java.util.HashSet;
    import java.util.Set;
    import org.junit.Test;
    import redis.clients.jedis.HostAndPort;
    import redis.clients.jedis.Jedis;
    import redis.clients.jedis.JedisCluster;
    import redis.clients.jedis.JedisPool;
    
    
    public class JedisClient {
    	
    	@Test
    	public void jedisCluster() {
    		//创建jedisCluster
    		Set<HostAndPort> nodes = new HashSet<>();
    		nodes.add(new HostAndPort("192.168.188.127", 7001));
    		nodes.add(new HostAndPort("192.168.188.127", 7002));
    		nodes.add(new HostAndPort("192.168.188.127", 7003));
    		nodes.add(new HostAndPort("192.168.188.127", 7004));
    		nodes.add(new HostAndPort("192.168.188.127", 7005));
    		nodes.add(new HostAndPort("192.168.188.127", 7006));
    		
    		JedisCluster cluster = new JedisCluster(nodes);
    		
    		cluster.set("s6", "666");
    		
    		String result = cluster.get("s6");
    		System.out.println(result);
    		
    		cluster.close();
    		
    	}
    
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37

    输出:

    666
    
    • 1
  • 相关阅读:
    电脑版剪映怎么倒放?
    常见的HTTP请求方式
    【白话spring cloud(一)】为什么要用spring cloud?
    2022 第四周全球 AI 模型周报
    成都瀚网科技:抖音上线地方方言自动翻译功能
    一文剖析 PolarDB HTAP 的列存数据压缩
    Redis6笔记04 主从复制,集群,应用问题,Redis6新功能
    Spark学习记录1--简介与部署
    Java版分布式微服务云开发架构 Spring Cloud+Spring Boot+Mybatis 电子招标采购系统功能清单
    mathtype试用期后如何继续使用?
  • 原文地址:https://blog.csdn.net/qq_40926887/article/details/125997238