在日常的工作学习中需要操作Redis,JavaApi操作Redis是一个必不可少的技术那么我们直接进入正题

 目录

         1.创建maven项目导入相应的jar包

         2.创建初始化方法

         3.操作Redis字符串类型

         4.操作Redis Hash类型

         5.操作Redis list类型

         6.操作Redis set类型

         7.关闭资源


1.创建maven项目导入相应的jar包

<dependencies>
        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>2.9.0</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>6.14.3</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>7.1.0</version>
            <scope>compile</scope>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.0</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                    <!--    <verbal>true</verbal>-->
                </configuration>
            </plugin>
        </plugins>
    </build>

2.创建初始化方法

// 实例连接池
    private JedisPool pool;

    /**
     * 初始化操作
     */
    @BeforeTest
    public void init() {
        pool = new JedisPool("node01", 6379);
    }

3.操作Redis字符串类型

/**
     * 对字符串的操作
     */
//    @Test
    public void str() {
        // 创建连接对象
        Jedis resource = pool.getResource();
        // 添加
        resource.set("str01", "张三");
        // 查询
        String str01 = resource.get("str01");
        System.out.println("查询str01的结果\t" + str01);
        //添加多个
        resource.mset("str02", "李四", "str03", "1");
        // 查询多个
        List<String> str02 = resource.mget("str02", "str03");
        System.out.println("查询str01 str02的结果\t" + str02);
        // 设置过期时间
        resource.setex("hello", 10, "hello");
        // key 存在是添加 成功返回1  失败返回 0
        System.out.println(resource.setnx("hello", "hello"));
        // 查询部分 startOffset开始的索引 endOffset 结束的索引  hell
        System.out.println("查询hello\t" + resource.getrange("hello", 0, 3));
        //查询长读 输入key
        System.out.println("查询hello的长度\t" + resource.strlen("hello"));
        // 追加
        resource.append("hello", "append");
        // 替换 key :操作的的key   offset:从索引几开始替换  value:替换的内容
        resource.setrange("hello", 0, "AAA");
        System.out.println("查询hello\t" + resource.get("hello"));
        // 累加1
        resource.incr("str03");
        System.out.println("str03加1的结果\t" + resource.get("str03"));
        // 设置累加N
        resource.incrBy("str03", 20);
        System.out.println("查询str03加20后的结果\t" + resource.get("str03"));
        // 减1
        resource.decr("str03");
        System.out.println("查询str03减1的结果\t" + resource.get("str03"));
        // 减N
        resource.decrBy("str03", 10);
        System.out.println("查询str03减10的结果\t" + resource.get("str03"));
    }

4.操作Redis Hash类型

/**
     * 对 hash操作
     */
//    @Test
    public void hash() {
        // 获取连接对象
        Jedis resource = pool.getResource();
        // 添加数据
        resource.hset("hkey01", "name1", "李四");
        resource.hset("hkey02", "name2", "张三");
        //不存在是添加
        resource.hsetnx("hkey02", "name2", "赵刘");
        // 一次性设置多个值
        Map<String, String> hash = new HashMap<>();
        hash.put("name", "zhangsan");
        hash.put("age", "18");
        hash.put("sex", "1");
        resource.hmset("hkey03", hash);
        // 查询hkey02
        System.out.println("查询hkey02 name2\t" + resource.hget("hkey02", "name2"));
        // 查询是否存在 hkey02中的name2 存在返回true
        System.out.println("判断hkey02中的name2是否存在\t" + resource.hexists("hkey02", "name2"));
        // 查询 hkey03 下的所有值
        System.out.println("hkey03的所有的值\t" + resource.hgetAll("hkey03"));
        // 查询 hkey03的所有字段
        System.out.println("hkey03的字段\t" + resource.hkeys("hkey03"));
        // 查询hkey03的数量
        System.out.println("查询hkey03的数量\t" + resource.hlen("hkey03"));
        // 查询hkey03的多个值 name age
        System.out.println("查询hkey03的多个值\t" + resource.hmget("hkey03", "name", "age"));
        // 删除数据
        resource.hdel("hkey03", "sex");
        // 累加(1-N) hkey03中的age 10
        resource.hincrBy("hkey03", "age", 10);
        System.out.println("hkey03中的age结果\t" + resource.hget("hkey03", "age"));
    }

