1. 程式人生 > >Spring + Redis ( 簡單使用)

Spring + Redis ( 簡單使用)

1、Redis 的 Java API

       Java 中 使用 Redis 工具,要先去 maven 倉庫中,下載 jedis jar包

       jedis 依賴

    <dependency>
        <groupId>redis.clients</groupId>
        <artifactId>jedis</artifactId>
        <version>2.9.0</version>
</dependency>

使用

 //連線 Redis
        Jedis jedis = new Jedis("localhost", 6379);
        //如果需要密碼
        //jedis.auth("");
        //記錄操作次數
        int i = 0;
        try {
            long start = System.currentTimeMillis();
            while (true) {
                long end = System.currentTimeMillis();
                
//當 大於等於 1000毫秒(1秒)時,結束 if (end - start >= 1000) { break; } i++; jedis.set("testId" + i, i + " "); } } finally { //關閉 Redis jedis.close(); } //列印1秒內對 Redis 的操作次數 System.out.println("Redis每秒操作:" + i + "次");

 結果:

Redis每秒操作:1753次

使用 流水線技術( 連線池 ),提高速度。

//配置 連線池
        JedisPoolConfig config = new JedisPoolConfig();
        //最大空閒數
        config.setMaxIdle(50);
        //最大連線數
        config.setMaxTotal(100);
        //最大等待數 毫秒數
        config.setMaxWaitMillis(20000);
        //建立 連線池
        JedisPool pool = new JedisPool(config,"localhost");
        //從連線池中獲取單個連線
        Jedis jedis = pool.getResource();
        //如果需要密碼
        //jedis.auth("");
        //記錄操作次數
        int i = 0;
        try {
            long start = System.currentTimeMillis();
            while (true) {
                long end = System.currentTimeMillis();
                //當 大於等於 1000毫秒(1秒)時,結束
                if (end - start >= 1000) {
                    break;
                }
                i++;
                jedis.set("testId" + i, i + " ");
            }
        } finally {
            //關閉 Redis
            jedis.close();
        }
        //列印1秒內對 Redis 的操作次數
        System.out.println("Redis每秒操作:" + i + "次");

執行結果:

Redis每秒操作:5022次
2、Spring 中 使用 Redis

      在Spring中使用Redis,除了需要jedis.jar外,還需要 spring-data-redis.jar 的依賴架包

      spring-data-redis.jar 依賴包

 <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-redis</artifactId>
            <version>2.1.3.RELEASE</version>
</dependency>

註解配置

  • 配置連線池

  • 配置Spring所提供的連線工廠

    • JredisConnectionFactory

    • JedisConnectionFactory

    • LettuceConnectionFactory

    • SrpConnectionFactory

  • 配置Spring RedisTemplate

Spring所提供的連線工廠,無論 如何它們都是介面 RedisConnectionFacory 的實現類

使用 JedisConnectionFactory 較為廣泛。

@Configuration//聲明當前類 是配置類
public class SpringRedisConfig {

    //配置連線池
    @Bean
    JedisPoolConfig poolConfig(){
        //配置連線池
        JedisPoolConfig config = new JedisPoolConfig();
        //最大空閒數
        config.setMaxIdle(50);
        //最大等待時間
        config.setMaxWaitMillis(20000);
        //最大連線數
        config.setMaxTotal(100);
        return config;
    }

    //配置 redis 連線工廠
    @Bean
    RedisConnectionFactory connectionFactory(){
        JedisConnectionFactory connectionFactory = new JedisConnectionFactory(poolConfig());
        return connectionFactory;
    }

    //配置 Spring RedisTemplate
    @Bean
    StringRedisTemplate redisTemplate(){
        return new StringRedisTemplate(connectionFactory());
    }
}

測試示例:

public static void main(String[] args) {
        //掃描 spring 註解
        AnnotationConfigApplicationContext bean = new AnnotationConfigApplicationContext(SpringRedisConfig.class);
        // 得到 spring 容器 中 的類
        StringRedisTemplate stringRedisTemplate = 
            (StringRedisTemplate) bean.getBean("redisTemplate");
        //使用 SpringRedisTemplate
        stringRedisTemplate.boundValueOps("test").set("zhe shi yi ge ce shi !");
        System.out.println(stringRedisTemplate.boundValueOps("test").get());
    }

 

執行效果:

zhe shi yi ge ce shi !

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"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <!--配置連線池-->
    <bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig">
        <!--最大等待時間-->
        <property name="maxWaitMillis" value="20000"/>
        <!--最大空閒數-->
        <property name="maxIdle" value="50"/>
        <!--最大連線數-->
        <property name="maxTotal" value="100"/>
    </bean>
    <!--Spring 提供的redis連線工廠-->
    
    <bean id="connectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">
        <property name="poolConfig" ref="poolConfig"/>
    </bean>
    <!--Spring Template-->
    <bean id="stringRedisTemplate" class="org.springframework.data.redis.core.StringRedisTemplate">
        <property name="connectionFactory" ref="connectionFactory"/>
    </bean>

</beans>

測試類

    public static void main(String[] args) {
        //載入 配置檔案
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("redisConfig.xml");
        //從容器中 獲取 一個 bean
        StringRedisTemplate bean = (StringRedisTemplate) context.getBean("stringRedisTemplate");
        bean.boundValueOps("test").set("zhe shi yi ge jian dan de ce shi ");
        System.out.println(bean.boundValueOps("test").get());
    }

 

執行效果:

zhe shi yi ge jian dan de ce shi