• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Redis如何存储对象与集合示例详解

    前言

    大家都知道在项目中,缓存以及mq消息队列可以说是不可或缺的2个重要技术。前者主要是为了减轻数据库压力,大幅度提升性能。后者主要是为了提高用户的体验度,我理解的是再后端做的一个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池中最大对象个数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;i10;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){ 
     ListIqProduct> iqProducts = (ListIqProduct>) object; 
     for (int i = 0;iiqProducts.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存储数据类型及存取值方法
    • redis 存储对象的方法对比分析
    上一篇:Redis获取某个前缀的key脚本实例
    下一篇:Redis瞬时高并发秒杀方案总结
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    Redis如何存储对象与集合示例详解 Redis,如何,存储,对象,与,