Redis数据库五大数据类型的增删改查实例——使用Jedis实现

本文详细介绍如何在Java环境中使用Jedis库操作Redis数据库,包括配置连接池、字符串操作、哈希表、列表、集合及有序集合的基本操作。

一、运行环境

该实例在maven中运行。

在pom文件中加入jedis依赖:

<!-- https://mvnrepository.com/artifact/redis.clients/jedis -->
<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>3.3.0</version>
</dependency>

二、代码实现

  • JedisPoolUtil文件:该文件用于创建JedisPoolConfig对象,通过该对象获取Jedis对象。
package cn.krain;

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

/**
 * @author CC
 * @data 2020/8/14 - 15:52
 */
public class JedisPoolUtil {

    private static JedisPool pool = null;

    public static JedisPool getJedisPool(int port, String IP){

        if (pool==null){
            //创建JedisPoolConfig,给config设置连接池的参数,使用config对象创建JedisPool
            JedisPoolConfig config = new JedisPoolConfig();

            //设置最大线程数,一个线程就是一个redis
            config.setMaxTotal(20);

            //设置最大空闲数
            config.setMaxIdle(2);

            //设置检查为true,确保拿到的jedis是可用的
            config.setTestOnBorrow(true);

            //创建pool对象
            pool = new JedisPool(config, IP, port, 6000, "123456");
        }
        return pool;
    }

    //关闭pool
    public static void close(){
        if (pool!=null){
            pool.close();
        }
    }

}
  • JedisPoolTest文件:通过Jedis对redis数据库进行增删改查。
package cn.krain;

import org.junit.Test;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;

import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * @author CC
 * @data 2020/8/14 - 16:08
 */
public class JedisPoolTest {

    String IP = "192.168.174.132";         //redis所在服务器IP地址
    int port = 6379;        //端口号

    JedisPool pool = JedisPoolUtil.getJedisPool(port, IP);

    Jedis jedis = null;

    @Test
    public void StringTest(){
        try {
            //从pool中获取jedis对象
            jedis = pool.getResource();

            //初始化一个String
            jedis.set("str1","value1");
            String str1 = jedis.get("str1");
            Long num = jedis.strlen("str1");       //获取指定key的字符长度
            jedis.set("str2","value2");
            List<String> strList = jedis.mget("str1","str2");   //一次获取多个string类型数据

            System.out.println("str1="+str1);

            System.out.println("str1的长度为:"+num);

            for(String str : strList){
                System.out.println(str);
            }
        }finally {
            pool.close();       //关闭jedis,将获取的jedis放回到pool中
        }
    }

    @Test
    public void HashTest(){

        try {
            //从pool中获取jedis对象
            jedis = pool.getResource();

            //初始化一个hash集合
            jedis.hset("hash1","k1","v1");
            jedis.hset("hash1","k2","v2");
            jedis.hset("hash1","k3","v3");

            String k2 = jedis.hget("hash1","k2");

            System.out.println("k2的值:"+k2);

            Map<String,String> map = jedis.hgetAll("hash1");

            for (int i = 1; i <= map.size(); i++) {
                System.out.println(map.get("k"+i));
            }
        }finally {
            pool.close();   //关闭jedis,将获取的jedis放回到pool中
        }
    }

    @Test
    public void ListTest(){
        try {
            //从pool中获取jedis对象
            jedis = pool.getResource();

            //初始化一个list
            jedis.lpush("list1","value1", "value2", "value3");

            //根据下表获取list中的值
            String value = jedis.lindex("list1", 1);

            System.out.println(value);
        }finally {
            pool.close();   //关闭jedis,将获取的jedis放回到pool中
        }
    }

    @Test
    public void SetTest(){
        try {
            //从pool中获取jedis对象
            jedis = pool.getResource();

            //初始化一个set集合
            jedis.sadd("set1","value1", "value2", "value3");

            Long num = jedis.scard("set1");      //统计set中数据的个数
            System.out.println("set中数据的条数:"+num);

            Set<String> set = jedis.smembers("set1");
            for(String str : set){
                System.out.println(str);
            }
        }finally {
            pool.close();   //关闭jedis,将获取的jedis放回到pool中
        }
    }

    @Test
    public void ZSetTest(){
        try {
            //从pool中获取jedis对象
            jedis = pool.getResource();

            //初始化一个ZSet
            jedis.zadd("zset1",50,"java");
            jedis.zadd("zset1",30,"mysql");
            jedis.zadd("zset1",20,"jsp");

            Set<String> set =  jedis.zrange("zset1",0,1);
            for(String str : set){
                System.out.println(str);
            }
        }finally {
            pool.close();   //关闭jedis,将获取的jedis放回到pool中
        }
    }

}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

krain.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值