redis

Posted z_java_20150812

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了redis相关的知识,希望对你有一定的参考价值。

转载自:http://blog.csdn.net/sunny243788557/article/details/34431357

好了费话不多说了,介绍下spring 结合Redis是怎么操作数据的 这里我用了maven管理,由于简单嘛,依赖下包就行了..不用单独去依赖包,成了我的习惯


好了,下面是pom的代码

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>redis</groupId>
    <artifactId>redis</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <build>
    </build>
    <dependencies>
        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-redis</artifactId>
            <version>1.0.2.RELEASE</version>
        </dependency>
    </dependencies>
</project>

在pom里添加了redis spring客户端的依赖,那么所有的jar包都会帮你自动下载下来,是不是很方便啊,哈


下面是spring-context.xml代码

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:util="http://www.springframework.org/schema/util" xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.1.xsd
http://www.springframework.org/schema/beans  http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd">

<!--注解说明 -->
<context:annotation-config />
<!-- 把标记了@Controller注解的类转换为bean -->
<context:component-scan base-package="com.mkfree.**" />
<!-- redis工厂 -->
<bean id="jedisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"
    p:host-name="192.168.9.140" p:port="6379" p:password="87980879" />
<!-- redis服务封装 -->
<bean id="redisService" class="com.mkfree.redis.test.RedisService">
</bean>

这里配置了一个跟spring 集成的redis客户端,ip port password自己定哦,这里我在redis配置文件了定义了需求密码认证,你们先不要用吧,为了简单起见


下面是RedisService,里面包含了对redis的方法,还有更多的方法没有去使用,这里当一个入门的小例子吧

package com.mkfree.redis.test;

import java.util.Set;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;

import redis.clients.jedis.Jedis;

/**
 * 封装redis 缓存服务器服务接口
 * @author hk
 *
 * 2012-12-16 上午3:09:18
 */
public class RedisService 

    /**
     * 通过key删除(字节)
     * @param key
     */
    public void del(byte [] key)
        this.getJedis().del(key);
    
    /**
     * 通过key删除
     * @param key
     */
    public void del(String key)
        this.getJedis().del(key);
    

    /**
     * 添加key value 并且设置存活时间(byte)
     * @param key
     * @param value
     * @param liveTime
     */
    public void set(byte [] key,byte [] value,int liveTime)
        this.set(key, value);
        this.getJedis().expire(key, liveTime);
    
    /**
     * 添加key value 并且设置存活时间
     * @param key
     * @param value
     * @param liveTime
     */
    public void set(String key,String value,int liveTime)
        this.set(key, value);
        this.getJedis().expire(key, liveTime);
    
    /**
     * 添加key value
     * @param key
     * @param value
     */
    public void set(String key,String value)
        this.getJedis().set(key, value);
    
    /**添加key value (字节)(序列化)
     * @param key
     * @param value
     */
    public void set(byte [] key,byte [] value)
        this.getJedis().set(key, value);
    
    /**
     * 获取redis value (String)
     * @param key
     * @return
     */
    public String get(String key)
        String value = this.getJedis().get(key);
        return value;
    
    /**
     * 获取redis value (byte [] )(反序列化)
     * @param key
     * @return
     */
    public byte[] get(byte [] key)
        return this.getJedis().get(key);
    

    /**
     * 通过正则匹配keys
     * @param pattern
     * @return
     */
    public Set<String> keys(String pattern)
        return this.getJedis().keys(pattern);
    

    /**
     * 检查key是否已经存在
     * @param key
     * @return
     */
    public boolean exists(String key)
        return this.getJedis().exists(key);
    
    /**
     * 清空redis 所有数据
     * @return
     */
    public String flushDB()
        return this.getJedis().flushDB();
    
    /**
     * 查看redis里有多少数据
     */
    public long dbSize()
        return this.getJedis().dbSize();
    
    /**
     * 检查是否连接成功
     * @return
     */
    public String ping()
        return this.getJedis().ping();
    
    /**
     * 获取一个jedis 客户端
     * @return
     */
    private Jedis getJedis()
        if(jedis == null)
            return jedisConnectionFactory.getShardInfo().createResource();
        
        return jedis;
    
    private RedisService ()

    
    //操作redis客户端
    private static Jedis jedis;
    @Autowired
    @Qualifier("jedisConnectionFactory")
    private JedisConnectionFactory jedisConnectionFactory;

下面是测试代码TestRedis.Java

package com.mkfree.redis.test;

import java.util.Set;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 * redis spring 简单例子
 * @author hk
 *
 * 2012-12-22 上午10:40:15
 */
public class TestRedis 

    public static void main(String[] args) throws InterruptedException 
        ApplicationContext app = new ClassPathXmlApplicationContext("classpath:spring-context.xml");
        //这里已经配置好,属于一个redis的服务接口
        RedisService redisService = (RedisService) app.getBean("redisService");

        String ping = redisService.ping();//测试是否连接成功,连接成功输出PONG
        System.out.println(ping);

        //首先,我们看下redis服务里是否有数据
        long dbSizeStart = redisService.dbSize();
        System.out.println(dbSizeStart);

        redisService.set("username", "oyhk");//设值(查看了源代码,默认存活时间30分钟)
        String username = redisService.get("username");//取值 
        System.out.println(username);
        redisService.set("username1", "oyhk1", 1);//设值,并且设置数据的存活时间(这里以秒为单位)
        String username1 = redisService.get("username1");
        System.out.println(username1);
        Thread.sleep(2000);//我睡眠一会,再去取,这个时间超过了,他的存活时间
        String liveUsername1 = redisService.get("username1");
        System.out.println(liveUsername1);//输出null

        //是否存在
        boolean exist = redisService.exists("username");
        System.out.println(exist);

        //查看keys
        Set<String> keys =以上是关于redis的主要内容,如果未能解决你的问题,请参考以下文章

springcloud费话之Eureka接口调用(feign)

springcloud费话之Eureka集群

springcloud费话之断路器(hystrix in feign)

Web前端求职时都会被问到的Redis面试题分享

Redis

Redis事物