44-天亮大数据经典大数据笔试题系列之工具类之Redis操作

  • 工具类意义描述
    • redis是目前缓存数据库中最典型、最常用的中间件之一,属于公共技术必备项,其IO相关操作工具化操作会非常方便,故工具之。
  • 代码实现

import org.apache.log4j.Logger; 

import redis.clients.jedis.Jedis;

import com.tianliang.spider.utils.SystemParas;

/*
 * redis操作工具类
 */
public class JedisOperatorUtil {
	public static Logger logger = Logger.getLogger(JedisOperatorUtil.class);
	private Jedis jedis = null;

	public JedisOperatorUtil(String host, int port, String redis_password) {
		try{
			jedis = new Jedis(host, port);// 链接上redis
			jedis.auth(redis_password);
			logger.info("Redis客户端已成功连接至服务器端!");
		}catch(Exception e){
			e.printStackTrace();
			System.out.println("此时的链接为"+host+":"+port+":"+redis_password);
		}
	}

	public boolean putObj(byte[] key, byte[] value) {
		try {
			jedis.set(key, value);
		} catch (Exception e) {
			logger.info("redis在set时,出现异常,将重新联接一次");
			jedis = new Jedis(SystemParas.redis_host, SystemParas.redis_port);// 链接上redis
			jedis.auth(SystemParas.redis_password);
			logger.info("Redis客户端已成功连接至服务器端!");
			jedis.set(key, value);
		}
		return true;
	}

	public boolean putObj(String key, String value) {
		try {
			jedis.set(key, value);
		} catch (Exception e) {
			logger.info("redis在set时,出现异常,将重新联接一次");
			jedis = new Jedis(SystemParas.redis_host, SystemParas.redis_port);// 链接上redis
			jedis.auth(SystemParas.redis_password);
			logger.info("Redis客户端已成功连接至服务器端!");
			jedis.set(key, value);
		}
		return true;
	}

	public byte[] getObj(byte[] key) {
		try {
			if (key == null) {
				return null;
			}
			return jedis.get(key);
		} catch (Exception e) {
			logger.info("redis在getObj时,出现异常,将重新联接一次");
			jedis = new Jedis(SystemParas.redis_host, SystemParas.redis_port);// 链接上redis
			jedis.auth(SystemParas.redis_password);
			logger.info("Redis客户端已成功连接至服务器端!");
			return jedis.get(key);
		}
	}

	public String getObj(String key) {
		try {
			if (key == null) {
				return null;
			}
			return jedis.get(key);
		} catch (Exception e) {
			logger.info("redis在getObj时,出现异常,将重新联接一次");
			jedis = new Jedis(SystemParas.redis_host, SystemParas.redis_port);// 链接上redis
			jedis.auth(SystemParas.redis_password);
			logger.info("Redis客户端已成功连接至服务器端!");
			return jedis.get(key);
		}
	}

	// 将key/value放入一个队列中
	public boolean lpush(String key, String value) {
		try {
			jedis.lpush(key, value);
		} catch (Exception e) {
			logger.info("redis在set时,出现异常,将重新联接一次");
			jedis = new Jedis(SystemParas.redis_host, SystemParas.redis_port);// 链接上redis
			jedis.auth(SystemParas.redis_password);
			logger.info("Redis客户端已成功连接至服务器端!");
			jedis.lpush(key, value);
		}
		return true;
	}

	// 放进set中
	public boolean HSet(String key, String field, String value) {
		try {
			// 直接用这个,省去判重了
			jedis.hset(key, field, value);
		} catch (Exception e) {
			logger.info("redis在set时,出现异常,将重新联接一次");
			jedis = new Jedis(SystemParas.redis_host, SystemParas.redis_port);// 链接上redis
			jedis.auth(SystemParas.redis_password);
			logger.info("Redis客户端已成功连接至服务器端!");
			jedis.hset(key, field, value);
		}
		return true;
	}

	// 判断是否包括某个条目
	public boolean HContainsFields(String key, String field) {
		boolean status = false;
		try {
			// 直接用这个,省去判重了
			status = jedis.hexists(key, field);
		} catch (Exception e) {
			logger.info("redis在set时,出现异常,将重新联接一次");
			jedis = new Jedis(SystemParas.redis_host, SystemParas.redis_port);// 链接上redis
			jedis.auth(SystemParas.redis_password);
			logger.info("Redis客户端已成功连接至服务器端!");
			status = jedis.hexists(key, field);
		}
		return status;
	}

	// 从get出来
	public byte[] HGet(byte[] key, byte[] field) {
		try {
			return jedis.hget(key, field);
		} catch (Exception e) {
			logger.info("redis在set时,出现异常,将重新联接一次");
			jedis = new Jedis(SystemParas.redis_host, SystemParas.redis_port);// 链接上redis
			jedis.auth(SystemParas.redis_password);
			logger.info("Redis客户端已成功连接至服务器端!");
			return jedis.hget(key, field);
		}
	}

	// 传入字符串格式
	public String HGet(String key, String field) {
		try {
			return jedis.hget(key, field);
		} catch (Exception e) {
			logger.info("redis在set时,出现异常,将重新联接一次");
			jedis = new Jedis(SystemParas.redis_host, SystemParas.redis_port);// 链接上redis
			jedis.auth(SystemParas.redis_password);
			logger.info("Redis客户端已成功连接至服务器端!");
			return jedis.hget(key, field);
		}
	}

