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

Redis如何存儲對象與集合示例詳解

 更新時間:2018年05月03日 10:38:41   作者:sunjian  
redis是一個key-value存儲系統(tǒng)。和Memcached類似,它支持存儲的value類型相對更多,包括string(字符串)、list(鏈表)、set(集合)、 zset(sorted set --有序集合)和hash(哈希類型)本文介紹了關于Redis是如何存儲對象與集合的相關資料,需要的朋友可以參考下

前言

大家都知道在項目中,緩存以及mq消息隊列可以說是不可或缺的2個重要技術。前者主要是為了減輕數(shù)據(jù)庫壓力,大幅度提升性能。后者主要是為了提高用戶的體驗度,我理解的是再后端做的一個ajax請求(異步),并且像ribbmitmq等消息隊列有重試機制等功能。

這里主要講redis如何把對象,集合存入,并且取出。下面話不多說了,來一起看看詳細的介紹吧。

1.在啟動類上加入如下代碼

private Jedis jedis;private JedisPoolConfig config;private JedisShardInfo sharInfo;@Beanpublic Jedis jedis(){//連接redis服務器,192.168.0.100:6379// jedis = new Jedis("192.168.0.100", 6379);// //權限認證// jedis.auth("123456");// 操作單獨的文本串config = new JedisPoolConfig(); 
config.setMaxIdle(1000);//最大空閑時間config.setMaxWaitMillis(1000); //最大等待時間config.setMaxTotal(500); //redis池中最大對象個數(shù)sharInfo = new JedisShardInfo("192.168.0.100", 6379); 
sharInfo.setPassword("123456"); 
sharInfo.setConnectionTimeout(5000);//鏈接超時時間jedis = new Jedis(sharInfo);return jedis; 
} 

2.在application.yml當中加入redis配置

spring: 
 redis: 
 database: 0 
 host: 101.132.191.77 
 port: 6379 
 password: 123456 
 pool: 
 max-idle: 8 #連接池最大連接數(shù)(使用負值表示沒有限制) 
 min-idle: 0 # 連接池中的最小空閑連接 
 max-active: 8 # 連接池最大阻塞等待時間(使用負值表示沒有限制) 
 max-wait: -1 # 連接池中的最大空閑連接 
 timeout: 5000 # 連接超時時間(毫秒) 

3.新建SerializeUtil類,這個類主要是為了將對象序列化redis當中

