栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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);   

    }

    

    @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表
    
@Test
    public void testHash(){
        // 切换数据库
        jedis.select(1);   // 指定数据库,默认0

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

        Map 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列表
    
    @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集合
    @Test
    public void testSet(){
        jedis.select(3);
        System.out.println(jedis.sadd("letters", "a", "b", "c"));
        System.out.println(jedis.smembers("letters"));
    }

5. 操作SortedSet有序集合
    @Test
    public void testSortedSet(){
        jedis.select(4);
        Map 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));  // 反转遍历

    }

已经到底了。。。。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/295367.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号