首頁 > 軟體

redis如何實現儲存物件

2022-06-16 18:06:42

redis儲存物件

redis資料結構

  • String——字串
  • Hash——字典
  • List——列表
  • Set——集合
  • Sorted Set——有序集合
redisTemplate.opsForValue();//操作字串
redisTemplate.opsForHash();//操作hash
redisTemplate.opsForList();//操作list
redisTemplate.opsForSet();//操作set
redisTemplate.opsForZSet();//操作有序set

儲存物件

RedisConfig.java 

package com.wj.demo.config; 
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;
 
@Configuration
public class RedisConfig {
 
    @Bean
    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {  
        RedisTemplate<String, Object> template = new RedisTemplate<String, Object>();  
        template.setConnectionFactory(redisConnectionFactory);
        template.setKeySerializer(new StringRedisSerializer());
        template.setValueSerializer(new GenericJackson2JsonRedisSerializer());
        template.setHashKeySerializer(new GenericJackson2JsonRedisSerializer());
        template.setHashValueSerializer(new GenericJackson2JsonRedisSerializer());
        template.afterPropertiesSet();  
        return template;  
    }
} 

測試成功。

redis存放物件的兩種方式

資料格式

  • 使用者id為查詢的key
  • 儲存的value使用者物件包括姓名,年齡,生日等等
  • 如果用普通的key-value結構來儲存,主要有以下2種方式儲存

方式一(String)

這種方式是使用list或者set這些來儲存的,這樣的方式其實也可以達到我們想要的效果,但是因為每次修改屬性都需要三步走,效能開銷非常大。1.先反序列化;2,修改;3.序列化

方式二(hash)

這種方式其實也有兩種寫法

寫法一:

這種寫法不僅能夠達成目標,而且解決了資源消耗過大的問題,但是也引起了另一個問題,就是使用者的id資料冗餘

寫法二:

通過key(使用者id)+field(屬性標籤)可以操作對應屬性資料了,既不需要重複儲存資料,也不會帶來序列化和並修復操控的問題

以上為個人經驗,希望能給大家一個參考,也希望大家多多支援it145.com。


IT145.com E-mail:sddin#qq.com