最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

springboot使用redis的詳細(xì)步驟

 更新時(shí)間:2022年06月28日 10:56:53   作者:迷亭君  
SpringBoot對(duì)常用的數(shù)據(jù)庫(kù)支持外,對(duì)NoSQL?數(shù)據(jù)庫(kù)也進(jìn)行了封裝自動(dòng)化,下面這篇文章主要給大家介紹了關(guān)于springboot使用redis的詳細(xì)步驟,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下

springboot使用redis

redis-service.exe : 服務(wù)端,啟動(dòng)后不要關(guān)閉

redis-cli.exe : 客戶端,訪問(wèn)redis中的數(shù)據(jù)

redisclient-win32.x86_64.2.0.jar : redis的圖形界面客戶端,執(zhí)行方式是在這個(gè)文件的目錄執(zhí)行

java -jar redisclient-win32.x86_64.2.0.jar

或者在這個(gè)jar包的目錄下點(diǎn)擊即可直接執(zhí)行

描述

點(diǎn)擊server,點(diǎn)擊add,設(shè)置端口號(hào)就可以訪問(wèn)redis了

springboot使用redis步驟

添加依賴

redis起步依賴,導(dǎo)入后可以直接使用RedisTemplate

RedisTemplate實(shí)際上使用的是lettuce客戶端庫(kù)

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-redis</artifactId>
		</dependency>

在application.properties中配置redis連接

#指定redis信息 (如 host, ip, password)
spring.redis.host=localhost
spring.redis.port=6379
#沒(méi)有密碼可以不用配置這個(gè)
#spring.redis.password=123456

使用redisTemplate來(lái)訪問(wèn)redis服務(wù)器

import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.core.ValueOperations;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;

@RestController
public class RedisController {

    /**
     * 需要注入redis模板
     *
     * 對(duì)于RedisTemplate的泛型情況,
     * 可以使用<String, String>
     *       <Object, Object>
     *       或者不寫泛型
     *
     *  注意,屬性的名稱必須為redisTemplate,因?yàn)榘疵Q注入,框架創(chuàng)建的對(duì)象就是這個(gè)名字的
     */
    @Resource
    private RedisTemplate redisTemplate;

    @Resource
    private StringRedisTemplate stringRedisTemplate;

    // 添加數(shù)據(jù)到redis
    @PostMapping("/redis/addstring")
    public String addToRedis(String name, String value) {
        // 操作Redis中的string類型的數(shù)據(jù),先獲取ValueOperation
        ValueOperations valueOperations = redisTemplate.opsForValue();
        // 添加數(shù)據(jù)到redis
        valueOperations.set(name, value);
        return "向redis添加string類型的數(shù)據(jù)";
    }

    // 從redis獲取數(shù)據(jù)
    @GetMapping("/redis/getk")
    public String getData(String key) {
        ValueOperations valueOperations = redisTemplate.opsForValue();
        Object v = valueOperations.get(key);
        return "key是" + key + ",它的值是:" + v;
    }

    @PostMapping("/redis/{k}/{v}")
    public String addStringKV(@PathVariable String k,
                              @PathVariable String v) {
        // 使用StringRedisTemplate對(duì)象
        stringRedisTemplate.opsForValue().set(k,v);
        return "使用StringRedisTemplate對(duì)象添加";
    }

    @GetMapping("/redis/{k}")
    public String getStringValue(@PathVariable String k) {
        // 獲取String類型的value
        String v = stringRedisTemplate.opsForValue().get(k);
        return "從redis中通過(guò)" + k + "獲取到string類型的v=" + v;
    }
}

redisTemplate對(duì)象有好幾種,上面代碼中給了兩種
一種為RedisTemplate,這種是有泛型的,泛型類型為<String, String> 或者 <Object, Object> 或者不添加泛型,當(dāng)用它來(lái)向redis服務(wù)器中存入String類型的數(shù)據(jù)時(shí),會(huì)出現(xiàn)亂碼

使用postman

存入數(shù)據(jù)

明明存入成功了,在redis中查詢的時(shí)候是帶有亂碼前綴的

亂碼前綴

亂碼

直接通過(guò)"lisi"它的值是可以取出的

結(jié)果

可見(jiàn)在RedisTemplate在存取中做了手腳.

當(dāng)我們使用StringRedisTemplate對(duì)象存取String類型的數(shù)據(jù)時(shí),是沒(méi)有亂碼的

存

取

redis服務(wù)器中的數(shù)據(jù)

數(shù)據(jù)

