欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java 操作Redis

程序员文章站 2022-03-10 18:37:56
一、 使用Java操作Redis前,请先运行Redis服务与下载Redis驱动,以maven工程为例,引入如下jar redis.clients jedis 2.9.0 ......

一、 使用java操作redis前,请先运行redis服务与下载redis驱动,以maven工程为例,引入如下jar 

<dependency>
	<groupid>redis.clients</groupid>
	<artifactid>jedis</artifactid>
        <version>2.9.0</version>
</dependency>

 创建测试类,验证是否成功连接

public static void main(string[] args) {
	    //设置ip与端口,连接 redis 服务
	    jedis jedis = new jedis("127.0.0.1",6379);
	    //设置 密码
	    jedis.auth("1d9jj9jij0003e4710ac0000596f1a72");
	    //查看服务是否运行,打出pong表示ok
	    system.out.println("connection is ok==========>: "+jedis.ping());
	    string name = jedis.get("admin");
	    system.out.println("姓名:" + name);
	    string noticeval = jedis.hget("notice", "admin");
	    system.out.println("通知结果:" + noticeval);
}

 执行成功,结果如下

connection is ok==========>: pong
姓名:null
通知结果:0

 

二、连接池管理redis连接,引入redis.properties配置文件

# redis settings
# 最大闲置数
redis.maxidle=30
# 最小闲置数
redis.minidle=10
# 最大连接数
redis.maxtotal=100
# redis服务器的ip地址
redis.url=127.0.0.1
# redis端口
redis.port=6379
# redis密码
redis.password=1d9jj9jij0003e4710ac0000596f1a72
# 超时时间
redis.timeout=2000

  编写工具类redisutil  

package com.util;

import java.io.ioexception;
import java.io.inputstream;
import java.util.properties;

import org.apache.commons.logging.log;
import org.apache.commons.logging.logfactory;

import redis.clients.jedis.jedis;
import redis.clients.jedis.jedispool;
import redis.clients.jedis.jedispoolconfig;

/**
 * redisutil工具类
 * 
 * @author administrator
 *
 */

public final class redisutil {

	private static final log logger = logfactory.getlog(redisutil.class);

	private static jedispool jedispool = null;

	/**
	 * 初始化redis连接池
	 */
	static {
		try {
			// 加载配置文件
			inputstream in = redisutil.class.getclassloader().getresourceasstream("redis.properties");
			properties pro = new properties();
			try {
				pro.load(in);
			} catch (ioexception e) {
				e.printstacktrace();
			}
			// 获得池子对象
			jedispoolconfig poolconfig = new jedispoolconfig();
			poolconfig.setmaxidle(integer.parseint(pro.get("redis.maxidle")
					.tostring()));// 最大闲置个数
			poolconfig.setminidle(integer.parseint(pro.get("redis.minidle")
					.tostring()));// 最小闲置个数
			poolconfig.setmaxtotal(integer.parseint(pro.get("redis.maxtotal")
					.tostring()));// 最大连接数
			jedispool = new jedispool(poolconfig, pro.getproperty("redis.url"),
					integer.parseint(pro.getproperty("redis.port")),
					integer.parseint(pro.getproperty("redis.timeout")),
					pro.getproperty("redis.password"));
		} catch (exception e) {
			logger.error("异常错误", e);
		}
	}

	/**
	 * 获取jedis实例
	 * 
	 * @return
	 */
	public synchronized static jedis getjedis() {
		try {
			if (jedispool != null) {
				jedis resource = jedispool.getresource();
				return resource;
			} else {
				return null;
			}
		} catch (exception e) {
			e.printstacktrace();
			return null;
		}
	}

	/**
	 * 释放jedis资源
	 * 
	 * @param jedis
	 */
	public static void returnresource(final jedis jedis) {
		if (jedis != null) {
			jedis.close();
		}
	} 
}

 测试

public static void main(string[] args) {
		jedis jedis = redisutil.getjedis();
		string result = jedis.set("admin", "管理员");
		system.out.println("结果:" + result);
		//释放资源
		redisutil.returnresource(jedis);
	}
结果:ok

 

   使用redisdesktopmanager可视化工具查看

Java 操作Redis

 

  其他数据类型如hash(哈希)、list(列表)、set(集合)及zset(有序集合)的增删改查操作和redis原生指令大同小异,抽取为通用工具类。