Java 使用 Redis

1 篇文章 0 订阅
1 篇文章 0 订阅

Java 使用 Redis

安装

开始在 Java 中使用 Redis 前, 我们需要确保已经安装了 redis 服务及 Java redis 驱动,且你的机器上能正常使用 Java。 Java的安装配置可以参考 Java开发手册接下来让我们安装 Java redis 驱动:

  • 首先你需要下载驱动包jedis.jar,确保下载最新驱动包。
  • 在你的 classpath 中包含该驱动包。

本站提供了 2.9.0 jar 版本下载: jedis-2.9.0.jar


连接到 redis 服务

实例

import redis.clients.jedis.Jedis;

public class RedisJava {

            public static void main(String[] args) {

           //连接本地的 Redis 服务 Jedis jedis = new Jedis("localhost");

           System.out.println("连接成功"); //查看服务是否运行

           System.out.println("服务正在运行: "+jedis.ping() );

           }

}

编译以上 Java 程序,确保驱动包的路径是正确的。

连接成功
服务正在运行: PONG

Redis Java String(字符串) 实例

实例

import redis.clients.jedis.Jedis;

public class RedisStringJava {

        public static void main(String[] args) { //连接本地的 Redis 服务

        Jedis jedis = new Jedis("localhost");

         System.out.println("连接成功"); //设置 redis 字符串数据

        jedis.set("runoobkey", "www.runoob.com"); // 获取存储的数据并输出

        System.out.println("redis 存储的字符串为: "+ jedis.get("runoobkey"));

          } 

}

编译以上程序。

连接成功
redis 存储的字符串为: www.runoob.com

Redis Java List(列表) 实例

实例

import java.util.List;

import redis.clients.jedis.Jedis;

public class RedisListJava {

          public static void main(String[] args) { //连接本地的 Redis 服务

          Jedis jedis = new Jedis("localhost");

          System.out.println("连接成功"); //存储数据到列表中

           jedis.lpush("site-list", "Runoob");

           jedis.lpush("site-list", "Google");

           jedis.lpush("site-list", "Taobao"); // 获取存储的数据并输出

           List<String> list = jedis.lrange("site-list", 0 ,2);

           for(int i=0; i<list.size(); i++) {

                     System.out.println("列表项为: "+list.get(i));

                      }

           }

}

编译以上程序。

连接成功
列表项为: Taobao
列表项为: Google
列表项为: Runoob

Redis Java Keys 实例

实例

import java.util.Iterator;

import java.util.Set;

import redis.clients.jedis.Jedis;

public class RedisKeyJava {

           public static void main(String[] args) { //连接本地的 Redis 服务

           Jedis jedis = new Jedis("localhost");

           System.out.println("连接成功"); // 获取数据并输出

           Set<String> keys = jedis.keys("*");

           Iterator<String> it=keys.iterator() ;

           while(it.hasNext()){

                    String key = it.next();

                    System.out.println(key);

                     }

           }

}

编译以上程序。

连接成功
runoobkey
site-list

第2 篇笔记 写笔记

我觉得最详细:

public class RedisUtil {

    //服务器IP地址
    private static String ADDR = "192.168.41.65";
    //端口
    private static int PORT = 6379;
    //密码
    private static String AUTH = "123456";
    //连接实例的最大连接数
    private static int MAX_ACTIVE = 1024;
    //控制一个pool最多有多少个状态为idle(空闲的)的jedis实例,默认值也是8。
    private static int MAX_IDLE = 200;
    //等待可用连接的最大时间,单位毫秒,默认值为-1,表示永不超时。如果超过等待时间,则直接抛出JedisConnectionException
    private static int MAX_WAIT = 10000;
    //连接超时的时间  
    private static int TIMEOUT = 10000;
    // 在borrow一个jedis实例时,是否提前进行validate操作;如果为true,则得到的jedis实例均是可用的;
    private static boolean TEST_ON_BORROW = true;

    private static JedisPool jedisPool = null;
    //数据库模式是16个数据库 0~15 
    public static final int DEFAULT_DATABASE = 0;
    /**
     * 初始化Redis连接池
     */

    static {

        try {

            JedisPoolConfig config = new JedisPoolConfig();
            config.setMaxTotal(MAX_ACTIVE);
            config.setMaxIdle(MAX_IDLE);
            config.setMaxWaitMillis(MAX_WAIT);
            config.setTestOnBorrow(TEST_ON_BORROW);
            jedisPool = new JedisPool(config, ADDR, PORT, TIMEOUT,AUTH,DEFAULT_DATABASE);

        } catch (Exception e) {

            e.printStackTrace();
        }

    }

    /**
     * 获取Jedis实例
     */

    public synchronized static Jedis getJedis() {

        try {

            if (jedisPool != null) {
                Jedis resource = jedisPool.getResource();
                System.out.println("redis--服务正在运行: "+resource.ping());
                return resource;
            } else {
                return null;
            }

        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }

    }

    /***
     * 
     * 释放资源
     */
    
    public static void returnResource(final Jedis jedis) {
            if(jedis != null) {
                jedisPool.returnResource(jedis);
            }
        
    }
}

使用 JedisPoolConfig 需要导入 Commons Pool 包,下载地址 http://commons.apache.org/proper/commons-pool/download_pool.cgi

  1.  

    在运行第一个示例程序时,后台报错,异常信息为:

    Exception in thread "main" redis.clients.jedis.exceptions.JedisDataException: NOAUTH Authentication required.
    at redis.clients.jedis.Protocol.processError(Protocol.java:127)
    at redis.clients.jedis.Protocol.process(Protocol.java:161)
    at redis.clients.jedis.Protocol.read(Protocol.java:215)
    at redis.clients.jedis.Connection.readProtocolWithCheckingBroken(Connection.java:340)
    at redis.clients.jedis.Connection.getStatusCodeReply(Connection.java:239)
    at redis.clients.jedis.BinaryJedis.ping(BinaryJedis.java:196)
    at com.RedisJava.main(RedisJava.java:10)

    这是因为 redis 设置了密码验证,而没有进行密码验证所引起的异常。我们设置了密码验证:

    CONFIG set requirepass "runoob"

    处理方式 1,在源代码的基础上加上代码:

    jedis.auth("runoob");//此处为你设置的密码

    处理方式 2,关闭密码验证:

    CONFIG set requirepass ""
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值