redis怎么存储对象

redis怎么存储对象

redis是一个key-value存储系统。和memcached类似,它支持存储的value类型相对更多,包括String(字符串)、list(链表)、set(集合)、 zset(sorted set –有序集合)和hash(哈希类型)本文介绍了关于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是===&gt;"+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 iqProducts = (List<iqproduct>) object;   for (int i = 0;i<iqproducts.size><p style="margin-top: 0px; margin-bottom: 0px; padding: 5px 0px; outline: none; line-height: 30px;"><span style="line-height: 25.2px; color: rgb(255, 0, 0);"><strong>6.测试结果</strong></span></p> <p style="margin-top: 0px; margin-bottom: 0px; padding: 5px 0px; outline: none; line-height: 30px; text-align: center;"><img src="https://img.php.cn/upload/image/676/333/709/1561192082614831.jpg" title="1561192082614831.jpg" alt="1959ec2d-ffc4-492b-b8d7-d15083666ddb.jpg"></p> <p><span style="margin: 0px; padding: 0px; color: rgb(61, 70, 77); font-family: " helvetica neue sc tahoma arial sans-serif background-color: rgb><span style="margin: 0px; padding: 0px; color: rgb(61, 70, 77); font-family: " helvetica neue sc tahoma arial sans-serif background-color: rgb></span></span></p> <p><span style="margin: 0px; padding: 0px; color: rgb(61, 70, 77); font-family: " helvetica neue sc tahoma arial sans-serif background-color: rgb><span style="margin: 0px; padding: 0px; color: rgb(61, 70, 77); font-family: " helvetica neue sc tahoma arial sans-serif background-color: rgb><span style="margin: 0px; padding: 0px; color: rgb(61, 70, 77); font-family: " helvetica neue sc tahoma arial sans-serif background-color: rgb>更多Redis相关技术文章,请访问<a href="http://www.php.cn/redis/" target="_self" style="margin: 0px; padding: 0px; color: rgb(146, 208, 80);"><span style="margin: 0px; padding: 0px;">Redis教程</span></a></span><span style="margin: 0px; padding: 0px; color: rgb(61, 70, 77); font-family: " helvetica neue sc tahoma arial sans-serif background-color: rgb>栏目进行学习!</span></span></span></p></iqproducts.size></iqproduct>

© 版权声明
THE END
喜欢就支持一下吧
点赞7 分享