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

redis redistemplate序列化對(duì)象配置方式

 更新時(shí)間:2023年12月20日 09:46:48   作者:aitxiaogang  
這篇文章主要介紹了redis redistemplate序列化對(duì)象配置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

redis redistemplate序列化對(duì)象配置

@Configuration
public class RedisConfig {
    /**
     * 重寫Redis序列化方式,使用Json方式:
     * 當(dāng)我們的數(shù)據(jù)存儲(chǔ)到Redis的時(shí)候,我們的鍵(key)和值(value)都是通過(guò)Spring提供的Serializer序列化到數(shù)據(jù)庫(kù)的。RedisTemplate默認(rèn)使用的是JdkSerializationRedisSerializer,StringRedisTemplate默認(rèn)使用的是StringRedisSerializer。
     * Spring Data JPA為我們提供了下面的Serializer:
     * GenericToStringSerializer、Jackson2JsonRedisSerializer、JacksonJsonRedisSerializer、JdkSerializationRedisSerializer、OxmSerializer、StringRedisSerializer。
     * 在此我們將自己配置RedisTemplate并定義Serializer。
     *
     * @param redisConnectionFactory
     * @return
     */
    @Bean
    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
        RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
        redisTemplate.setConnectionFactory(redisConnectionFactory);
//        JdkSerializationRedisSerializer jdkSerializationRedisSerializer = new JdkSerializationRedisSerializer();
        GenericJackson2JsonRedisSerializer jackson2JsonRedisSerializer = new GenericJackson2JsonRedisSerializer();
        // 設(shè)置值(value)的序列化采用FastJsonRedisSerializer。
        redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
//        redisTemplate.setHashValueSerializer(fastJsonRedisSerializer);
        // 設(shè)置鍵(key)的序列化采用StringRedisSerializer。
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        redisTemplate.setHashKeySerializer(new StringRedisSerializer());
        redisTemplate.afterPropertiesSet();
        return redisTemplate;
    }
 
}
@Component
public class HashRedisTemplate extends RedisTemplate {
 
    public HashRedisTemplate(RedisConnectionFactory redisConnectionFactory) {
        this.setConnectionFactory(redisConnectionFactory);
        this.setKeySerializer(new StringRedisSerializer());
        this.setValueSerializer(new StringRedisSerializer());
        this.setHashKeySerializer(new StringRedisSerializer());
        this.setHashValueSerializer(new StringRedisSerializer());
        this.afterPropertiesSet();
    }
}

下面的方式不推薦

通過(guò)java對(duì)象序列化的方式,速度上可能不及上面通過(guò)json的格式序列化,還有一點(diǎn)就是json序列的方式可以看出對(duì)象里面的屬性

但是也有優(yōu)點(diǎn):存儲(chǔ)內(nèi)容沒(méi)有限制,不存在枚舉序列化和反序列化失敗的情況。存儲(chǔ)空間占用少。

缺點(diǎn)就是反序列化之前,看不出內(nèi)容是什么

public class ObjectSerializer<T> implements RedisSerializer<T> {
 
    @Nullable
    @Override
    public byte[] serialize(@Nullable T t) throws SerializationException {
        ByteArrayOutputStream byteArrayOutputStream = null;
        ObjectOutputStream objectOutputStream = null;
        try {
            byteArrayOutputStream = new ByteArrayOutputStream();
            objectOutputStream = new ObjectOutputStream(byteArrayOutputStream);
            objectOutputStream.writeObject(t);
 
            byte[] bytes = byteArrayOutputStream.toByteArray();
            return bytes;
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            try {
                objectOutputStream.close();
                byteArrayOutputStream.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return new byte[0];
    }
 
    @Nullable
    @Override
    public T deserialize(@Nullable byte[] bytes) throws SerializationException {
        InputStream inputstream = null;
        ObjectInputStream objectInputStream = null;
        try {
            inputstream = new ByteArrayInputStream(bytes);
            objectInputStream = new ObjectInputStream(inputstream);
            Object o = objectInputStream.readObject();
            T t = (T) o;
            return t;
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            try {
                objectInputStream.close();
                inputstream.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return null;
    }
}

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Redis?如何清空所有數(shù)據(jù)

    Redis?如何清空所有數(shù)據(jù)

    這篇文章主要介紹了Redis?如何清空所有數(shù)據(jù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • Redis中的動(dòng)態(tài)字符串學(xué)習(xí)教程

    Redis中的動(dòng)態(tài)字符串學(xué)習(xí)教程

    這篇文章主要介紹了Redis中的動(dòng)態(tài)字符串學(xué)習(xí)教程,以sds模塊的使用為主進(jìn)行講解,需要的朋友可以參考下
    2015-08-08
  • 如何在SpringBoot中使用Redis實(shí)現(xiàn)分布式鎖

    如何在SpringBoot中使用Redis實(shí)現(xiàn)分布式鎖

    這篇文章主要介紹了如何在SpringBoot中使用Redis實(shí)現(xiàn)分布式鎖,在實(shí)際開(kāi)發(fā)中有可能會(huì)遇到多個(gè)線程同時(shí)訪問(wèn)同一個(gè)共享變量,那么上鎖就很重要了,需要的朋友可以參考下
    2023-03-03
  • Redis字符串類型的常用命令小結(jié)

    Redis字符串類型的常用命令小結(jié)

    這篇文章給大家整理了在操作Redis字符串類型中的常用命令,文章總結(jié)的很全面,對(duì)大家學(xué)習(xí)Redis具有一定的參考借鑒價(jià)值,下面來(lái)一起看看吧。
    2016-09-09
  • Redis集群的搭建圖文教程

    Redis集群的搭建圖文教程

    下面小編就為大家分享一篇Redis集群的搭建圖文教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2017-11-11
  • 為Redis設(shè)置密碼的三種方法

    為Redis設(shè)置密碼的三種方法

    Redis 是一個(gè)高性能的鍵值對(duì)數(shù)據(jù)庫(kù),廣泛應(yīng)用于緩存、消息隊(duì)列等場(chǎng)景,為了保障 Redis 服務(wù)的安全性,設(shè)置密碼認(rèn)證是非常重要的一步,所以本文給大家介紹了為Redis設(shè)置密碼的三種方法,需要的朋友可以參考下
    2024-11-11
  • Redis入門基礎(chǔ)常用操作命令整理

    Redis入門基礎(chǔ)常用操作命令整理

    這篇文章主要為大家介紹了Redis入門基礎(chǔ)常用操作命令的整理,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • Redis中的常用的五種數(shù)據(jù)類型詳解

    Redis中的常用的五種數(shù)據(jù)類型詳解

    這篇文章主要介紹了Redis中的常用的五種數(shù)據(jù)類型詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • redis實(shí)現(xiàn)session共享的方法

    redis實(shí)現(xiàn)session共享的方法

    本文主要介紹了redis實(shí)現(xiàn)session共享的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • Redis中不同持久化方式的差異對(duì)比

    Redis中不同持久化方式的差異對(duì)比

    大家應(yīng)該都知道,Redis持久化方式主要有兩種:RDB(Redis DataBase)和AOF(Append-only file),但是他們各自存儲(chǔ)了什么內(nèi)容?有什么差異呢?今天我來(lái)給大家做個(gè)小試驗(yàn),需要的朋友可以參考下
    2024-03-03

最新評(píng)論