Jedis客户端使用

Jedis客户端使用
Jedis是redis的java版本的客户端实现,Jedis提供了完整Redis命令

一 基本使用
1导入jar文件
Maven方式

redis.clients
jedis
2.8.2

2 代码
//创建jedis对象
Jedis jedis = new Jedis(“127.0.0.1”, 6379);
//设置密码
jedis.auth(“redis”);
//设置key-value数据
jedis.set(“name”, “zhangsan”);
//根据key值获取数据
System.out.println(jedis.get(“name”));
jedis.set(“age”, “12”);
//数据自增
jedis.incr(“age”);

jedis.hset(“myhash”, “name”, “lisi”);
Map<String, String> map = new HashMap<>();
map.put(“age”, “12”);
map.put(“qq”, “1234567”);
jedis.hmset(“myhash”, map);
String hget = jedis.hget(“myhash”, “name”);
Map<String, String> hgetAll = jedis.hgetAll(“myhash”);
jedis.hdel(“myhash”, “qq”);
jedis.hkeys(“myhash”);
jedis.hvals(“myhash”);

3 JedisPool
Jedis对象并不是线程安全的,在多线程下使用同一个Jedis对象会出现并发问题。为了避免每次使用Jedis对象时都需要重新构建,Jedis提供了JedisPool。JedisPool是基于Commons Pool 2实现的一个线程安全的连接池。如果使用jedis连接池,需要commons-pool2的jar包
public class JedisUtil {

//jedis连接池
private static JedisPool jedisPool = null;

static{
//连接池配置对象
JedisPoolConfig config = new JedisPoolConfig();
//最多与多少个jedis对象
config.setMaxTotal(50);
//最多有多少空闲的jedis对象
config.setMaxIdle(20);
//最大等待时间
config.setMaxWaitMillis(5000);
//检查连接的有效性
config.setTestOnBorrow(true);

  //第二个参数:redis服务器的ip
  //第三个参数:端口
  //第四个参数:连接服务器的超时时间
  //第五个参数:密码
  jedisPool = new JedisPool(config, "127.0.0.1", 6379, 1000, "redis");

}

//通过连接池获取jedis对象
public static Jedis getJedis(){
Jedis jedis = jedisPool.getResource();
return jedis;
}

//jedis对象放回连接池
public static void closeJedis(Jedis jedis){
//jedisPool.returnResource(jeids);//教新的版本中已经废弃
jedis.close();
}

}

JedisPool属性说明:

	<property name="maxTotal" value="30" />
	<!-- 最大空闲连接数 -->
	<property name="maxIdle" value="10" />
	<!-- 每次释放连接的最大数目 -->
	<property name="numTestsPerEvictionRun" value="1024" />
	<!-- 释放连接的扫描间隔(毫秒) -->
	<property name="timeBetweenEvictionRunsMillis" value="30000" />
	<!-- 连接最小空闲时间 -->
	<property name="minEvictableIdleTimeMillis" value="1800000" />
	<!-- 连接空闲多久后释放, 当空闲时间>该值 且 空闲连接>最大空闲连接数 时直接释放 -->
	<property name="softMinEvictableIdleTimeMillis" value="10000" />
	<!-- 获取连接时的最大等待毫秒数,小于零:阻塞不确定的时间,默认-1 -->
	<property name="maxWaitMillis" value="1500" />
	<!-- 在获取连接的时候检查有效性, 默认false -->
	<property name="testOnBorrow" value="true" />
	<!-- 在空闲时检查有效性, 默认false -->
	<property name="testWhileIdle" value="true" />
	<!-- 连接耗尽时是否阻塞, false报异常,ture阻塞直到超时, 默认true -->
	<property name="blockWhenExhausted" value="false" />

二 与spring整合
Spring的配置文件中增加内容:

	<bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig">
		<property name="maxTotal" value="100"></property>
		<property name="maxIdle" value="25"></property>
		<property name="maxWaitMillis" value="15000"></property>
		<property name="testOnBorrow" value="false"></property>
		<property name="testOnReturn" value="false"></property>
	</bean>
	<!-- jedis 连接池  连接本地redis服务 构造器注入-->
	<bean id="pool" class="redis.clients.jedis.JedisPool">
		<constructor-arg index="0"  ref="poolConfig"/> 
		<constructor-arg index="1" value="${redis_ip}"/> 
		<constructor-arg index="2" value="${redis_port}"/>
		<constructor-arg index="3" value="${redis_timeout}"/> 
		<constructor-arg index="4" value="${redis_auth}"/> 
	</bean>
上一篇:如何修复iPhone出现的白苹果问题


下一篇:iPhone添加轻柔铃声作为闹钟铃声,以及如何设置才有效,摆脱烦人的雷达声