Redis(三)Redis客户端

523 阅读2分钟

Redis命令行客户端

微信图片_20210807132809.png

  • 命令格式

    ./redis-cli -h 127.0.0.1 -p 6379

  • 参数说明

    -h:redis服务器的ip地址
    
    -p:redis实例的端口号
    
  • 默认方式

    ./redis-cli

    • 默认主机地址是127.0.0.1
    • 默认端口是6379
  • 图例

微信图片_20210807133518.png

Java客户端Jedis

Jedis介绍

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

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

Jedis同样也是托管在github上,地址:github.com/xetorthio/j…

添加依赖

<dependencies>

  <dependency>

    <groupId>redis.clients</groupId>

    <artifactId>jedis</artifactId>

    <version>2.9.0</version>

  </dependency>

  <dependency>

   <groupId>org.springframework</groupId>

   <artifactId>spring-context</artifactId>

   <version>5.0.7.RELEASE</version>

  </dependency>

  <dependency>

   <groupId>org.springframework</groupId>

   <artifactId>spring-test</artifactId>

   <version>5.0.7.RELEASE</version>

  </dependency>

<!-- 单元测试Junit -->

  <dependency>

   <groupId>junit</groupId>

   <artifactId>junit</artifactId>

   <version>4.12</version>

  </dependency>

</dependencies>

<build>

    <plugins>

    <!-- 配置Maven的JDK编译级别 -->

        <plugin>

            <groupId>org.apache.maven.plugins</groupId>

            <artifactId>maven-compiler-plugin</artifactId>

            <version>3.2</version>

            <configuration>

                <source>1.8</source>

                <target>1.8</target>

                <encoding>UTF-8</encoding>

            </configuration>

        </plugin>

    </plugins>

</build>

单实例连接

@Test

public void testJedis() {

    //创建一个Jedis的连接

    Jedis jedis = new Jedis("127.0.0.1", 6379);

    //执行redis命令

    jedis.set("mytest", "hello world, this is jedis client!");

    //从redis中取值

    String result = jedis.get("mytest");

    //打印结果

    System.out.println(result);

    //关闭连接

    jedis.close();

}

连接池连接

@Test

public void testJedisPool() {

    //创建一连接池对象

    JedisPool jedisPool = new JedisPool("127.0.0.1", 6379);

    //从连接池中获得连接

    Jedis jedis = jedisPool.getResource();

    String result = jedis.get("mytest") ;
    
    System.out.println(result);

    //关闭连接

    jedis.close();

    //关闭连接池

    jedisPool.close();

}

连接redis集群

创建JedisCluster类连接redis集群


public void testJedisCluster() throws Exception {

    //创建一连接,JedisCluster对象,在系统中是单例存在

    Set<HostAndPort> nodes = new HashSet<>();

    nodes.add(new HostAndPort("192.168.242.129", 7001));

    nodes.add(new HostAndPort("192.168.242.129", 7002));

    nodes.add(new HostAndPort("192.168.242.129", 7003));

    nodes.add(new HostAndPort("192.168.242.129", 7004));

    nodes.add(new HostAndPort("192.168.242.129", 7005));

    nodes.add(new HostAndPort("192.168.242.129", 7006));

    JedisCluster cluster = new JedisCluster(nodes);

    //执行JedisCluster对象中的方法,方法和redis一一对应。

    cluster.set("cluster-test", "my jedis cluster test");

    String result = cluster.get("cluster-test");

    System.out.println(result);

    //程序结束时需要关闭JedisCluster对象

    cluster.close();

}

Jedis整合spring

