【redis】——jedis简单了解和使用
2017-02-04 08:51
639 查看
使用Jedis提供的Java API对Redis进行操作,是Redis官方推崇的方式;并且使用Jedis提供的对Redis的支持是最为灵活全面的;
首先需要在项目中添加对jedis的jar包。在使用时单机版和集群版有区别,分别看一下在项目中的使用。
单实例连接redis不能对redis连接进行共享,可以使用连接池对redis连接进行共享,提高资源利用率。
和spring整合:
以上单机版和集群版都使用到了连接池,连接池的属性应该是灵活可配的可以和spring的配置文件进行整 合。可以独立建立一个applicationContext-jedis.xml
以上配置文件中添加了redis的连接池,同时配置了单机版和集群版的bean,当然单机版和集群版是不能同时存在的,分别测试好了以后在开放时可以使用单机版的,单机版redis可以使用可视化功能查看其中的数据,在发布时切换到集群版。
小结
实例中只使用了jedis的set方法,其他方法的使用可以查询redis的api。在实际的业务中使用时jedis的使用不能影响正常的业务逻辑。
首先需要在项目中添加对jedis的jar包。在使用时单机版和集群版有区别,分别看一下在项目中的使用。
单机版
创建单实例jedis对象连接redis服务// 单实例连接redis @Test public voidtestJedisSingle() { Jedis jedis = new Jedis("192.168.190.3", 6379);//实例化一个jedis jedis.set("name", "zhangsan");//存储 String name = jedis.get("name");//获取 System.out.println(name);//输出 }
单实例连接redis不能对redis连接进行共享,可以使用连接池对redis连接进行共享,提高资源利用率。
@Test public void testPool() { JedisPoolConfig config = newJedisPoolConfig(); //最大连接数 config.setMaxTotal(10); //最大连接空闲数 config.setMaxIdle(2); JedisPool pool = newJedisPool(config, "192.168.190.3", 6379);//创建连接池 Jedis jedis = null; try { jedis =pool.getResource();//通过连接池获取redis实例 jedis.set("name", "zhangsan");//赋值 String name = jedis.get("name");//取值 System.out.println(name); }catch(Exception ex){ ex.printStackTrace(); }finally{ if(jedis != null){ //关闭连接 jedis.close(); } } }
集群版
使用连接池// 连接redis集群 @Test public voidtestJedisCluster() { JedisPoolConfig config = newJedisPoolConfig(); // 最大连接数 config.setMaxTotal(10); // 最大连接空闲数 config.setMaxIdle(2); //集群结点 Set<HostAndPort>jedisClusterNode = new HashSet<HostAndPort>(); jedisClusterNode.add(new HostAndPort("192.168.190.3", 7001)); jedisClusterNode.add(new HostAndPort("192.168. 190.3", 7002)); jedisClusterNode.add(new HostAndPort("192.168. 190.3", 7003)); jedisClusterNode.add(new HostAndPort("192.168. 190.3", 7004)); jedisClusterNode.add(new HostAndPort("192.168. 190.3", 7005)); jedisClusterNode.add(new HostAndPort("192.168.190.3", 7006)); JedisCluster jc = newJedisCluster(jedisClusterNode, config); JedisCluster jcd = newJedisCluster(jedisClusterNode); jcd.set("name", "zhangsan"); String value = jcd.get("name"); System.out.println(value); }
和spring整合:
以上单机版和集群版都使用到了连接池,连接池的属性应该是灵活可配的可以和spring的配置文件进行整 合。可以独立建立一个applicationContext-jedis.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd"> <!-- 连接池配置 --> <bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig"> <!-- 最大连接数 --> <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" /> </bean> <!-- jedis客户端单机版 --> <!-- <bean id="redisClient" class="redis.clients.jedis.JedisPool"> <constructor-arg name="host" value="192.168.25.153"></constructor-arg> <constructor-arg name="port" value="6379"></constructor-arg> <constructor-arg name="poolConfig" ref="jedisPoolConfig"></constructor-arg> </bean> <bean id="jedisClient" class="com.taotao.rest.dao.impl.JedisClientSingle"/> --> <!-- jedis集群版配置 --> <bean id="redisClient" class="redis.clients.jedis.JedisCluster"> <constructor-arg name="nodes"> <set> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg name="host" value="192.168.25.153"></constructor-arg> <constructor-arg name="port" value="7001"></constructor-arg> </bean> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg name="host" value="192.168.25.153"></constructor-arg> <constructor-arg name="port" value="7002"></constructor-arg> </bean> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg name="host" value="192.168.25.153"></constructor-arg> <constructor-arg name="port" value="7003"></constructor-arg> </bean> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg name="host" value="192.168.25.153"></constructor-arg> <constructor-arg name="port" value="7004"></constructor-arg> </bean> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg name="host" value="192.168.25.153"></constructor-arg> <constructor-arg name="port" value="7005"></constructor-arg> </bean> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg name="host" value="192.168.25.153"></constructor-arg> <constructor-arg name="port" value="7006"></constructor-arg> </bean> </set> </constructor-arg> <constructor-arg name="poolConfig" ref="jedisPoolConfig"></constructor-arg> </bean> <bean id="jedisClientCluster" class="com.taotao.rest.dao.impl.JedisClientCluster"></bean> </beans>
以上配置文件中添加了redis的连接池,同时配置了单机版和集群版的bean,当然单机版和集群版是不能同时存在的,分别测试好了以后在开放时可以使用单机版的,单机版redis可以使用可视化功能查看其中的数据,在发布时切换到集群版。
/** * 单机版测试 * <p>Title: testSpringJedisSingle</p> * <p>Description: </p> */ @Test public void testSpringJedisSingle() { ApplicationContext applicationContext = new ClassPathXmlApplicationContext("classpath:spring/applicationContext-*.xml"); JedisPool pool = (JedisPool) applicationContext.getBean("redisClient"); Jedis jedis = pool.getResource(); jedis.set("key0", "jedis test"); String string = jedis.get("key0"); System.out.println(string); jedis.close(); pool.close(); } /** * 集群版测试 * <p>Title: testSpringJedisCluster</p> * <p>Description: </p> */ @Test public void testSpringJedisCluster() { ApplicationContext applicationContext = new ClassPathXmlApplicationContext("classpath:spring/applicationContext-*.xml"); JedisCluster jedisCluster = (JedisCluster) applicationContext.getBean("redisClient"); cluster.set("key1", "1000"); String string = jedisCluster.get("key1"); System.out.println(string); jedisCluster.close(); }
小结
实例中只使用了jedis的set方法,其他方法的使用可以查询redis的api。在实际的业务中使用时jedis的使用不能影响正常的业务逻辑。
相关文章推荐
- Redis --- Jedis 使用简单示例
- redis客户端jedis的简单使用
- redis简单了解和使用
- redis学习之Jedis使用线程池封装redis的基本操作及spring的简单封装
- jedis与spring整合及简单的使用RedisTemplate操作
- Linux下Redis环境搭建教程&Jedis简单使用教程
- jedis与spring整合及简单的使用RedisTemplate操作
- Redis和Jedis简单使用示例
- Redis(四)----jedis的简单使用
- linux下安装部署redis及使用jedis访问redis server简单的完整流程(简洁版本)
- jedis与spring整合及简单的使用RedisTemplate操作
- 转载redis之jedis简单使用
- 使用spring的特殊bean --- 对bean进行后处理和对bean工厂进行后处理简单了解
- Redis(ZADD)使用Java API实现简单排名
- redis+Jedis+spring搭建简单web服务
- Jedis使用简单示例
- 初步了解jackson,简单的使用jackson的annotation
- redis的安装配置使用(二) jedis访问
- Redis 客户端Jedis使用(一)
- twemproxy for redis使用说明及简单分析