Redis学习笔记(一)——redis基础与连接池

redis学习笔记(二)—redis使用中可能遇到的问题与解决方案

一、介绍

redis是基于内存的key-value持久化数据库。value支持string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。

为什么要使用redis?
在这里插入图片描述

二、简单的redis存取值应用

注意这里首先需要打开redis服务器。
并且需要导入jedis的依赖包。
jedis地址:https://www.mvnjar.com/redis.clients/jedis/2.9.0/detail.html

package com.hx.demo;

import redis.clients.jedis.Jedis;

public class Demo {
	public static void main(String[] args) {
		Jedis jedis = new Jedis("127.0.0.1",6379);
		System.out.println("连接成功");
		System.out.println("服务器正在运行" + jedis.ping());
		jedis.set("hello", "123456");
		System.out.println(jedis.get("hello"));
	}
}

三、升级成redis连接池

  1. 配置文件
#主机
host:127.0.0.1
#端口
port:6379
#最大连接数
maxTotal=50
#最大空闲
maxIdle=10
#最小空闲
minIdle=2

##############################################################
#这些是其他配置          用到的时候再解开
#当池内没有返回对象时,最大等待时间    
redis.pool.maxWaitMillis=10000    

#当调用borrow Object方法时,是否进行有效性检查    
redis.pool.testOnBorrow=true    
#当调用return Object方法时,是否进行有效性检查    
redis.pool.testOnReturn=true  

#“空闲链接”检测线程,检测的周期,毫秒数。如果为负值,表示不运行“检测线程”。默认为-1.  
redis.pool.timeBetweenEvictionRunsMillis=30000 
 
#向调用者输出“链接”对象时,是否检测它的空闲超时;  
redis.pool.testWhileIdle=true  

# 对于“空闲链接”检测线程而言,每次检测的链接资源的个数。默认为3.  
redis.pool.numTestsPerEvictionRun=50  
  1. 创建个数据库连接池的提供类
    注意这里需要引入commons-pool依赖包
    地址:https://www.mvnjar.com/org.apache.commons/commons-pool2/2.4.1/detail.html
package com.hx.utils;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

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

/**
 * 加载配置文件,配置连接池参数
 * 提供链接
 * 关闭连接
 * @author Huathy
 */
public class JedisPoolUtil {

	private static JedisPool jedisPool;
	
	//当类加载就读取配置文件
	static{
		//类加载加载配置文件
		InputStream is=JedisPoolUtil.class.getClassLoader().getResourceAsStream("jedis.properties");
		
		//创建Properties对象
		Properties prop=new Properties();
		try {
			//关联文件
			prop.load(is);
		} catch (IOException e) {
			e.printStackTrace();
		}
		
		//获取数据,设置数据
		JedisPoolConfig config=new JedisPoolConfig();
		//最大连接数
		config.setMaxTotal(Integer.parseInt(prop.getProperty("maxTotal")));
		//设置最大的空闲连接
		config.setMaxIdle(Integer.parseInt(prop.getProperty("maxIdle")));
		//设置保持最小idle状态的对象树
		config.setMinIdle(Integer.parseInt(prop.getProperty("minIdle")));
		
		//初始化JedisPool
		jedisPool=new JedisPool(prop.getProperty("host"),Integer.parseInt(prop.getProperty("port")));
	}
	
	//获取Jedis
	public static Jedis getJedis(){
		return jedisPool.getResource();
	}
	
	//释放资源
	public static void closeJedis(Jedis jedis){
		if(jedis!=null){
			jedis.close();
		}
	}
}
  1. 测试类
/**
 * 测试redis连接池
 * @author Huathy
 */
public class PoolDemo {
	public static void main(String[] args) {
		Jedis jedis = JedisPoolUtil.getJedis();
		//存值
		jedis.set("hello", "001");
		//取值
		System.out.println(jedis.get("hello"));
		//删除值
		jedis.del("hello");
		//判断是否存在
		System.out.println(jedis.exists("hello"));
		
		JedisPoolUtil.closeJedis(jedis);
	}
}

附录

redis命令参考文档:http://redisdoc.com/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Huathy-雨落江南,浮生若梦

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

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

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

打赏作者

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

抵扣说明:

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

余额充值