配置spring配置文件applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

  xsi:schemaLocation="http://www.springframework.org/schema/beans

    http://www.springframework.org/schema/beans/spring-beans.xsd">

    <!-- 连接池配置 -->

    <bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">

        <!-- 最大连接数 -->

        <property name="maxTotal" value="30" />

        <!-- 最大空闲连接数 -->

        <property name="maxIdle" value="10" />

        <!-- 每次释放连接的最大数目 -->

        <property name="numTestsPerEvictionRun" value="1024" />

        <!-- 释放连接的扫描间隔(毫秒) -->

        <property name="timeBetweenEvictionRunsMillis" value="30000" />

        <!-- 连接最小空闲时间 -->

        <property name="minEvictableIdleTimeMillis" value="1800000" />

        <!-- 连接空闲多久后释放, 当空闲时间>该值 且 空闲连接>最大空闲连接数 时直接释放 -->

        <property name="softMinEvictableIdleTimeMillis" value="10000" />

        <!-- 获取连接时的最大等待毫秒数,小于零:阻塞不确定的时间,默认-1 -->

        <property name="maxWaitMillis" value="1500" />

        <!-- 在获取连接的时候检查有效性, 默认false -->

        <property name="testOnBorrow" value="true" />

        <!-- 在空闲时检查有效性, 默认false -->

        <property name="testWhileIdle" value="true" />

        <!-- 连接耗尽时是否阻塞, false报异常,ture阻塞直到超时, 默认true -->

        <property name="blockWhenExhausted" value="false" />
        
    </bean>
    
    <!-- redis单机 通过连接池 -->

    <bean id="jedisPool" class="redis.clients.jedis.JedisPool" destroy-method="close">

        <constructor-arg name="poolConfig" ref="jedisPoolConfig" />

        <constructor-arg name="host" value="192.168.10.135" />

        <constructor-arg name="port" value="6379" />

    </bean>
    
    <!-- redis集群 -->

<bean id="jedisCluster" class="redis.clients.jedis.JedisCluster">

    <constructor-arg index="0">

    <set>

        <bean class="redis.clients.jedis.HostAndPort">
    
            <constructor-arg index="0" value="192.168.10.135"></constructor-arg>

            <constructor-arg index="1" value="7001"></constructor-arg>

        </bean>

        <bean class="redis.clients.jedis.HostAndPort">

            <constructor-arg index="0" value="192.168.10.135"></constructor-arg>

            <constructor-arg index="1" value="7002"></constructor-arg>

        </bean>

        <bean class="redis.clients.jedis.HostAndPort">

            <constructor-arg index="0" value="192.168.10.135"></constructor-arg>

            <constructor-arg index="1" value="7003"></constructor-arg>

        </bean>

        <bean class="redis.clients.jedis.HostAndPort">

            <constructor-arg index="0" value="192.168.10.135"></constructor-arg>

            <constructor-arg index="1" value="7004"></constructor-arg>

        </bean>

        <bean class="redis.clients.jedis.HostAndPort">

            <constructor-arg index="0" value="192.168.10.135"></constructor-arg>

            <constructor-arg index="1" value="7005"></constructor-arg>

        </bean>

        <bean class="redis.clients.jedis.HostAndPort">

            <constructor-arg index="0" value="192.168.10.135"></constructor-arg>

            <constructor-arg index="1" value="7006"></constructor-arg>

        </bean>

</set>
</constructor-arg>

<constructor-arg index="1" ref="jedisPoolConfig"></constructor-arg>

</bean>

</beans>

测试代码

import javax.annotation.Resource;

import org.junit.Test;

import org.junit.runner.RunWith;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.test.context.ContextConfiguration;

import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import redis.clients.jedis.Jedis;

import redis.clients.jedis.JedisCluster;

import redis.clients.jedis.JedisPool;

@RunWith(SpringJUnit4ClassRunner.class)

@ContextConfiguration(locations = "classpath:application.xml")

public class TestJedis2 {

@Autowired

private JedisPool jedisPool;

@Resource

private JedisCluster cluster;

@Test

public void testJedisPool() {

// 从连接池中获得连接

Jedis jedis = jedisPool.getResource();

String result = jedis.get("mytest");

System.out.println(result);

// 关闭连接

jedis.close();

}

@Test

public void testJedisCluster() throws Exception {

// 执行JedisCluster对象中的方法,方法和redis一一对应。

cluster.set("cluster-test", "my jedis cluster test");

String result = cluster.get("cluster-test");

System.out.println(result);

}

}