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>