Redis缓存在java中的应用

在java中使用redis缓存步骤

1:通常在java中使用redis缓存  可以定义一个接口  分别对应单机版和集群版做两个实现类

接口的定义:

public interface JedisClient {

 

     String set(String key, String value);

     String get(String key);

     Boolean exists(String key);

     Long expire(String keyint seconds);

     Long ttl(String key);

     Long incr(String key);

     Long hset(String key, String field, String value);

     String hget(String key, String field);

     Long hdel(String key, String... field);

}

单机版的实现类

public class JedisClientPool implements JedisClient {

    

     @Autowired

     private JedisPool jedisPool;

 

     @Override

     public String set(String key, String value) {

          Jedis jedis = jedisPool.getResource();

          String result = jedis.set(keyvalue);

          jedis.close();

          return result;

     }

 

     @Override

     public String get(String key) {

          Jedis jedis = jedisPool.getResource();

          String result = jedis.get(key);

          jedis.close();

          return result;

     }

 

     @Override

     public Boolean exists(String key) {

          Jedis jedis = jedisPool.getResource();

          Boolean result = jedis.exists(key);

          jedis.close();

          return result;

     }

 

     @Override

     public Long expire(String keyint seconds) {

          Jedis jedis = jedisPool.getResource();

          Long result = jedis.expire(keyseconds);

          jedis.close();

          return result;

     }

 

     @Override

     public Long ttl(String key) {

          Jedis jedis = jedisPool.getResource();

          Long result = jedis.ttl(key);

          jedis.close();

          return result;

     }

 

     @Override

     public Long incr(String key) {

          Jedis jedis = jedisPool.getResource();

          Long result = jedis.incr(key);

          jedis.close();

          return result;

     }

 

     @Override

     public Long hset(String key, String field, String value) {

          Jedis jedis = jedisPool.getResource();

          Long result = jedis.hset(keyfieldvalue);

          jedis.close();

          return result;

     }

 

     @Override

     public String hget(String key, String field) {

          Jedis jedis = jedisPool.getResource();

          String result = jedis.hget(keyfield);

          jedis.close();

          return result;

     }

 

     @Override

     public Long hdel(String key, String... field) {

          Jedis jedis = jedisPool.getResource();

          Long result = jedis.hdel(keyfield);

          jedis.close();

          return result;

     }

 

}

配置applicationContext-Redis.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-beans4.2.xsd

     http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context4.2.xsd

     http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop4.2.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx4.2.xsd

     http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util4.2.xsd">

 

     <!-- 配置单机版的连接 -->

     <bean id="jedisPool" class="redis.clients.jedis.JedisPool">

          <constructor-arg name="host" value="192.168.25.153"></constructor-arg>

          <constructor-arg name="port" value="6379"></constructor-arg>

     </bean>

     <bean id="jedisClientPool" class="实现类的路径"/>

</beans>

集群版的实现类:

 

import org.springframework.beans.factory.annotation.Autowired;

 

import redis.clients.jedis.JedisCluster;

 

public class JedisClientCluster implements JedisClient {

    

     @Autowired

     private JedisCluster jedisCluster;

 

     @Override

     public String set(String key, String value) {

          return jedisCluster.set(keyvalue);

     }

 

     @Override

     public String get(String key) {

          return jedisCluster.get(key);

     }

 

     @Override

     public Boolean exists(String key) {

          return jedisCluster.exists(key);

     }

 

     @Override

     public Long expire(String keyint seconds) {

          return jedisCluster.expire(keyseconds);

     }

 

     @Override

     public Long ttl(String key) {

          return jedisCluster.ttl(key);

     }

 

     @Override

     public Long incr(String key) {

          return jedisCluster.incr(key);

     }

 

     @Override

     public Long hset(String key, String field, String value) {

          return jedisCluster.hset(keyfieldvalue);

     }

 

     @Override

     public String hget(String key, String field) {

          return jedisCluster.hget(keyfield);

     }

 

     @Override

     public Long hdel(String key, String... field) {

          return jedisCluster.hdel(keyfield);

     }

 

}

集群版的applicationContext.xml的配置

<!-- 集群版的配置 -->

     <bean id="jedisCluster" class="redis.clients.jedis.JedisCluster">

          <constructor-arg>

               <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>

     </bean>

     <bean id="jedisClientCluster"class="集群被类的全路径"/>

注意:集群版和单机版的配置只能存在一个

@Test

     public void testJedisClient() throws Exception {

          //初始化Spring容器

          ApplicationContext applicationContext = newClassPathXmlApplicationContext("classpath:spring/applicationContext-*.xml");

          //从容器中获得JedisClient对象

          JedisClient jedisClient =applicationContext.getBean(JedisClient.class);

          jedisClient.set("first""100");

          String result = jedisClient.get("first");

          System.out.println(result);       

在使用时我们只需要注入接口JedisClient接口 而不用管他的具体实现 然后就可以正常操作redis 使用






  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值