视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
redis怎么存储对象
2020-11-09 06:57:42 责编:小采
文档

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是===>"+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教程栏目进行学习!

下载本文
显示全文
专题