import java.io.ByteArrayInputStream; 
import java.io.ByteArrayOutputStream; 
import java.io.ObjectInputStream; 
import java.io.ObjectOutputStream;/** 
public class SerializeUtil 
{ 
 public static byte[] serialize(Object object) { 
 ObjectOutputStream oos = null; 
 ByteArrayOutputStream baos = null; 
 try {// 序列化baos = new ByteArrayOutputStream(); 
  oos = new ObjectOutputStream(baos); 
  oos.writeObject(object); 
  byte[] bytes = baos.toByteArray(); 
  return bytes; 
  } catch (Exception e) { 
 
  }return null; 
 } 
 public static Object unserialize( byte[] bytes) { 
 ByteArrayInputStream bais = null; 
 try { 
 // 反序列化bais = new ByteArrayInputStream(bytes); 
 ObjectInputStream ois = new ObjectInputStream(bais); 
 return ois.readObject(); 
  } catch (Exception e) { 
 
  }return null; 
 } 
 } 

4.我封裝了一個RedisServiceImpl類,主要是用對redis設值和取值

import com.ys.util.redis.SerializeUtil; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.data.redis.core.StringRedisTemplate; 
import org.springframework.stereotype.Service; 
import redis.clients.jedis.Jedis; 
import java.util.List; 
import java.util.Map; 
import java.util.concurrent.TimeUnit; 
@Service 
public class RedisServiceImpl 
 
 {@Autowired 
 
 private StringRedisTemplate stringRedisTemplate; 
 @Autowired 
 private Jedis jedis; 
 public void setStr(String key, String value) { 
 setStr(key, value, null); 
 } 
 public void setStr(String key, Object value, Long time) 
 {if(value == null){ 
 return; 
 }if(value instanceof String){ 
 String obj = (String) value; 
 stringRedisTemplate.opsForValue().set(key, obj); 
 }else if(value instanceof List){ 
 List obj = (List) value; 
 stringRedisTemplate.opsForList().leftPushAll(key,obj); 
 }else if(value instanceof Map){ 
 Map obj = (Map) value; 
 stringRedisTemplate.opsForHash().putAll(key,obj); 
 }if (time != null) 
 stringRedisTemplate.expire(key, time, TimeUnit.SECONDS); 
 } 
 public Object getKey(String key) 
 {return stringRedisTemplate.opsForValue().get(key); 
  } 
 public void delKey(String key) { 
 stringRedisTemplate.delete(key); 
 } 
 public boolean del(String key) 
 {return jedis.del(key.getBytes())>0; 
 } 
} 

5.測試redis是否ok,編寫redisController類

import com.ys.service.impl.RedisServiceImpl; 
import com.ys.vo.IqProduct; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RestController; 
import java.util.ArrayList; 
import java.util.Date; 
import java.util.List; 
@RestController 
 
public class RedisServiceController 
 
 { 
@Autowired 
 
private RedisServiceImpl redisService; 
@RequestMapping(value = "/setredis") 
public String setredis(String keyredis){ 
 redisService.setStr(keyredis,"2018年1月26日"); 
 return "保存成功,請訪問getredis查詢redis"; 
} 
@RequestMapping(value = "/setObj") 
public String setObj(String keyredis){ 
 IqProduct iqProduct = new IqProduct(); 
 iqProduct.setSort(1); 
 iqProduct.setTimestamp(new Date().getTime()); 
 iqProduct.setProductName("productname"); 
 // list.add(iqProduct); 
 redisService.set(keyredis, iqProduct); 
 return "保存成功,請訪問getredis查詢redis"; 
 } 
 @RequestMapping(value = "/getObj") 
 public Object getObj(String keyredis){ 
 Object object = redisService.get(keyredis); 
 if(object !=null){ 
 IqProduct iqProduct = (IqProduct) object; 
 System. out.println(iqProduct.getProductName()); 
 System. out.println(iqProduct.getId()); 
 System. out.println(iqProduct.getTimestamp()); 
 }return object; 
} 
 @RequestMapping(value = "/delObj") 
 public boolean delObj(String keyredis) 
 {boolean del = redisService.del(keyredis); 
  return del; 
 } 
 @RequestMapping(value = "/getredis") 
 public String getredis(String keyredis){ 
 String getredis = (String) redisService.getKey(keyredis); 
 return "redis的key是===>"+getredis; 
 } 
 @RequestMapping(value = "/delredis") 
 public String delredis(String keyredis){ 
 redisService.delKey(keyredis); 
 return "刪除成功,請通過getredis進行查詢"; 
 } 
 @RequestMapping(value = "/setList") 
 public String setList(String keyredis){ 
 List list = new ArrayList();for (int i = 0;i<10;i++){ 
 IqProduct iqProduct = new IqProduct(); 
 iqProduct.setSort(1); 
 iqProduct.setTimestamp(new Date().getTime()); 
 iqProduct.setProductName("productname"); 
 list.add(iqProduct); 
 } 
 redisService.set(keyredis, list); 
 return "保存成功,請訪問getredis查詢redis"; 
 } 
 @RequestMapping(value = "/getList") 
 public Object getList(String keyredis){ 
 Object object = redisService.get(keyredis); 
 if(object !=null){ 
 List<IqProduct> iqProducts = (List<IqProduct>) object; 
 for (int i = 0;i<iqProducts.size();i++){ 
 IqProduct iqProduct = iqProducts.get(i); 
 System. out.println(iqProduct.getProductName()); 
 System. out.println(iqProduct.getId()); 
 System. out.println(iqProduct.getTimestamp()); 
 } 
 }return object; 
 } 
 @RequestMapping(value = "/delList") 
 public boolean delList(String keyredis) 
 { 
 boolean del = redisService.del(keyredis);return del; 
 } 
} 

6.測試結果


總結

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關文章

  • redis基本安裝判斷、啟動使用方法示例

    redis基本安裝判斷、啟動使用方法示例

    這篇文章主要介紹了redis基本安裝判斷、啟動使用方法,結合實例形式分析了Redis針對是否安裝的判斷、啟動等使用方法,需要的朋友可以參考下
    2020-02-02
  • RedisTemplate常用方法大全(面試必備)

    RedisTemplate常用方法大全(面試必備)

    RedisTemplate是SpringData Redis提供的一個類,本文主要介紹了RedisTemplate常用方法大全,具有一定的參考價值,感興趣的可以了解一下
    2024-05-05
  • redis3.2配置文件redis.conf詳細說明

    redis3.2配置文件redis.conf詳細說明

    redis3.2配置詳解,Redis啟動的時候,可以指定配置文件,詳細說明請看本文說明
    2018-03-03
  • Redis?Hash序列化存儲的問題及解決方案

    Redis?Hash序列化存儲的問題及解決方案

    這篇文章主要介紹了Redis?Hash序列化存儲的問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • redis 用scan指令 代替keys指令(詳解)

    redis 用scan指令 代替keys指令(詳解)

    下面小編就為大家分享一篇redis 用scan指令 代替keys指令詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12
  • Redis實現(xiàn)布隆過濾器的方法及原理

    Redis實現(xiàn)布隆過濾器的方法及原理

    布隆過濾器優(yōu)點是空間效率和查詢時間都比一般的算法要好的多,缺點是有一定的誤識別率和刪除困難。本文將介紹布隆過濾器的原理以及Redis如何實現(xiàn)布隆過濾器,感興趣的朋友跟隨小編一起看看吧
    2019-12-12
  • odoo中使用redis實現(xiàn)緩存的步驟

    odoo中使用redis實現(xiàn)緩存的步驟

    這篇文章主要介紹了odoo中使用redis實現(xiàn)緩存的步驟,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-04-04
  • Redis集群搭建(主從模式、哨兵模式、集群模式)

    Redis集群搭建(主從模式、哨兵模式、集群模式)

    本文主要介紹了Redis集群搭建,主要包括主從模式、哨兵模式、集群模式這三種方式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-01-01
  • 詳解Redis 分布式鎖遇到的序列化問題

    詳解Redis 分布式鎖遇到的序列化問題

    這篇文章主要介紹了Redis 分布式鎖遇到的序列化問題,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-03-03
  • Redis 命令整理并說明如何使用

    Redis 命令整理并說明如何使用

    這篇文章主要介紹了Redis 命令整理并說明如何使用的相關資料,需要的朋友可以參考下
    2017-02-02

最新評論