Redis的简单应用

强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan

一、启动Redis(安装参考上篇博客)

      1.单机版的启动命令可使用./redis-server./redis-server redis.conf(在/usr/local/redis/下执行)

      2.集群版的启动命令使用./start-all.sh(在usr/local/redis-cluster/下)

二、未使用配置文件管理的使用方法

     1.单机版的测试

 

 //使用单机版
    @Test
    public void testJedisSingle() throws Exception{
//        创建一个jedis对象
        Jedis jedis = new Jedis("192.168.159.219",6379);
        jedis.set("test","hello jedis");
        String string = jedis.get("test");
        System.out.println(string);
        jedis.close();
    }

   但是这样会很麻烦,每次用的时候都需要new一个Jedis对象,所以做一下优化,使用连接池

 

 

 //单机版:使用连接池
    @Test
    public void testJedisPool() throws Exception{
        //创建一个连接池对象
        //系统中应该是单例的
        JedisPool jedisPool = new JedisPool("192.168.159.219",6379);
        //从连接池中获得一个连接
        Jedis jedis = jedisPool.getResource();
        String result = jedis.get("test");
        System.out.println(result);
        //jedis必须有要关闭
        jedis.close();
        //当系统关闭时,关闭连接池
        jedisPool.close();
    }

 

    2.集群版的测试

 

 

//连接redis集群
    @Test
    public void testJedisCluster() throws Exception{
        //创建一个JedisCluster对象
        Set nodes = new HashSet<>();
        nodes.add(new HostAndPort("192.168.159.219",7001));
        nodes.add(new HostAndPort("192.168.159.219",7002));
        nodes.add(new HostAndPort("192.168.159.219",7003));
        nodes.add(new HostAndPort("192.168.159.219",7004));
        nodes.add(new HostAndPort("192.168.159.219",7005));
        nodes.add(new HostAndPort("192.168.159.219",7006));

        //在nodes中指定每个节点的地址
        //JedisCluster在系统中是单例的
        JedisCluster jedisCluster = new JedisCluster(nodes);
        jedisCluster.set("name","zhangsan");
        jedisCluster.set("value","100");
        String name = jedisCluster.get("name");
        String value = jedisCluster.get("value");
        System.out.println(name);
        System.out.println(value);
        //系统关闭的时候关闭
        jedisCluster.close();

    }

 

       虽然一步步优化,但是我们使用的时候还是需要每次去配置连接项,一旦219机器出故障了我们就需要在所有用到Redis的地方修改host的值,解决办法就是通过Spring的配置文件管理。

 三、使用配置文件管理的使用方法

    我们对Redis的使用方法进行封装,过程如下:

    1.Redis的接口类(命名JedisClient)

 

import com.sun.tools.corba.se.idl.StringGen;

/**
 *
 * @author huan
 * @date 2017/11/11
 */
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.Redis的单机版实现类(JedisClientSingle)

 

 

import com.taotao.rest.component.JedisClient;
import org.springframework.beans.factory.annotation.Autowired;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;

/**
 *redis客户端单机版
 * @author huan
 * @date 2017/11/11
 */
public class JedisClientSingle implements JedisClient {
    @Autowired
    private JedisPool jedisPool;
    @Override
    public String set(String key, String value) {
        Jedis jedis = jedisPool.getResource();
        String result = jedis.set(key,value);
        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 Long hset(String key, String item, String value) {
        Jedis jedis =  jedisPool.getResource();
        Long result = jedis.hset(key,item,value);
        jedis.close();
        return result;
    }

    @Override
    public String hget(String key, String item) {
        Jedis jedis = jedisPool.getResource();
        String result = jedis.hget(key,item);
        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 decr(String key) {
        Jedis jedis = jedisPool.getResource();
        Long result = jedis.decr(key);
        jedis.close();
        return result;
    }

    @Override
    public Long expire(String key, int second) {
        Jedis jedis = jedisPool.getResource();
        Long result = jedis.expire(key,second);
        jedis.close();
        return result;
    }

    @Override
    public Long ttl(String key) {
        Jedis jedis = jedisPool.getResource();
        Long result = jedis.ttl(key);
        jedis.close();
        return result;
    }
}

 

    3.Redis集群版实现类(JedisClientCluster)

 

 

import com.taotao.rest.component.JedisClient;
import org.springframework.beans.factory.annotation.Autowired;
import redis.clients.jedis.JedisCluster;

/**
 *redis客户端集群版
 * @author huan
 * @date 2017/11/11
 */
public class JedisClientCluster implements JedisClient{
    @Autowired
    private JedisCluster jedisCluster;

    @Override
    public String set(String key, String value) {
        return jedisCluster.set(key,value);
    }

    @Override
    public String get(String key) {
        return jedisCluster.get(key);
    }

    @Override
    public Long hset(String key, String item, String value) {
        return null;
    }

    @Override
    public String hget(String key, String item) {
        return jedisCluster.hget(key,item);
    }

    @Override
    public Long incr(String key) {
        return jedisCluster.incr(key);
    }

    @Override
    public Long decr(String key) {
        return jedisCluster.decr(key);
    }

    @Override
    public Long expire(String key, int second) {
        return expire(key,second);
    }

    @Override
    public Long ttl(String key) {
        return ttl(key);
    }
}

 

     4.在Spring的配置文件中配置Redis

 

    (我们一般使用Redis就是为了减轻数据库的压力,所以使用的一般都是在Service层),我们在Service层的spring配置文件中配置Redis。

     单机版的配置:

 

!--配置redis客户端单机版-->






     集群版的配置:

 

 


        
                
                        
                                
                                        
                                        
                                
                                
                                        
                                        
                                
                                
                                        
                                        
                                
                                
                                        
                                        
                                
                                
                                        
                                        
                                
                                
                                        
                                        
                                
                        
                
        

        
        

      注意:单机版和集群版不能同时配置,只能选其一。

 

      5.单机版和集群版的测试方法

      以上配置完成之后,我们写一个测试方法来测试一下用配置文件管理的使用方法,在Spring的配置文件中配置上述集群版或单机版其中之一后,均可使用下述方法测试: 

 

//使用spring配置文件管理的Redis测试方法
    @Test
    public void testJedisClientSpring() throws Exception{
        //创建一个spring容器
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("classpath:spring/applicationContext-*.xml");
        //从容器中获得JedisClient对象
        JedisClient jedisClient = applicationContext.getBean(JedisClient.class);
        //jedisClient操作redis
        jedisClient.set("client1","1000");
        String string = jedisClient.get("client1");
        System.out.println(string);

    }

 

总结

 

     至此,我们Redis的单机版和集群版的工具类就写好了,使用方法类似于测试类。






 

你可能感兴趣的:(------【Redis】,❀数据库与缓存)