5.操作Redis list类型

/**
     * 对list 操作
     */
//    @Test
    public void list() {
        // 获取连接对象
        Jedis resource = pool.getResource();
        // 可以添加一个或多个
        resource.lpush("listkey", "zhangsan", "lisi");
        // 插入头部
        resource.lpushx("listkey", "wangwu");
        //右边插入
        resource.rpush("listkey", "AA", "BB");
        // 插入尾部
        resource.rpushx("listkey", "CC");
        // 插入某个数据之前
        resource.linsert("listkey", BinaryClient.LIST_POSITION.BEFORE, "AA", "aa");
        // 插入某个数据之后
        resource.linsert("listkey", BinaryClient.LIST_POSITION.AFTER, "CC", "DD");
        // 查询listkeyd的所有数据 -1 默认查询所有数据
        System.out.println("查询listkey的所有数据\t" + resource.lrange("listkey", 0, -1));
        // 通过索引查询
        System.out.println("通过索引查询\t" + resource.lindex("listkey", 0));
        // 查询listkey的长度
        System.out.println("查询listkey的数据长度\t" + resource.llen("listkey"));
        // 数据修减 保留 0 到 3 的索引
        resource.ltrim("listkey", 0, 3);
        System.out.println("查询listkey修减后的数据\t" + resource.lrange("listkey", 0, -1));
        // 移除listkey的第一个数据
        resource.lpop("listkey");
        //移除listkey的最后一个数据
        resource.rpop("listkey");
        System.out.println("查询listke移除第一个和最后一个的数据\t" + resource.lrange("listkey", 0, -1));
        // 移除最后一给数据保存到另一个列表
        resource.rpoplpush("listkey", "listkey");
        System.out.println("查询listkey数据\t" + resource.lrange("listkey", 0, -1));
    }

6.操作Redis set类型

/**
     * 对set 操作
     */
//    @Test
    public void set() {
        // 获取连接对象
        Jedis resource = pool.getResource();
        // 向集合添加一个或多个
        resource.sadd("skey1", "zhnangsan", "lisi");
        resource.sadd("skey2", "wangwu", "lisi");
        // 查询结合的所有数据
        System.out.println("查询skey1的数据:" + resource.smembers("skey1"));
        // 查询数据总量
        System.out.println("查询skey1的数据总量:" + resource.scard("skey1"));
        // 查询差值
        System.out.println("查询skey1和skey2的差值" + resource.sdiff("skey1", "skey2"));
        // 查询差值写入到新的集合
        resource.sdiffstore("skey3", "skey1", "skey2");
        // 查询交集
        System.out.println(resource.sinter("skey1", "skey2"));
        // 查询交集写入到新的集合
        resource.sinterstore("skey4", "skey1", "skey2");
        // 查询某一个数据是否在集合中
        System.out.println("查询zhnangsan是否在skey1\t" + resource.sismember("skey1", "zhnangsan"));
        // 返回集合随机N个数据
        System.out.println("返回随机skey1\t" + resource.srandmember("skey1", 1));
        // 查询并集
        System.out.println("查询skey1与skey2的并集\t" + resource.sunion("skey1", "skey2"));
        // 查询并集写入到一个新的结合
        resource.sunionstore("skey5", "skey1", "skey2");
        //将数据在一个集合移动到另一个集合
        resource.smove("skey1", "skey2", "zhangsan");
        // 移除结果中的某个数据
        resource.srem("skey2", "skey2", "zhangsan");
    }

7.关闭资源

/**
     * 关闭资源
     */
    @AfterTest
    public void close() {
        pool.close();
    }