Jedis客户端使用,如何使用jedis,jedis入门教程

Jedis客户端使用,如何使用jedis,jedis入门教程

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

一 基本使用

1导入jar文件

Maven方式

<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>2.8.2</version>
</dependency>
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的配置文件中增加内容:

<!-- jedis 连接池配置参数:  -->
		<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>

发布了20 篇原创文章 · 获赞 36 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_41426763/article/details/101519476