zoukankan      html  css  js  c++  java
  • Redis如何存储对象与集合示例详解

     

     

    前言

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

    这里主要讲redis/303688.html">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池中最大对象个数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 #连接池最大连接数(使用负值表示没有限制) 
     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.测试结果

    redis,存储对象集合,存储对象,redis如何存储对象

    总结

    以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对ASPKU源码库的支持。

  • 相关阅读:
    Win8常用快捷键
    清除远程桌面连接记录
    通过注册表改变“我的文档”等的默认位置,防止系统重装造成数据丢失
    HTML 转义字符对照表
    r语言 函数
    sparkr——报错
    R语言--saprkR基本使用
    r绘图基本
    R绘制中国地图,并展示流行病学数据
    r画饼图
  • 原文地址:https://www.cnblogs.com/pejsidney/p/9210327.html
Copyright © 2011-2022 走看看