Redis在Java中的應用

第一步:添加 Jedis 依賴

想要在 Java 中使用 Redis 緩存,需要添加相關的Jar包依賴,打開Maven倉庫的網站:https://mvnrepository.com/ ,搜索Jedis,在pom中引入即可。

第二步:使用 Redis 連接池

跟數據庫連接池相同,Java Redis也同樣提供了類redis.clients.jedis.JedisPool來管理我們的Reids連接池對象,並且我們可以使用redis.clients.jedis.JedisPoolConfig來對連接池進行配置,代碼如下:

JedisPoolConfig poolConfig = new JedisPoolConfig();
// 最大空閒數
poolConfig.setMaxIdle(50);
// 最大連接數
poolConfig.setMaxTotal(100);
// 最大等待毫秒數
poolConfig.setMaxWaitMillis(20000);
// 使用配置創建連接池
JedisPool pool = new JedisPool(poolConfig, "localhost");
// 從連接池中獲取單個連接
Jedis jedis = pool.getResource();
// 如果需要密碼
//jedis.auth("password");

Redis 只能支持六種數據類型(string/hash/list/set/zset/hyperloglog)的操作,操作對象的話則可以在Spring中進行。

第三步:在 Spring 中使用 Redis

在 Spring 中,可以通過使用RedisTemplate解決讀寫對象的問題。除了 Jedis 包以外還需要在 Spring 引入 spring-data-redis 包。

  1. 第一步:使用Spring配置JedisPoolConfig對象
    大部分的情況下,我們還是會用到連接池的,於是先用 Spring 配置一個 JedisPoolConfig 對象:
<bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig">
    <!--最大空閒數-->
    <property name="maxIdle" value="50"/>
    <!--最大連接數-->
    <property name="maxTotal" value="100"/>
    <!--最大等待時間-->
    <property name="maxWaitMillis" value="20000"/>
</bean>
  1. 第二步:爲連接池配置工廠模型
  2. 在Spring Data Redis中有四種可供我們選擇的工廠模型,它們分別是:
    JredisConnectionFactory
    JedisConnectionFactory
    LettuceConnectionFactory
    SrpConnectionFactory
    我們這裏就簡單配置成JedisConnectionFactory:
<bean id="connectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">
    <!--Redis服務地址-->
    <property name="hostName" value="localhost"/>
    <!--端口號-->
    <property name="port" value="6379"/>
    <!--如果有密碼則需要配置密碼-->
    <!--<property name="password" value="password"/>-->
    <!--連接池配置-->
    <property name="poolConfig" ref="poolConfig"/>
</bean>
  1. 第三步:配置RedisTemplate
    普通的連接根本沒有辦法直接將對象直接存入 Redis 內存中,我們需要替代的方案:將對象序列化(可以簡單的理解爲繼承Serializable接口)。我們可以把對象序列化之後存入Redis緩存中,然後在取出的時候又通過轉換器,將序列化之後的對象反序列化回對象,這樣就完成了我們的要求:

第四步:在 SpringBoot 中使用 Redis

  1. 在SpringBoot中添加Redis依賴:
<!-- Radis -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
  1. 添加配置文件:
    在SpringBoot中使用.properties或者.yml都可以
# REDIS (RedisProperties)
# Redis數據庫索引(默認爲0)
spring.redis.database=0
# Redis服務器地址
spring.redis.host=localhost
# Redis服務器連接端口
spring.redis.port=6379
# Redis服務器連接密碼(默認爲空)
spring.redis.password=
# 連接池最大連接數(使用負值表示沒有限制)
spring.redis.pool.max-active=8
# 連接池最大阻塞等待時間(使用負值表示沒有限制)
spring.redis.pool.max-wait=-1
# 連接池中的最大空閒連接
spring.redis.pool.max-idle=8
# 連接池中的最小空閒連接
spring.redis.pool.min-idle=0
# 連接超時時間(毫秒)
spring.redis.timeout=0
  1. 測試訪問:
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest()
public class ApplicationTests {

    @Autowired
    private StringRedisTemplate stringRedisTemplate;

    @Test
    public void test() throws Exception {

        // 保存字符串
        stringRedisTemplate.opsForValue().set("aaa", "111");
        Assert.assertEquals("111", stringRedisTemplate.opsForValue().get("aaa"));

    }
}

通過上面這段極爲簡單的測試案例演示瞭如何通過自動配置的StringRedisTemplate對象進行Redis的讀寫操作,該對象從命名中就可注意到支持的是String類型。原本是RedisTemplate<K, V>接口,StringRedisTemplate就相當於RedisTemplate<String, String>的實現。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章