redis如何實現(xiàn)保存對象
redis保存對象
redis數(shù)據(jù)結構
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存放對象的兩種方式
數(shù)據(jù)格式
- 用戶id為查找的key
- 存儲的value用戶對象包括姓名,年齡,生日等等
- 如果用普通的key-value結構來存儲,主要有以下2種方式存儲
方式一(String)

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

這種寫法不僅能夠達成目標,而且解決了資源消耗過大的問題,但是也引起了另一個問題,就是用戶的id數(shù)據(jù)冗余
寫法二:

通過key(用戶id)+field(屬性標簽)可以操作對應屬性數(shù)據(jù)了,既不需要重復存儲數(shù)據(jù),也不會帶來序列化和并修復操控的問題
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
redis-benchmark并發(fā)壓力測試的問題解析
這篇文章主要介紹了redis-benchmark并發(fā)壓力測試的問題解析,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-01-01
使用redis實現(xiàn)延遲通知功能(Redis過期鍵通知)
這篇文章主要介紹了使用redis實現(xiàn)延遲通知功能(Redis過期鍵通知)的相關知識,本文通過實例代碼圖文相結合給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧2021-09-09

