redis怎么存储对象

互联网 19-6-22

redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、 zset(sorted set --有序集合)和hash(哈希类型)本文介绍了关于Redis是如何存储对象与集合的相关资料,需要的朋友可以参考下

前言

这里主要讲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教程栏目进行学习!

以上就是redis怎么存储对象的详细内容,更多内容请关注技术你好其它相关文章!

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
标签: 存储对象
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:使用redis集群应该注意什么

相关资讯