欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java中StringRedisTemplate和RedisTemplate的區(qū)別及使用方法

 更新時(shí)間:2023年04月10日 15:43:09   作者:StudyJavaWeb  
本文主要介紹了Java中StringRedisTemplate和RedisTemplate的區(qū)別及使用方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

在學(xué)習(xí)SpringCloud的過程中,總需要記錄一下學(xué)習(xí)的過程,今天記錄一下StringRedisTemplate和RedisTemplate的區(qū)別及使用方法,使用時(shí)只需使用maven依賴包spring-boot-starter-data-redis即可,然后在service中注入StringRedisTemplate或者RedisTemplate即可

首先如下圖所示StringRedisTemplate繼承了RedisTemplate,所以兩者對(duì)Redis的操作方法具有相同之處

兩者的數(shù)據(jù)是不共通的;也就是說StringRedisTemplate只能管理StringRedisTemplate里面的數(shù)據(jù),RedisTemplate只能管理RedisTemplate中的數(shù)據(jù)。

其實(shí)他們兩者之間的區(qū)別主要在于他們使用的序列化類:

  • RedisTemplate使用的是JdkSerializationRedisSerializer 存入數(shù)據(jù)會(huì)將數(shù)據(jù)先序列化成字節(jié)數(shù)組然后在存入Redis數(shù)據(jù)庫(kù)。
  • StringRedisTemplate使用的是StringRedisSerializer

使用時(shí)注意事項(xiàng):

當(dāng)你的redis數(shù)據(jù)庫(kù)里面本來(lái)存的是字符串?dāng)?shù)據(jù)或者你要存取的數(shù)據(jù)就是字符串類型數(shù)據(jù)的時(shí)候,那么你就使用StringRedisTemplate即可。

但是如果你的數(shù)據(jù)是復(fù)雜的對(duì)象類型,而取出的時(shí)候又不想做任何的數(shù)據(jù)轉(zhuǎn)換,直接從Redis里面取出一個(gè)對(duì)象,那么使用RedisTemplate是更好的選擇。

RedisTemplate使用時(shí)常見問題:

redisTemplate 中存取數(shù)據(jù)都是字節(jié)數(shù)組。當(dāng)redis中存入的數(shù)據(jù)是可讀形式而非字節(jié)數(shù)組時(shí),使用redisTemplate取值的時(shí)候會(huì)無(wú)法獲取導(dǎo)出數(shù)據(jù),獲得的值為null??梢允褂肧tringRedisTemplate 試試。

StringRedisTemplate對(duì)于Redis的操作方法:

StringRedisTemplate.opsForValue().* //操作String字符串類型
StringRedisTemplate.delete(key/collection) //根據(jù)key/keys刪除
StringRedisTemplate.opsForList().*  //操作List類型
StringRedisTemplate.opsForHash().*  //操作Hash類型
StringRedisTemplate.opsForSet().*  //操作set類型
StringRedisTemplate.opsForZSet().*  //操作有序set

接口實(shí)現(xiàn)代碼如下:

package com.cloud.spring.demo.service.impl;

import com.cloud.spring.demo.service.RedisTestService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * @Package: com.cloud.spring.demo.service.impl
 * @ClassName: RedisTestServiceImpl
 * @Author: zhougaoyang
 * @Description: redis服務(wù)測(cè)試接口實(shí)現(xiàn)
 * @Date: 2019/4/27 10:16
 * @Version: 1.0
 */
@Service
public class RedisTestServiceImpl implements RedisTestService {
    private static final Logger log = LoggerFactory.getLogger(RedisTestService.class);

    @Autowired
    private StringRedisTemplate redisTemplate;


    /**
     * @Description 獲取String類型的value
     * @param name
     * @return
     */
    @Override
    public String findName(String name) {
        if (name==null){
            log.error("===============key為null======================================================");
        }
        return redisTemplate.opsForValue().get(name);
    }

    /**
     * @Description 添加String類型的key-value
     * @param name
     * @param value
     * @return
     */
    @Override
    public String setNameValue(String name, String value) {
        log.info("==================添加String類型的key-value========================================");
        redisTemplate.opsForValue().set(name,value);
        return name;
    }

    /**
     * @Description 根據(jù)key刪除redis的數(shù)據(jù)
     * @param name
     * @return
     */
    @Override
    public String delNameValue(String name) {
        redisTemplate.delete(name);
        return name;
    }

    /**
     * @Description 根據(jù)key獲取list類型的value(范圍)
     * @param key
     * @return
     */
    @Override
    public List<String> findList(String key,int start,int end) {
        log.info("=====================按照范圍查詢r(jià)edis中List類型=======================================");
        return redisTemplate.opsForList().range(key,start,end);
    }

    /**
     * @Description 插入多條數(shù)據(jù)
     * @param key
     * @param value
     * @return
     */
    @Override
    public long setList(String key, List<String> value) {
        log.info("=========================redis List type insert ======================================");
        return redisTemplate.opsForList().rightPushAll(key, value);
    }

    /**
     * @Description 獲取list最新記錄(右側(cè))
     * @param key
     * @return
     */
    @Override
    public String findLatest(String key) {
        log.info("=============================rides List latest rigth==================================");
        return redisTemplate.opsForList().index(key,redisTemplate.opsForList().size(key)-1);
    }

