天天看點

SpringBoot-StringRedisTemplateSpringBoot-StringRedisTemplate

SpringBoot-StringRedisTemplate

案例項目結構

SpringBoot-StringRedisTemplateSpringBoot-StringRedisTemplate

需要的Maven

<properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.4.RELEASE</version>
    </parent>
    <dependencies>
<!--StringRedisTemplate-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.75</version>
        </dependency>
    </dependencies>
           

application.yml

spring:
  application:
    name: test_redis
  redis:
    port: 6379
    host: 81.70.77.136
    database: 0
    jedis:
      pool:
        max-idle: 20   # 最大空閑數
        min-idle: 1  # 最小空閑數
        max-wait: 20000ms  # 最大等待毫秒數, 機關為 ms   -1不逾時   設定 20000ms
        max-active: 5  #最大連接配接資料庫連接配接數,設 0 為沒有限制 一般把maxActive設定成可能的并發量就行了

    timeout: 600 # 連接配接逾時時間 (毫秒)
           

StringRedisTemplateApp(啟動類)

package cn.redis;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * @author HuAnmin
 * @version 1.0
 * @email 342615[email protected]
 * @date 2021/4/12-14:45
 * @description 類描述....
 */
@SpringBootApplication
public class StringRedisTemplateApp {

    public static void main(String[] args) {
        SpringApplication.run( StringRedisTemplateApp.class,args);
    }
}
           

StringRedisTemplateAppTest (測試)

無須其他配置直接引用就行

@Resource

private StringRedisTemplate stringRedisTemplate;

package cn.redis;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.test.context.junit4.SpringRunner;

import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.TimeUnit;

/**
 * @author HuAnmin
 * @version 1.0
 * @email 342615[email protected]
 * @date 2021/4/12-14:50
 * @description 類描述....
 */
@SpringBootTest
@RunWith(SpringRunner.class)
public class StringRedisTemplateAppTest {

    @Resource
    private StringRedisTemplate stringRedisTemplate;

    //操作字元串
    @Test
    public void opsForValue() {
        stringRedisTemplate.opsForValue().set("蜀國創始人", "劉備"); //設定值
        String name = stringRedisTemplate.opsForValue().get("蜀國創始人");//取出值
        System.out.println(name);
    }

    //操作hash
    @Test
    public void Hash() {
        Map<String, String> map = new HashMap<>();
        map.put("軍師", "諸葛亮");
        map.put("猛将1", "趙子龍");
        //設定
        stringRedisTemplate.opsForHash().putAll("蜀國", map);
        Set<Object> keys = stringRedisTemplate.opsForHash().keys("蜀國");

        //擷取蜀國内的全部人物
        List<Object> values = stringRedisTemplate.opsForHash().values("蜀國");
        System.out.println(values);
        //擷取蜀國内的指定人物
        Object value = stringRedisTemplate.opsForHash().get("蜀國", "軍師");
        System.out.println(value.toString());
    }

    //操作list  (隊列  允許重複的值)
    @Test
    public void List() {
        // 左側寫入
        stringRedisTemplate.opsForList().leftPush("key", "value");
        stringRedisTemplate.opsForList().leftPush("key", "value1");

        // 擷取隊列大小
        long queueSize = stringRedisTemplate.opsForList().size("key");
        System.out.println("隊列大小" + queueSize);
        // 從右側取元素  (也就是插入 1234  那麼取出來也是1234)
        String str = stringRedisTemplate.opsForList().rightPop("key");
        System.out.println(str);
        // 從左側取元素 (也就是插入 1234  那麼取出來是  4321)
        String str1 = stringRedisTemplate.opsForList().leftPop("key");
        System.out.println(str1);
        // 擷取隊列大小
        long queueSize1 = stringRedisTemplate.opsForList().size("key");
        System.out.println("隊列大小" + queueSize1);

    }

    //操作set  (不能重複)
    @Test
    public void Set() {
        // 添加元素
        stringRedisTemplate.opsForSet().add("word_cloud","劉德華");
        stringRedisTemplate.opsForSet().add("word_cloud","劉德華");
        // 擷取set集合
        Set<String> set = stringRedisTemplate.opsForSet().members("word_cloud");
        System.out.println(set);
		//根據key檢視集合中是否存在指定資料
        Boolean red = stringRedisTemplate.opsForSet().isMember("word_cloud", "劉德華");
        System.out.println(red);

    }

    //做 val+操作    必須保證值是數值類型
    @Test
    public void increment(){
        stringRedisTemplate.opsForValue().set("id", "0"); //設定值
        Long id = stringRedisTemplate.boundValueOps("id").increment(-1);//val做-1操作
        System.out.println(id); //-1
        Long id1 = stringRedisTemplate.boundValueOps("id").increment(2);//val做+2操作
        System.out.println(id1); //1

        String val= stringRedisTemplate.opsForValue().get("id");//取出值
        System.out.println(val); //1
    }


  //根據key删除緩存   删除失敗傳回false 成功傳回true
    @Test
    public void del(){
        Boolean test = stringRedisTemplate.delete("word_cloud");
        System.out.println(test);
    }


    //設定過期時間  (stringRedisTemplate預設永不過期)    SECONDS秒    MINUTES 分   HOURS時   DAYS天
    @Test
    public  void setTime(){
        Boolean test = stringRedisTemplate.expire("word_cloud", 120, TimeUnit.SECONDS);
        System.out.println(test);
    }


    // 根據key擷取過期時間并換算成指定機關   -1永不過期   -2以過期或者是不存在此key
    @Test
    public void time(){
        Long test = stringRedisTemplate.getExpire("word_cloud", TimeUnit.SECONDS);
        System.out.println(test);

    }
}

           

事物功能

用于增加修改和删除

public void setString(String key, Object object, Long time){
        //開啟事務權限
        stringRedisTemplate.setEnableTransactionSupport(true);
        //開啟事務
        stringRedisTemplate.multi();
        try {
            String value = (String) object;
            stringRedisTemplate.opsForValue().set(key, value);
        } catch (Exception e) {
            //事務復原
            stringRedisTemplate.discard();
        } finally {
            //送出事務
            stringRedisTemplate.exec();
        }
 }

           

點贊 -收藏-關注-便于以後複習和收到最新内容 有其他問題在評論區讨論-或者私信我-收到會在第一時間回複 如有侵權,請私信聯系我 感謝,配合,希望我的努力對你有幫助^_^

上一篇: 資料規約