Redis如何存储对象与集合示例详解
发表于:2025-02-05 作者:千家信息网编辑
千家信息网最后更新 2025年02月05日,前言大家都知道在项目中,缓存以及mq消息队列可以说是不可或缺的2个重要技术。前者主要是为了减轻数据库压力,大幅度提升性能。后者主要是为了提高用户的体验度,我理解的是再后端做的一个ajax请求(异步),
千家信息网最后更新 2025年02月05日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){ ListiqProducts = (List ) object; for (int i = 0;i 6.测试结果
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对的支持。
最大
时间
成功
查询
对象
序列
空闲
内容
消息
负值
队列
学习
测试
限制
最小
重要
不可或缺
个数
代码
价值
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
问道手游服务器
数据库账号密码存放位置
临汾中小学网络安全公益讲座
山东微信小程序软件开发企业
服务器安全审计策略
有口碑的网络技术品质保障
黄岛区微信公众号软件开发系统
网络安全徐国爱文字版pdf
键值数据库怎样存储数据
txt怎么保存到数据库
岳阳软件开发电话
邯郸电脑软件开发机构
美国现在有多少软件开发人才
自建直播服务器
济南直播软件开发报价
数据库主键 英语
vb制作数据库难吗
网络安全意识漫谈之一
江西采购管理软件开发平台
架构云服务器
php怎么向数据库输入内容
CEMS软件开发
有哪些开放的医学样本数据库
服务器管理网口接线
大埔服务器
浪潮服务器 更改管理口
网络安全周 技术交流
网络安全专题片第五空间第四集
配置邮件服务器安全访问策略
护航冬奥网络安全在行动工作总结