    /**
     * @Description 查詢hash
     * @param key
     * @return
     */
    @Override
    public Map<Object, Object> findHash(String key) {
        log.info("===================================redis hash =========================================");
        return redisTemplate.opsForHash().entries(key);
    }

    /**
     * @Description 查詢hash中所有的key
     * @param key
     * @return
     */
    @Override
    public Set<Object> findHashKeys(String key) {
        log.info("====================================== All keys of hash ===============================");
        return redisTemplate.opsForHash().keys(key);
    }

    /**
     * @Description 查詢hash中所有的value
     * @param key
     * @return
     */
    @Override
    public List<Object> findHashValues(String key) {
        log.info("===================================== All values of hash ==============================");
        return redisTemplate.opsForHash().values(key);
    }

    /**
     * @Desscription 插入hash數(shù)據(jù)
     * @param key
     * @param map
     * @return
     */
    @Override
    public long insertHash(String key, Map<String, Object> map) {
        log.info("====================================== insert hashes into redis ========================");
        redisTemplate.opsForHash().putAll(key,map);
        return map.size();
    }
}

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

相關(guān)文章

  • java中JSONObject轉(zhuǎn)換為HashMap(方法+main方法調(diào)用實(shí)例)

    java中JSONObject轉(zhuǎn)換為HashMap(方法+main方法調(diào)用實(shí)例)

    這篇文章主要介紹了java中JSONObject轉(zhuǎn)換為HashMap(方法+main方法調(diào)用實(shí)例),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • 關(guān)于Java父類沒有無(wú)參構(gòu)造方法子類處理方法

    關(guān)于Java父類沒有無(wú)參構(gòu)造方法子類處理方法

    父類無(wú)參構(gòu)造方法,子類不寫,其實(shí)會(huì)默認(rèn)調(diào)用父類的無(wú)參構(gòu)造方法也就是用super(),編譯運(yùn)行后,會(huì)打印出"子類會(huì)調(diào)用Father的第一個(gè)構(gòu)造方法,這篇文章給大家介紹關(guān)于Java父類沒有無(wú)參構(gòu)造方法子類處理方法,感興趣的朋友一起看看吧
    2024-01-01
  • springboot動(dòng)態(tài)定時(shí)任務(wù)的實(shí)現(xiàn)方法示例

    springboot動(dòng)態(tài)定時(shí)任務(wù)的實(shí)現(xiàn)方法示例

    這篇文章主要給大家介紹了關(guān)于springboot動(dòng)態(tài)定時(shí)任務(wù)的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • java中for循環(huán)執(zhí)行的順序圖文詳析

    java中for循環(huán)執(zhí)行的順序圖文詳析

    關(guān)于java的for循環(huán)想必大家非常熟悉,它是java常用的語(yǔ)句之一,這篇文章主要給大家介紹了關(guān)于java中for循環(huán)執(zhí)行順序的相關(guān)資料,需要的朋友可以參考下
    2021-06-06
  • Java實(shí)現(xiàn)輸出數(shù)字三角形實(shí)例代碼

    Java實(shí)現(xiàn)輸出數(shù)字三角形實(shí)例代碼

    大家好,本篇文章主要講的是Java實(shí)現(xiàn)輸出三角形實(shí)例代碼,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2022-01-01
  • Java8利用Stream實(shí)現(xiàn)列表去重的方法詳解

    Java8利用Stream實(shí)現(xiàn)列表去重的方法詳解

    這篇文章主要為大家介紹了Java利用Stream實(shí)現(xiàn)列表去重的幾種方法詳解,文中的示例代碼講解詳細(xì),需要的小伙伴可以參考一下
    2022-04-04
  • SpringMVC+Mybatis實(shí)現(xiàn)的Mysql分頁(yè)數(shù)據(jù)查詢的示例

    SpringMVC+Mybatis實(shí)現(xiàn)的Mysql分頁(yè)數(shù)據(jù)查詢的示例

    本篇文章主要介紹了SpringMVC+Mybatis實(shí)現(xiàn)的Mysql分頁(yè)數(shù)據(jù)查詢的示例,具有一定的參考價(jià)值,有興趣的可以了解一下
    2017-08-08
  • java 線程之對(duì)象的同步和異步(實(shí)例講解)

    java 線程之對(duì)象的同步和異步(實(shí)例講解)

    下面小編就為大家?guī)?lái)一篇java 線程之對(duì)象的同步和異步(實(shí)例講解)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧
    2017-07-07
  • Java序列化(Serialization) 機(jī)制

    Java序列化(Serialization) 機(jī)制

    本篇文章是對(duì)Java中對(duì)象的序列化(Serialization) 機(jī)制進(jìn)行了詳細(xì)的分析介紹,并附實(shí)例,需要的朋友可以參考下
    2016-07-07
  • 詳解Mybatis 傳遞參數(shù)類型為L(zhǎng)ist的取值問題

    詳解Mybatis 傳遞參數(shù)類型為L(zhǎng)ist的取值問題

    這篇文章主要介紹了詳解Mybatis 傳遞參數(shù)類型為L(zhǎng)ist的取值問題,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10

最新評(píng)論