【redis】Jedis连接reids上手小例子
2017-04-30 23:02
204 查看
reids支持多种语言的客户端管理,Jedis 是 Redis 官方首选的 Java 客户端开发包,所以在Java开发中经常使用的是Jedis,接下来介绍如何使用Jedis操作redis。
一、安装Jedis jar包。
jedis-2.7.2.jar
二、 测试单机版
首先通过ping命令,测试一些能否连接成功。(2)添加一个值,测试能够成功取出来。代码如下:
三、测试集群版
四、在spring 中添加redis 配置过程。
现在需要思路:创建一个redis操作的接口。分别创建两个实现类对应redis 的单机版和集群版。当使用单机版redis时,配置单机版的实现类,当使用集群版本的时候,配置集群版的实现类。
1.编写Jedis客户端接口
这些方法都是简单的增删该查方法。
4.编写集群实现类
5.编写applicationContext.xml文件
applicationContext文件中配置了集群版和单机版的相关配置,如果需要调用单机版的,就把集群版的代码注释;如果调用集群版的,就需要把单机版的代码注释,这样在客户端调用的时候,不需要修改调用代码,只需要修改applicationContext中的配置文件即可,达到了代码的灵活可配。
出现问题:
在applicationContent.xml配置过程中,如果spring 配置的版本太低,<constructor-arg>会报如下问题:
cvc-complex-type.3.2.2: Attribute 'name' is not allowed to appear in element 'constructor-arg'.
原因:springframework配置版本太低,这个版本中还没有这个元素。
解决方法:配置高版本的springframework,本博客中采用的是springframework中的spring 4.0版本。
6.编写测试客户端
7.测试结果显示
小结:
首先编写接口,接口中包含了基本的redis增删该查的操作,其次编写单机版和集群版不同的实现类,再次通过spring的IOC容器,管理redis操作接口,然后编写客户端,客户端从spring容器中拿到相关Bean,执行增删该查操作。通过spirng 的IOC容器来统一管理,建立连接,达到了灵活可配。
一、安装Jedis jar包。
jedis-2.7.2.jar
二、 测试单机版
首先通过ping命令,测试一些能否连接成功。(2)添加一个值,测试能够成功取出来。代码如下:
/** * (单机版)测试连接是否成功 */ @Test public void testConnect(){ //链接redis服务 Jedis jedis=new Jedis("192.168.65.128",6379); //测试链接是否成功 System.out.println(jedis); System.out.println(jedis.ping()); //添加key //System.out.println(jedis.set("beijing", "大米时代")); //获得key System.out.println(jedis.get("beijing")); }二、测试连接池
/** * (单机版)测试连接池 * @throws Exception */ @Test public void testJedisPool() throws Exception{ //new一个连接池 JedisPool pool= new JedisPool("192.168.65.128",6379); //从连接池中获得一个连接 Jedis jedis= pool.getResource(); jedis.set("testpool", "testpool"); System.out.println(jedis.get("testpool")); //jedis必须每次都关闭 jedis.close(); //系统关闭时,关闭连接池 pool.close(); }
三、测试集群版
/** * (集群版)添加数据测试 */ @Test public void testCluster(){ //1.创建一个JedisCluster对象 Set<HostAndPort> nodes = new HashSet<HostAndPort>(); //2.在Nodes中指定每个结点的地址 nodes.add(new HostAndPort("192.168.65.128", 6379)); nodes.add(new HostAndPort("192.168.65.128", 6380)); nodes.add(new HostAndPort("192.168.65.128", 6381)); nodes.add(new HostAndPort("192.168.65.128", 6382)); nodes.add(new HostAndPort("192.168.65.128", 6383)); nodes.add(new HostAndPort("192.168.65.128", 6384)); //3.在Jediscluster在系统之中是单例的 JedisCluster cluster=new JedisCluster(nodes,30,10); //JedisCluster cluster=new JedisCluster(nodes); cluster.set("key1", "testCluster"); System.out.println(cluster.get("key1")); System.out.println("你好"); //4.最后关闭 cluster.close(); }
四、在spring 中添加redis 配置过程。
现在需要思路:创建一个redis操作的接口。分别创建两个实现类对应redis 的单机版和集群版。当使用单机版redis时,配置单机版的实现类,当使用集群版本的时候,配置集群版的实现类。
1.编写Jedis客户端接口
这些方法都是简单的增删该查方法。
package cn.itcast.oa.component; public interface JedisClient { public String set(String key, String value); public String get(String key) ; public Long hset(String key, String item, String value) ; public String hget(String key, String item); public Long incr(String key) ; public Long decr(String key) ; public Long expire(String key, int second) ; public Long ttl(String key) ; }2.编写单机版实现类
package cn.itcast.oa.component; import org.springframework.beans.factory.annotation.Autowired; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; public class JedisClientSingle implements JedisClient{ @Autowired private JedisPool jedisPool; public String set(String key, String value) { Jedis jedis = jedisPool.getResource(); String result = jedis.set(key, value); jedis.close(); return result; } public String get(String key) { Jedis jedis = jedisPool.getResource(); String result = jedis.get(key); jedis.close(); return result; } public Long hset(String key, String item, String value) { Jedis jedis = jedisPool.getResource(); Long result = jedis.hset(key, item, value); jedis.close(); return result; } public String hget(String key, String item) { Jedis jedis = jedisPool.getResource(); String result = jedis.hget(key, item); jedis.close(); return result; } public Long incr(String key) { Jedis jedis = jedisPool.getResource(); Long result = jedis.incr(key); jedis.close(); return result; } public Long decr(String key) { Jedis jedis = jedisPool.getResource(); Long result = jedis.decr(key); jedis.close(); return result; } public Long expire(String key, int second) { Jedis jedis = jedisPool.getResource(); Long result = jedis.expire(key, second); jedis.close(); return result; } public Long ttl(String key) { Jedis jedis = jedisPool.getResource(); Long result = jedis.ttl(key); jedis.close(); return result; } }
4.编写集群实现类
package cn.itcast.oa.component; import org.springframework.beans.factory.annotation.Autowired; import redis.clients.jedis.JedisCluster; public class JedisClientCluster implements JedisClient { @Autowired private JedisCluster jedisCluster; public String set(String key, String value) { return jedisCluster.set(key, value); } public String get(String key) { return jedisCluster.get(key); } public Long hset(String key, String item, String value) { return jedisCluster.hset(key, item, value); } public String hget(String key, String item) { return jedisCluster.hget(key, item); } public Long incr(String key) { return jedisCluster.incr(key); } public Long decr(String key) { return jedisCluster.decr(key); } public Long expire(String key, int second) { return jedisCluster.expire(key, second); } public Long ttl(String key) { return jedisCluster.ttl(key); } }
5.编写applicationContext.xml文件
applicationContext文件中配置了集群版和单机版的相关配置,如果需要调用单机版的,就把集群版的代码注释;如果调用集群版的,就需要把单机版的代码注释,这样在客户端调用的时候,不需要修改调用代码,只需要修改applicationContext中的配置文件即可,达到了代码的灵活可配。
<?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 ,扫描所有的cn.itcast.oa下面的所有包 --> <context:component-scan base-package="cn.itcast.oa"> <context:component-scan> <!-- ====================================Redis测试代码=================================== --> <!-- ******************************单机版Redis配置start***********************--> <!-- 配置连接池 --> <!-- <bean id="jedisPool" class="redis.clients.jedis.JedisPool"> <constructor-arg name="host" value="192.168.65.129"></constructor-arg> <constructor-arg name="port" value="6379"></constructor-arg> </bean> --> <!-- 配置客户端实现类 --> <!-- <bean id ="jedisClientSingle" class="cn.itcast.oa.component.JedisClientSingle"/> --> <!-- ****************************单机版Redis配置************************--> <!--***************************配置客户端集群版end*********************** --> <bean id="jedisCluster" class="redis.clients.jedis.JedisCluster"> <constructor-arg> <set> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg name="host" value="192.168.65.129"/> <constructor-arg name="port" value="6379"/> </bean> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg name="host" value="192.168.65.129"/> <constructor-arg name="port" value="6380"/> </bean> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg name="host" value="192.168.65.129"/> <constructor-arg name="port" value="6381"/> </bean> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg name="host" value="192.168.65.129"/> <constructor-arg name="port" value="6382"/> </bean> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg name="host" value="192.168.65.129"/> <constructor-arg name="port" value="6383"/> </bean> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg name="host" value="192.168.65.129"/> <constructor-arg name="port" value="6384"/> </bean> </set> </constructor-arg> </bean> <!-- 集群版实现类 --> <bean id="jedisClientCluster" class="cn.itcast.oa.component.JedisClientCluster"/> <!--***************************配置客户端集群版end*********************** --> <!-- =============================Redis测试代码=========================================== --> </beans>
出现问题:
在applicationContent.xml配置过程中,如果spring 配置的版本太低,<constructor-arg>会报如下问题:
cvc-complex-type.3.2.2: Attribute 'name' is not allowed to appear in element 'constructor-arg'.
原因:springframework配置版本太低,这个版本中还没有这个元素。
解决方法:配置高版本的springframework,本博客中采用的是springframework中的spring 4.0版本。
6.编写测试客户端
package cn.itcast.oa.component; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class testJedisClient { /** * 测试集群版 * @throws Exception */ @Test public void testJedisClientSpring() throws Exception { //创建一个spring容器 ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml"); //从容器中获得JedisClient对象 JedisClient jedisClient = (JedisClient) applicationContext.getBean("jedisClientCluster"); //jedisClient操作redis jedisClient.set("cliet1", "1000"); String string = jedisClient.get("cliet1"); System.out.println(string); } }
7.测试结果显示
小结:
首先编写接口,接口中包含了基本的redis增删该查的操作,其次编写单机版和集群版不同的实现类,再次通过spring的IOC容器,管理redis操作接口,然后编写客户端,客户端从spring容器中拿到相关Bean,执行增删该查操作。通过spirng 的IOC容器来统一管理,建立连接,达到了灵活可配。
相关文章推荐
- Ubuntu12下安装redis(多图版)+ Jedis连接Redis
- Redis总结笔记(二):C#连接Redis简单例子
- java 连接Redis的小例子
- Redis 学习笔记3:Jedis 连接虚拟机下的Redis 服务
- redis(3)、基于jedis、spring-data-redis 连接操作redis
- Jedis操作redis的例子
- 使用Jedis连接Redis
- 用jedis获取redis连接(集群和非集群状态下)
- jedis连接不上redis,sentinel报错
- Redis 学习笔记3:Jedis 连接虚拟机下的Redis 服务
- redis 由浅入深 之进阶(发布与订阅、事务、连接和Reids服务器)
- python操作redis之连接reids
- Redis学习10之Jedis连接redis和使用
- spring-data-redis用配置类连接时,抛异常Cannot get Jedis connection; nested exception is java.lang.NullPointerEx
- redis客户端jedis连接和spring结合
- Ubuntu 12.10下安装Redis(图文详解)+ Jedis连接Redis
- jedisPool中的jedis实例被还回后是否会断开和redis服务端的socket连接
- 使用jedis2.8.0连接redis
- jedis连接Redis服务器
- jedis连接redis提示JedisConnectionException