數(shù)據(jù)正常展示

數(shù)據(jù)

StringRedisTemplate和RedisTemplate

上面說(shuō)到了這兩者在存取中的差異

  • StringRedisTemplate : 這個(gè)類將key和value都做String處理,使用的是String的序列化,可讀性好
  • RedisTemplate : 把key和value經(jīng)過(guò)了序列化,key和value都是序列化的內(nèi)容,不能直接識(shí)別,默認(rèn)使用的是JDK的序列化,可以修改為其他的序列化

序列化作用 :

序列化是將對(duì)象轉(zhuǎn)換為可傳輸字節(jié)序列的過(guò)程,反序列化是將字節(jié)序列還原為原對(duì)象的過(guò)程.序列化最終的目的是為了對(duì)象可以跨平臺(tái)存儲(chǔ)和進(jìn)行網(wǎng)絡(luò)的傳輸

序列化的方式 :

序列化只是一種拆裝對(duì)象的規(guī)則,那么這種規(guī)則也就多種多樣,常見(jiàn)的有JDK(不支持跨語(yǔ)言),json,xml,Hessian等

我們上面的RedisTemplate類的存儲(chǔ)就是JDK方式的

jdk方式的序列化

jdk序列化

java的序列化 : 把java對(duì)象轉(zhuǎn)換為byte[],二進(jìn)制數(shù)據(jù)

json序列化 : json序列化功能將對(duì)象轉(zhuǎn)換為json格式或者將其轉(zhuǎn)換回對(duì)象,如Student對(duì)象轉(zhuǎn)換為{“name”:“張三”,“age”:“20”}

序列化的方式可以改變

    /** 設(shè)置RedisTemplate序列化機(jī)制
     *  可以設(shè)置 key 的序列化,也可以設(shè)置 value 的序列化
     *  也可以同時(shí)設(shè)置
     */
    @PostMapping("/redis/addstr")
    public String addString(String k, String v) {

        // 設(shè)置RedisTemplate的序列化機(jī)制
        // 設(shè)置key為string類型的序列化
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        // 設(shè)置value的序列化
        redisTemplate.setValueSerializer(new StringRedisSerializer());

        redisTemplate.opsForValue().set(k, v);
        return "添加了k和v";
    }

使用json方式的序列化

創(chuàng)建實(shí)體類,需要實(shí)現(xiàn)序列化接口,最好有序列化的UID

import java.io.Serializable;

public class Student implements Serializable {

    private static final long serialVersionUID = -7839813688155519106L;
    private Integer id;
    private String name;
    private Integer age;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }
}

idea生成序列化UID的方式,需要先在setting中開啟,如下

然后將光標(biāo)放在類名上,alt+enter

在方法中設(shè)置序列化方式

    /**
     * 使用json序列化
     */
    @PostMapping("/redis/addjson")
    public String addJson() {
        Student student = new Student();
        student.setName("zhangsan");
        student.setAge(20);
        student.setId(1);

        // 設(shè)置key為string的序列化方式
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        // 設(shè)置value為json的序列化方式,json為Student類型的方式組織,所以需要傳入Student.class
        redisTemplate.setValueSerializer(new Jackson2JsonRedisSerializer(Student.class));
        redisTemplate.opsForValue().set("myStudent", student);
        return "存入json類型的數(shù)據(jù)student";
    }

測(cè)試訪問(wèn)url

測(cè)試訪問(wèn)url

在redis服務(wù)端檢查數(shù)據(jù)

檢查

檢查數(shù)據(jù)

果然,數(shù)據(jù)的value已經(jīng)以json的方式存入內(nèi)存中了.

使用json的方式反序列化將數(shù)據(jù)取出

/**
     * 使用json序列化
     */
    @PostMapping("/redis/addjson")
    public String addJson() {

        Student student = new Student();
        student.setName("zhangsan");
        student.setAge(20);
        student.setId(1);

        // 設(shè)置key為string的序列化方式
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        // 設(shè)置value為json的序列化方式,json為Student類型的方式組織,所以需要傳入Student.class
        redisTemplate.setValueSerializer(new Jackson2JsonRedisSerializer(Student.class));
        redisTemplate.opsForValue().set("myStudent", student);
        return "存入json類型的數(shù)據(jù)student";
    }

結(jié)果

反序列化的時(shí)候必須得指定序列化的方式,要不然不能取出數(shù)據(jù)

總結(jié) 

