Redis学习(四):Redis的JavaAPI操作


redis不仅可以通过命令行进行操作,同时redis也可以通过javaAPI进行操作,我们可以通过使用javaAPI来对redis数据库当中的各种数据类型进行操作

第一步:创建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>
    </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>

第二步:连接以及关闭redis客户端

private JedisPool jedisPool;
private JedisPoolConfig config;

@BeforeTest
public void redisConnectionPool(){
    config = new JedisPoolConfig();
    config.setMaxIdle(10);
    config.setMaxWaitMillis(3000);
    config.setMaxTotal(50);
    config.setMinIdle(5);
    jedisPool = new JedisPool(config, "node01", 6379);
}
@AfterTest
public void closePool(){
    jedisPool.close();
}

第三步:redis的javaAPI操作

操作string类型数据

/**
 * 添加string类型数据
 */
@Test
public void addStr(){
    Jedis resource = jedisPool.getResource();
    //添加
    resource.set("jediskey", "jedisvalue");
    //查询
    String jediskey = resource.get("jediskey");
    System.out.println(jediskey);
    //修改
    resource.set("jediskey","jedisvalueUpdate");
    //删除
    resource.del("jediskey");
    //实现整型数据的增长操作
    resource.incr("jincr");
    resource.incrBy("jincr",3);
    String jincr = resource.get("jincr");
    System.out.println(jincr);
    resource.close();
}

操作hash列表类型数据

/**
 * 操作hash类型数据
 */
@Test
public void hashOperate(){
    Jedis resource = jedisPool.getResource();
    //添加数据
    resource.hset("jhsetkey","jmapkey","jmapvalue");
    resource.hset("jhsetkey","jmapkey2","jmapvalue2");
    //获取所有数据
    Map<String, String> jhsetkey = resource.hgetAll("jhsetkey");
    for (String s : jhsetkey.keySet()) {
        System.out.println(s);
    }
    //修改数据
    resource.hset("jhsetkey","jmapkey2","jmapvalueupdate2");
    Map<String, String> jhsetkey2 = resource.hgetAll("jhsetkey");
    for (String s : jhsetkey2.keySet()) {
        System.out.println("修改数据打印"+s);
    }
    //删除数据
    resource.del("jhsetkey");

    Set<String> jhsetkey1 = resource.keys("jhsetkey");
    for (String result : jhsetkey1) {
        System.out.println(result);
    }
}

操作list类型数据

/**
 * 操作list类型的数据
 */
@Test
public void listOperate(){
    Jedis resource = jedisPool.getResource();
    //从左边插入元素
    resource.lpush("listkey","listvalue1","listvalue1","listvalue2");

    //从右边移除元素
    resource.rpop("listkey");
    //获取所有值
    List<String> listkey = resource.lrange("listkey", 0, -1);
    for (String s : listkey) {
        System.out.println(s);
    }
    resource.close();
}

操作set类型的数据

/**
 * set类型数据操作
 */
@Test
public void setOperate(){
    Jedis resource = jedisPool.getResource();
    //添加数据
    resource.sadd("setkey", "setvalue1", "setvalue1", "setvalue2", "setvalue3");
    //查询数据
    Set<String> setkey = resource.smembers("setkey");
    for (String s : setkey) {
        System.out.println(s);
    }
    //移除掉一个数据
    resource.srem("setkey","setvalue3");
    resource.close();
}

练习题

使用List实现以下功能(javaAPI)

练习:
1、创建两个list 名字分别为ltest1 ltest2.
2、Ltest1 从左到右为1 2 3 4 5 6 7 8 9,ltest2 从左到右为 f e d c b a
3、在Ltest1的3 左边插入3333
4、在6右边插入6666
5、通过索引查询Ltest2 索引为3的数据
6、将ltest2的e 修改为EEE
7、只保留ltest2的EEE d c b
8、移除ltest1右边一个数据并插入ltest2的左边

package HomeWork;

import redis.clients.jedis.BinaryClient;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

import java.util.List;

/**
 * @Author wzc
 * @Version v 1.0
 * @Date 2020/3/15 16:52
 */
public class HomeWork01 {

