自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Redis是如何存儲對象和集合的

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

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

這里主要講redis如何把對象,集合存入,并且取出。

[[227948]]

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

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

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

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

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

  1. import java.io.ByteArrayInputStream; 
  2. import java.io.ByteArrayOutputStream; 
  3. import java.io.ObjectInputStream; 
  4. import java.io.ObjectOutputStream;/** 
  5. public class SerializeUtil  
  6.      public static byte[] serialize(Object object) { 
  7.         ObjectOutputStream oos = null
  8.         ByteArrayOutputStream baos = null
  9.         try {// 序列化baos = new ByteArrayOutputStream(); 
  10.             oos = new ObjectOutputStream(baos); 
  11.             oos.writeObject(object); 
  12.             byte[] bytes = baos.toByteArray(); 
  13.             return bytes; 
  14.             } catch (Exception e) { 
  15.  
  16.             }return null
  17.         } 
  18.   public static Object unserialize( byte[] bytes) { 
  19.         ByteArrayInputStream bais = null
  20.         try { 
  21.         // 反序列化bais = new ByteArrayInputStream(bytes); 
  22.         ObjectInputStream ois = new ObjectInputStream(bais); 
  23.         return ois.readObject(); 
  24.             } catch (Exception e) { 
  25.  
  26.             }return null
  27.         } 
  28.      } 

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

  1. import com.ys.util.redis.SerializeUtil; 
  2. import org.springframework.beans.factory.annotation.Autowired; 
  3. import org.springframework.data.redis.core.StringRedisTemplate; 
  4. import org.springframework.stereotype.Service; 
  5. import redis.clients.jedis.Jedis; 
  6. import java.util.List; 
  7. import java.util.Map; 
  8. import java.util.concurrent.TimeUnit; 
  9. @Service 
  10. public class RedisServiceImpl 
  11.  
  12.  {@Autowired   
  13.  
  14.     private StringRedisTemplate stringRedisTemplate; 
  15.     @Autowired 
  16.     private Jedis jedis; 
  17.     public void setStr(String key, String value) { 
  18.         setStr(key, value, null); 
  19.     } 
  20.     public void setStr(String key, Object value, Long time
  21.     {if(value == null){ 
  22.     return
  23.     }if(value instanceof String){ 
  24.         String obj = (String) value; 
  25.         stringRedisTemplate.opsForValue().set(key, obj); 
  26.         }else if(value instanceof List){ 
  27.         List obj = (List) value; 
  28.         stringRedisTemplate.opsForList().leftPushAll(key,obj); 
  29.         }else if(value instanceof Map){ 
  30.         Map obj = (Map) value; 
  31.         stringRedisTemplate.opsForHash().putAll(key,obj); 
  32.         }if (time != null
  33.         stringRedisTemplate.expire(keytime, TimeUnit.SECONDS); 
  34.     } 
  35.     public Object getKey(String key)  
  36.         {return stringRedisTemplate.opsForValue().get(key); 
  37.           } 
  38.     public void delKey(String key) { 
  39.         stringRedisTemplate.delete(key); 
  40.         } 
  41.     public boolean del(String key
  42.         {return jedis.del(key.getBytes())>0; 
  43.         } 

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

  1. import com.ys.service.impl.RedisServiceImpl; 
  2. import com.ys.vo.IqProduct; 
  3. import org.springframework.beans.factory.annotation.Autowired; 
  4. import org.springframework.web.bind.annotation.RequestMapping; 
  5. import org.springframework.web.bind.annotation.RestController; 
  6. import java.util.ArrayList; 
  7. import java.util.Date
  8. import java.util.List; 
  9. @RestController 
  10.  
  11. public class RedisServiceController 
  12.  
  13.  { 
  14. @Autowired 
  15.  
  16. private RedisServiceImpl redisService; 
  17. @RequestMapping(value = "/setredis"
  18. public String setredis(String keyredis){ 
  19.         redisService.setStr(keyredis,"2018年1月26日"); 
  20.         return "保存成功,請訪問getredis查詢redis"
  21. @RequestMapping(value = "/setObj"
  22. public String setObj(String keyredis){ 
  23.     IqProduct iqProduct = new IqProduct(); 
  24.     iqProduct.setSort(1); 
  25.     iqProduct.setTimestamp(new Date().getTime()); 
  26.     iqProduct.setProductName("productname"); 
  27.     // list.add(iqProduct); 
  28.     redisService.set(keyredis, iqProduct); 
  29.     return "保存成功,請訪問getredis查詢redis"
  30.     } 
  31.     @RequestMapping(value = "/getObj"
  32.     public Object getObj(String keyredis){ 
  33.         Object object = redisService.get(keyredis); 
  34.         if(object !=null){ 
  35.         IqProduct iqProduct = (IqProduct) object; 
  36.         System. out.println(iqProduct.getProductName()); 
  37.         System. out.println(iqProduct.getId()); 
  38.         System. out.println(iqProduct.getTimestamp()); 
  39.         }return object; 
  40.         @RequestMapping(value = "/delObj"
  41.         public boolean delObj(String keyredis) 
  42.         {boolean del = redisService.del(keyredis); 
  43.             return del; 
  44.         } 
  45.         @RequestMapping(value = "/getredis"
  46.         public String getredis(String keyredis){ 
  47.         String getredis = (String) redisService.getKey(keyredis); 
  48.         return "redis的key是===>"+getredis; 
  49.         } 
  50.         @RequestMapping(value = "/delredis"
  51.         public String delredis(String keyredis){ 
  52.         redisService.delKey(keyredis); 
  53.         return "刪除成功,請通過getredis進行查詢"
  54.         } 
  55.         @RequestMapping(value = "/setList"
  56.         public String setList(String keyredis){ 
  57.         List list = new ArrayList();for (int i = 0;i<10;i++){ 
  58.         IqProduct iqProduct = new IqProduct(); 
  59.         iqProduct.setSort(1); 
  60.         iqProduct.setTimestamp(new Date().getTime()); 
  61.         iqProduct.setProductName("productname"); 
  62.         list.add(iqProduct); 
  63.         } 
  64.         redisService.set(keyredis, list); 
  65.         return "保存成功,請訪問getredis查詢redis"
  66.         } 
  67.         @RequestMapping(value = "/getList"
  68.         public Object getList(String keyredis){ 
  69.         Object object = redisService.get(keyredis); 
  70.         if(object !=null){ 
  71.         List<IqProduct> iqProducts = (List<IqProduct>) object; 
  72.         for (int i = 0;i<iqProducts.size();i++){ 
  73.         IqProduct iqProduct = iqProducts.get(i); 
  74.         System. out.println(iqProduct.getProductName()); 
  75.         System. out.println(iqProduct.getId()); 
  76.         System. out.println(iqProduct.getTimestamp()); 
  77.         } 
  78.       }return object; 
  79.     } 
  80.       @RequestMapping(value = "/delList"
  81.       public boolean delList(String keyredis) 
  82.       { 
  83.       boolean del = redisService.del(keyredis);return del; 
  84.         } 

6.測試結(jié)果

責(zé)任編輯:武曉燕 來源: 編程軟文
相關(guān)推薦

2024-05-31 13:29:47

2017-11-01 14:29:38

2014-01-07 09:15:24

云集成云存儲RESTful

2019-07-18 08:00:49

對象存儲IHS Markit

2009-08-18 09:06:41

C#對象和集合

2020-08-25 07:54:50

對象存儲

2020-01-21 19:44:03

云存儲數(shù)據(jù)塊存儲

2018-01-03 08:47:12

集群NAS存儲

2013-12-11 21:44:01

OpenStack對象Swift

2020-04-15 11:40:33

MySQlLServer存儲

2019-08-09 16:14:33

MySQLServer存儲

2020-03-17 23:08:32

數(shù)據(jù)Elasticsear存儲

2021-06-26 07:29:42

RedisHashtable數(shù)據(jù)

2019-11-19 08:04:16

JavaHashSet去重

2018-03-16 09:23:34

塊存儲文件存儲對象存儲

2016-12-05 18:32:08

序列化androidjava

2012-02-01 09:21:23

Hadoop分布式文件系統(tǒng)OpenStack

2013-07-25 14:17:17

2011-12-28 13:30:39

云計算云存儲

2024-12-16 17:02:58

MySQLInnoDB數(shù)據(jù)庫
點贊
收藏

51CTO技術(shù)棧公眾號