IDEA:Java连接Redis(Jedis连接及数据操作)

目录

前言

Java怎么连接Redis?

1. 直接连接

2. 通过Redis连接池获取对象

3. 封装JedisUtil对外提供连接对象的获取方法

Java操作Redis五种数据类型

1. 操作String字符串

2. 操作Hash表

3. 操作List列表

4. 操作Set集合

5. 操作SortedSet有序集合


前言


        Jedis 就是Java Redis ,集成了Redis的相关命令操作,它是Java语言操作Redis数据库的桥梁。

        Jedis客户端封装了Redis数据库的大量命令。参考文档:Jedis的API文档

Java怎么连接Redis?


1. 直接连接

    JedisPool jedisPool = null;  // 连接池
    Jedis jedis = null;

    @Before    // 一个类中最先执行的方法
    public void init(){

        // 方法一 : 直接连接
        jedis = new Jedis("192.168.182.101",6379);     // 创建jedis对象,连接redis服务
        jedis.auth("123456");   // 设置认证密码
        String pong = jedis.ping();    // 模拟心跳机制,使用ping命令,测试连接是否成功
        System.out.println(pong);   // 返回pong

    }

2. 通过Redis连接池获取对象

 JedisPool jedisPool = null;  // 连接池
    Jedis jedis = null;

    @Before    // 一个类中最先执行的方法
    public void init(){

        // 方法二 : 通过连接池的方式获取 Jedis
        jedisPool = new JedisPool(new JedisPoolConfig(),
                "192.168.182.101", 6379, 10000, "123456");
        jedis = jedisPool.getResource();    // 返回一个jedis对象
        String pong = jedis.ping();    // 模拟心跳机制,使用ping命令,测试连接是否成功
        System.out.println(pong);   // 返回pong

    }

3. 封装JedisUtil对外提供连接对象的获取方法

    JedisPool jedisPool = JedisUtil.redisPoolFactory();  // 连接池
    Jedis jedis = null;

    @Before    // 一个类中最先执行的方法
    public void init(){

        // 方法三 : 封装JedisUtil对外提供连接对象获取方法
        jedis = jedisPool.getResource();    // 返回一个jedis对象
        String pong = jedis.ping();    // 模拟心跳机制,使用ping命令,测试连接是否成功
        System.out.println(pong);   // 返回pong
    }

封装JedisUtil.java 

package com.yjxxt.util;

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

public class JedisUtil {

    //服务器地址
    private static final String host = "192.168.182.101";
    //端口
    private static final int port = 6379;
    //密码
    private static final String password = "123456";
    //超时时间
    private static final String timeout = "10000";
    //最大连接数
    private static final int maxTotal = 1024;
    //最大连接阻塞等待时间
    private static final String maxWaitMillis = "10000ms";
    //最大空闲连接
    private static final int maxIdle = 200;
    //最小空闲连接
    private static final int minIdle = 5;

    public static JedisPool redisPoolFactory() {
        JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
        jedisPoolConfig.setMaxWaitMillis(Long.parseLong(maxWaitMillis.substring(0,
                maxWaitMillis.length() - 2)));
        jedisPoolConfig.setMaxTotal(maxTotal);
        jedisPoolConfig.setMaxIdle(maxIdle);
        jedisPoolConfig.setMinIdle(minIdle);
        JedisPool jedisPool = new JedisPool(jedisPoolConfig, host, port,
                Integer.parseInt(timeout.substring(0, timeout.length() - 2)), password);
        return jedisPool;
    }

}

Java操作Redis五种数据类型


1. 操作String字符串

package com.yjxxt;

import com.yjxxt.util.JedisUtil;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

import java.util.HashMap;
import java.util.Map;

public class jedisTest {

    JedisPool jedisPool = JedisUtil.redisPoolFactory(); 
    Jedis jedis = null;

    @Before  
    public void init(){

        jedis = jedisPool.getResource();    
        String pong = jedis.ping();    
        System.out.println(pong);   

    }

    /*
        1. 操作String
     */

    @Test
    public void testString(){  
        // 切换数据库
        jedis.select(0);    // 指定数据库,默认0
        // 添加一条数据
        System.out.println(jedis.set("username","zhangsan"));
        // 获取一条数据
        System.out.println(jedis.get("username"));
        // 添加多条数据
        System.out.println(jedis.mset("age","18","address","sh"));
        // 获取多条数据
        System.out.println(jedis.mget("age","address"));
    }

    @After  // 一个类中最后执行的方法
    public void close(){
        if (jedis != null){
            jedis.close();   // 关闭jedis,释放资源
        }
    }
}

2. 操作Hash表

    /*
        2. 操作Hash
     */
@Test
    public void testHash(){
        // 切换数据库
        jedis.select(1);   // 指定数据库,默认0

        // 1.HSET
//        jedis.hset("user","name","zhangsan");  // (1).正常传入

        Map<String,String> userMap = new HashMap<>();
        userMap.put("name","lisi");
        userMap.put("age","20");
        System.out.println(jedis.hset("user", userMap));  // (2).传入redis的key,HashMap对象

        // 2.HGET
        System.out.println(jedis.hget("user", "name"));

        // 3.HMSET
        System.out.println(jedis.hmset("user02", userMap));

        // 4.HMGET
        System.out.println(jedis.hmget("user", "name", "age"));

        // 5.HGETALL
        System.out.println(jedis.hgetAll("user"));

        // 6.HDEL
        System.out.println(jedis.hdel("user", "age"));
    }

3. 操作List列表

    /*
        3. 操作List
     */
    @Test
    public void testList(){
        jedis.select(2);
        System.out.println(jedis.lpush("stu", "zhangsan", "lisi", "wangwu"));   // 左插入
        System.out.println(jedis.lrange("stu", 0, 2));      // 左遍历
        System.out.println(jedis.lpop("stu"));      // 左删除
    }

4. 操作Set集合

/*
        4. 操作Set集合
     */
    @Test
    public void testSet(){
        jedis.select(3);
        System.out.println(jedis.sadd("letters", "a", "b", "c"));
        System.out.println(jedis.smembers("letters"));
    }

5. 操作SortedSet有序集合

/*
        5. 操作SortedSet有序集合
     */
    @Test
    public void testSortedSet(){
        jedis.select(4);
        Map<String,Double> stuMap = new HashMap<>();
        stuMap.put("zhangsan",95D);
        stuMap.put("lisi",92D);
        stuMap.put("wangwu",100D);
        System.out.println(jedis.zadd("stu", stuMap));  // 传对象
        System.out.println(jedis.zrange("stu", 0, 2));  // 遍历
        System.out.println(jedis.zrevrange("stu", 0, 2));  // 反转遍历

    }

已经到底了。。。。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

寧三一

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

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

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

打赏作者

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

抵扣说明:

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

余额充值