    public static void main(String[] args) {
        //1、设置数据库连接池
        JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
        //2、设置连接池的最大连接数
        jedisPoolConfig.setMaxTotal(50);
        //3、设置最大空闲数
        jedisPoolConfig.setMaxIdle(10);
        //4、设置最小空闲数
        jedisPoolConfig.setMinIdle(5);
        //5、设置连接最大等待时间(超时时间)
        jedisPoolConfig.setMaxWaitMillis(10000);
        //6、获取redis连接池
        JedisPool jedisPool = new JedisPool(jedisPoolConfig, "node01", 6379);
        //7、获取redis连接对象
        Jedis jedis = jedisPool.getResource();
        //8、通过对象调用API
        //创建两个list,名字分别为 ltest1;ltest1 从左到右为1 2 3 4 5 6 7 8 9
        //创建两个list,名字分别为 ltest2;ltest2 从左到右为 f e d c b a
        jedis.lpush("ltest1", "9", "8", "7", "6", "5", "4", "3", "2", "1");
        jedis.lpush("ltest2", "a", "b", "c", "d", "e", "f");
        
        //在Ltest1的3 左边插入3333
        jedis.linsert("ltest1", BinaryClient.LIST_POSITION.BEFORE, "3", "3333");
        
        //在6右边插入6666
        jedis.linsert("ltest1", BinaryClient.LIST_POSITION.AFTER, "6", "6666");
        
        //通过索引查询Ltest2 索引为3的数据
        jedis.lindex("ltest2", 3);
        
        //将ltest2的e 修改为EEE
        jedis.lset("ltest2", 1, "EEE");
        
        //只保留ltest2的EEE d c b
        jedis.ltrim("ltest2", 1, 4);
        
        //移除ltest1右边一个数据并插入ltest2的左边
        jedis.rpoplpush("ltest1", "ltest2");
        
        //查询ltest1 所有数据并打印
        List<String> ltest1 = jedis.lrange("ltest1", 0, -1);
        for (String s : ltest1) {
            System.out.println("ltest1所有数据:" + s);
        }
        
        System.out.println("-----------------------");
        
        //查询ltest2 所有数据并打印
        jedis.lrange("ltest1", 0, -1);
        List<String> ltest2 = jedis.lrange("ltest2", 0, -1);
        for (String s : ltest2) {
            System.out.println("ltest2所有数据:" + s);
        }
    }
}

**最终结果 **
在这里插入图片描述

使用Set实现以下功能(javaAPI)

练习:
1、添加set 集合 setdemo1(aa,bb,cc,dd,ee,ff) setdemo2(11,22,33,dd,ee,ff)
2、将两个集合的交集写入setdemo3
3、将两个集合的并集写入setdemo4
4、将setdemo2集合与setdemo1集合的差集写入setdemo5
5、将setdemo2内的11 移动到setdemo1内
6、删除setdemo1内的bb

package HomeWork;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

import java.util.Set;

/**
 * @Author wzc
 * @Version v 1.0
 * @Date 2020/3/15 17:48
 */
public class HomeWork02 {

    public static void main(String[] args) {
        //1、设置数据库连接池
        JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
        //2、设置连接池的最大连接数
        jedisPoolConfig.setMaxTotal(50);
        //3、设置最大空闲数
        jedisPoolConfig.setMaxIdle(10);
        //4、设置最小空闲数
        jedisPoolConfig.setMinIdle(5);
        //5、设置连接最大等待时间(超时时间)
        jedisPoolConfig.setMaxWaitMillis(10000);
        //6、获取redis连接池
        JedisPool jedisPool = new JedisPool(jedisPoolConfig, "node01", 6379);
        //7、获取redis连接对象
        Jedis jedis = jedisPool.getResource();
        //8、通过对象调用API
        //添加set 集合 setdemo1(aa,bb,cc,dd,ee,ff)    setdemo2(11,22,33,dd,ee,ff)
        jedis.sadd("setdemo1", "aa","bb","cc","dd","ee","ff");
        jedis.sadd("setdemo2", "11","22","33","dd","ee","ff");
        
        //将两个集合的交集写入setdemo3
        jedis.sinterstore("setdemo3", "setdemo1","setdemo2");
        
        //将两个集合的并集写入setdemo4
        jedis.sunionstore("setdemo4","setdemo1","setdemo2");
        
        //将setdemo2集合与setdemo1集合的差集写入setdemo5
        jedis.sdiffstore("setdemo5","setdemo2","setdemo1");
        
        //将setdemo2内的11 移动到setdemo1内
        jedis.smove("setdemo2", "setdemo1", "11");
        
        //删除setdemo1内的bb
        jedis.srem("setdemo1", "bb");
        
        //查询各set集合所有数据,并打印
        Set<String> setdemo1 = jedis.smembers("setdemo1");
        Set<String> setdemo2 = jedis.smembers("setdemo2");
        Set<String> setdemo3 = jedis.smembers("setdemo3");
        Set<String> setdemo4 = jedis.smembers("setdemo4");
        Set<String> setdemo5 = jedis.smembers("setdemo5");
        
        System.out.println("以下为setdemo1所有数据");
        for (String s : setdemo1) {
            System.out.println(s);
        }
        
        System.out.println("以下为setdemo2所有数据");
        for (String s : setdemo2) {
            System.out.println(s);
        }
        
        System.out.println("以下为setdemo3所有数据");
        for (String s : setdemo3) {
            System.out.println(s);
        }
        
        System.out.println("以下为setdemo4所有数据");
        for (String s : setdemo4) {
            System.out.println(s);
        }
        
        System.out.println("以下为setdemo5所有数据");
        for (String s : setdemo5) {
            System.out.println(s);
        }
    }
}

最终结果
在这里插入图片描述

发布了74 篇原创文章 · 获赞 15 · 访问量 4341

猜你喜欢

转载自blog.csdn.net/wzc8961661/article/details/104885525
今日推荐