	// 从hdel出来,返回0说明没有对应的key,即不成功。返回1则代表删除成功
	public long HDel(byte[] key, byte[] field) {
		try {
			return jedis.hdel(key, field);
		} catch (Exception e) {
			logger.info("redis在set时,出现异常,将重新联接一次");
			jedis = new Jedis(SystemParas.redis_host, SystemParas.redis_port);// 链接上redis
			jedis.auth(SystemParas.redis_password);
			logger.info("Redis客户端已成功连接至服务器端!");
			return jedis.hdel(key, field);
		}
	}

	// 字节格式
	public boolean HSetnx(byte[] key, byte[] field, byte[] value) {
		try {
			// 直接用这个,省去判重了
			return jedis.hsetnx(key, field, value) == 0 ? false : true;
		} catch (Exception e) {
			logger.info("redis在set时,出现异常,将重新联接一次");
			jedis = new Jedis(SystemParas.redis_host, SystemParas.redis_port);// 链接上redis
			jedis.auth(SystemParas.redis_password);
			logger.info("Redis客户端已成功连接至服务器端!");
			return jedis.hsetnx(key, field, value) == 0 ? false : true;
		}
	}

	// 将key/value放入一个队列中
	public boolean lpush(byte[] key, byte[] value) {
		try {
			jedis.lpush(key, value);
		} catch (Exception e) {
			logger.info("redis在set时,出现异常,将重新联接一次");
			jedis = new Jedis(SystemParas.redis_host, SystemParas.redis_port);// 链接上redis
			jedis.auth(SystemParas.redis_password);
			logger.info("Redis客户端已成功连接至服务器端!");
			jedis.lpush(key, value);
		}
		return true;
	}

	// 从某个队列中将key的值给拿出来
	public String rpop(String key) {
		String value = null;
		try {
			value = jedis.rpop(key);
		} catch (Exception e) {
			logger.info("redis在set时,出现异常,将重新联接一次");
			jedis = new Jedis(SystemParas.redis_host, SystemParas.redis_port);// 链接上redis
			jedis.auth(SystemParas.redis_password);
			logger.info("Redis客户端已成功连接至服务器端!");
			value = jedis.rpop(key);
		}
		return value;
	}

	// 从某个队列中将key的值给拿出来
	public byte[] rpop(byte[] key) {
		byte[] value = null;
		try {
			value = jedis.rpop(key);
		} catch (Exception e) {
			logger.info("redis在set时,出现异常,将重新联接一次");
			jedis = new Jedis(SystemParas.redis_host, SystemParas.redis_port);// 链接上redis
			jedis.auth(SystemParas.redis_password);
			logger.info("Redis客户端已成功连接至服务器端!");
			value = jedis.rpop(key);
		}
		return value;
	}

	// 取得一个key对应的队列的现有长度
	public long llen(String key) {
		long size = 0;
		try {
			size = jedis.llen(key);
		} catch (Exception e) {
			logger.info("redis在set时,出现异常,将重新联接一次");
			jedis = new Jedis(SystemParas.redis_host, SystemParas.redis_port);// 链接上redis
			jedis.auth(SystemParas.redis_password);
			logger.info("Redis客户端已成功连接至服务器端!");
			size = jedis.llen(key);
		}
		return size;
	}

	public void saveAll() {
		try {
			jedis.save();
		} catch (Exception e) {
			logger.info("redis在getObj时,出现异常,将重新联接一次");
			jedis = new Jedis(SystemParas.redis_host, SystemParas.redis_port);// 链接上redis
			jedis.auth(SystemParas.redis_password);
			logger.info("Redis客户端已成功连接至服务器端!");
			jedis.save();
		}
	}

	public static void main(String[] args) {
		// jedis.flushAll();
		JedisOperatorUtil jedisOperatorUtil = new JedisOperatorUtil(
				SystemParas.redis_host, SystemParas.redis_port,
				"sinx/cosx=tanx");
		for (int i = 0; i < 1; i++) {
			jedisOperatorUtil.putObj("k" + i, "v" + i);
		}
		for (int i = 0; i < 1; i++) {
			// jedisOperatorUtil.putObj("k" + i, "v" + i);
			System.out.println(jedisOperatorUtil.getObj("k" + i));
		}
		// String key = jedisOperatorUtil.getObj("vbv");
		// System.out.println(key);
		System.out.println("done!");
	}
}


天亮教育是一家从事大数据云计算、人工智能、教育培训、产品开发、咨询服务、人才优选为一体的综合型互联网科技公司。
公司由一批BAT等一线互联网IT精英人士创建,
以"快乐工作,认真生活,打造IT职业技能教育的一面旗帜"为愿景,胸怀"让天下没有难找的工作"使命,
坚持"客户第一、诚信、激情、拥抱变化"的价值观,
全心全意为学员赋能提效,践行技术改变命运的初心。

更多学习讨论, 请加入
官方-天亮大数据交流QQ群-366784928
群二维码:
这里写图片描述
官方-天亮web前端交流QQ群-972788995
群二维码:
在这里插入图片描述

欢迎关注天亮教育公众号,大数据技术资料与课程、招生就业动态、教育资讯动态、创业历程分享一站式分享,官方微信公众号二维码:
在这里插入图片描述

爬虫、nlp技术qq群320349384
hadoop & spark & hive技术群297585251
教育培训官网:http://myhope365.com
项目研发业务尚云科技官网:http://shangyuninfo.com/
天亮教育公开课-从小白到大佬修成记-全系列视频地址:http://myhope365.com/news/index?id=66
天亮云课堂小程序版,微信扫码下图可直接进入学习!!!

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/erliang20088/article/details/92598531