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

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

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

springboot使用redis

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

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

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

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

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

描述

點擊server,點擊add,設(shè)置端口號就可以訪問redis了

springboot使用redis步驟

添加依賴

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

RedisTemplate實際上使用的是lettuce客戶端庫

		<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
#沒有密碼可以不用配置這個
#spring.redis.password=123456

使用redisTemplate來訪問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模板
     *
     * 對于RedisTemplate的泛型情況,
     * 可以使用<String, String>
     *       <Object, Object>
     *       或者不寫泛型
     *
     *  注意,屬性的名稱必須為redisTemplate,因為按名稱注入,框架創(chuàng)建的對象就是這個名字的
     */
    @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對象
        stringRedisTemplate.opsForValue().set(k,v);
        return "使用StringRedisTemplate對象添加";
    }

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

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

使用postman

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

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

亂碼前綴

亂碼

直接通過"lisi"它的值是可以取出的

結(jié)果

可見在RedisTemplate在存取中做了手腳.

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

存

取

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

數(shù)據(jù)

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

數(shù)據(jù)

StringRedisTemplate和RedisTemplate

上面說到了這兩者在存取中的差異

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

序列化作用 :

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

序列化的方式 :

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

我們上面的RedisTemplate類的存儲就是JDK方式的

jdk方式的序列化

jdk序列化

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

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

序列化的方式可以改變

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

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

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

使用json方式的序列化

創(chuàng)建實體類,需要實現(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";
    }

測試訪問url

測試訪問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ù)據(jù)

總結(jié) 

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

相關(guān)文章

  • 基于Java Swing制作一個Pong小游戲

    基于Java Swing制作一個Pong小游戲

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

    引入mybatis-plus報 Invalid bound statement錯誤問題的解決方法

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

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

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

    java?System類和Arrays類詳解

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

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

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

    簡述Java中的四種引用類型

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

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

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

    Activiti7整合Springboot使用記錄

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

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

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

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

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

最新評論

禹州市| 岢岚县| 封开县| 安庆市| 高安市| 新余市| 聂荣县| 五大连池市| 萝北县| 临江市| 简阳市| 广昌县| 四川省| 玉树县| 惠州市| 定边县| 普陀区| 新平| 九寨沟县| 成安县| 小金县| 呼图壁县| 普洱| 北流市| 新化县| 马尔康县| 吉木乃县| 敦煌市| 安国市| 五原县| 乌兰察布市| 黄平县| 沁源县| 金门县| 农安县| 门头沟区| 梨树县| 通州区| 阿荣旗| 延边| 青田县|