当前位置:首页 >知识 >Redis是如何存储对象和集合的

Redis是如何存储对象和集合的

2024-06-28 10:16:00 [百科] 来源:避面尹邢网

Redis是何和集合如何存储对象和集合的

作者:sunjian 存储 存储软件 Redis 在项目中,缓存以及mq消息队列可以说是不可或缺的2个重要技术。前者主要是存储为了减轻数据库压力,大幅度提升性能。对象后者主要是何和集合为了提高用户的体验度,我理解的存储是再后端做的一个ajax请求(异步),并且像ribbmitmq等消息队列有重试机制等功能。

在项目中,对象缓存以及mq消息队列可以说是何和集合不可或缺的2个重要技术。前者主要是存储为了减轻数据库压力,大幅度提升性能。对象后者主要是何和集合为了提高用户的体验度,我理解的存储是再后端做的一个ajax请求(异步),并且像ribbmitmq等消息队列有重试机制等功能。对象

这里主要讲redis如何把对象,何和集合集合存入,存储并且取出。对象

Redis是如何存储对象和集合的

[[227948]]

Redis是如何存储对象和集合的

1.在启动类上加入如下代码

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(); 
  2. config.setMaxIdle(1000);//最大空闲时间config.setMaxWaitMillis(1000); //最大等待时间config.setMaxTotal(500); //redis池中最大对象个数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 #连接池最大连接数(使用负值表示没有限制) 
  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. {  
  7.      public static byte[] serialize(Object object) {  
  8.         ObjectOutputStream oos = null; 
  9.         ByteArrayOutputStream baos = null; 
  10.         try { // 序列化baos = new ByteArrayOutputStream(); 
  11.             oos = new ObjectOutputStream(baos); 
  12.             oos.writeObject(object); 
  13.             byte[] bytes = baos.toByteArray(); 
  14.             return bytes; 
  15.             } catch (Exception e) {  
  16.  
  17.             }return null; 
  18.         } 
  19.   public static Object unserialize( byte[] bytes) {  
  20.         ByteArrayInputStream bais = null; 
  21.         try {  
  22.         // 反序列化bais = new ByteArrayInputStream(bytes); 
  23.         ObjectInputStream ois = new ObjectInputStream(bais); 
  24.         return ois.readObject(); 
  25.             } catch (Exception e) {  
  26.  
  27.             }return null; 
  28.         } 
  29.      } 

4.我封装了一个RedisServiceImpl类,主要是用对redis设值和取值

  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(key, time, 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.测试结果

责任编辑:武晓燕 来源: 编程软文 Redis存储对象

(责任编辑:热点)

    推荐文章
    热点阅读