到此這篇關(guān)于springboot使用redis的文章就介紹到這了,更多相關(guān)springboot使用redis內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 基于Java Swing制作一個(gè)Pong小游戲

    基于Java Swing制作一個(gè)Pong小游戲

    《Pong》是美國(guó)雅達(dá)利公司(ATARI)開發(fā)的視頻游戲,該作模擬了兩個(gè)打乒乓球的人,就是在兩條線中間有一個(gè)點(diǎn)在動(dòng),操縱器就是一個(gè)搖桿上有一個(gè)按鈕的那種。本文就來(lái)用Java Swing制作一個(gè)Pong小游戲吧
    2023-01-01
  • 引入mybatis-plus報(bào) Invalid bound statement錯(cuò)誤問(wèn)題的解決方法

    引入mybatis-plus報(bào) Invalid bound statement錯(cuò)誤問(wèn)題的解決方法

    這篇文章主要介紹了引入mybatis-plus報(bào) Invalid bound statement錯(cuò)誤問(wèn)題的解決方法,需要的朋友可以參考下
    2020-05-05
  • jasypt SaltGenerator接口定義方法源碼解讀

    jasypt SaltGenerator接口定義方法源碼解讀

    這篇文章主要為大家介紹了jasypt SaltGenerator接口定義方法源碼解讀,,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • java?System類和Arrays類詳解

    java?System類和Arrays類詳解

    這篇文章主要介紹了java?System類和Arrays類詳解,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-08-08
  • Java并發(fā)編程中的阻塞隊(duì)列解析

    Java并發(fā)編程中的阻塞隊(duì)列解析

    這篇文章主要介紹了Java并發(fā)編程中的阻塞隊(duì)列解析,阻塞隊(duì)列BlockingQueue是一個(gè)支持兩個(gè)附加操作的隊(duì)列,這兩個(gè)附加的操作是在隊(duì)列為空時(shí),獲取元素的線程會(huì)等待隊(duì)列變?yōu)榉强?當(dāng)隊(duì)列滿時(shí),存儲(chǔ)元素的線程會(huì)等待隊(duì)列可用,需要的朋友可以參考下
    2023-08-08
  • 簡(jiǎn)述Java中的四種引用類型

    簡(jiǎn)述Java中的四種引用類型

    從JDK1.2版本開始,把對(duì)象的引用分為四種級(jí)別,從而使程序能更加靈活的控制對(duì)象的生命周期。這四種級(jí)別由高到低依次為:強(qiáng)引用、軟引用、弱引用和虛引用,下面分別介紹下這四種引用。
    2021-04-04
  • SWT(JFace)體驗(yàn)之圓環(huán)狀(戒指型)

    SWT(JFace)體驗(yàn)之圓環(huán)狀(戒指型)

    SWT(JFace)體驗(yàn)之圓環(huán)狀(戒指型)實(shí)現(xiàn)代碼。
    2009-06-06
  • Activiti7整合Springboot使用記錄

    Activiti7整合Springboot使用記錄

    這篇文章主要介紹了Activiti7+Springboot使用整合記錄,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-08-08
  • PageHelper引發(fā)的幽靈數(shù)據(jù)問(wèn)題解析

    PageHelper引發(fā)的幽靈數(shù)據(jù)問(wèn)題解析

    這篇文章主要為大家介紹了PageHelper引發(fā)的幽靈數(shù)據(jù)問(wèn)題解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • spring boot 學(xué)習(xí)筆記(入門篇)

    spring boot 學(xué)習(xí)筆記(入門篇)

    ing Boot是由Pivotal團(tuán)隊(duì)提供的全新框架,其設(shè)計(jì)目的是用來(lái)簡(jiǎn)化新Spring應(yīng)用的初始搭建以及開發(fā)過(guò)程。這篇文章給大家?guī)?lái)了spring boot 入門學(xué)習(xí)筆記,需要的朋友參考下
    2018-02-02

最新評(píng)論

凤翔县| 佛教| 科技| 海丰县| 榕江县| 讷河市| 同心县| 太仓市| 小金县| 康平县| 福州市| 岳阳市| 南开区| 武城县| 鄂尔多斯市| 新和县| 永仁县| 平乐县| 利津县| 红安县| 普定县| 樟树市| 宜昌市| 丹阳市| 虹口区| 平谷区| 库尔勒市| 天等县| 麻城市| 湟源县| 湘潭市| 拜泉县| 富顺县| 翁源县| 正定县| 雷波县| 呈贡县| 昭通市| 桃园市| 广元市| 铜陵市|