34。springboot使用redis
redis也是我们经常会用到的框架,比如我们的商城,在用户点击购买到订单预览就需要,因为点击购买到订单预览就是一会的事情,这操作没有必要存数据库,太浪费。
redis最适合在数据量少、临时数据的场景使用。
pom.xml引入包 org.springframework.boot spring-boot-starter-data-redis
application.yml配置 redis: database: 0 # Redis服务器地址 写你的ip host: 0.0.0.0 # Redis服务器连接端口 port: 6379 # Redis服务器连接密码(默认为空) password: # 连接池最大连接数(使用负值表示没有限制 类似于mysql的连接池 jedis: pool: max-active: 200 # 连接池最大阻塞等待时间(使用负值表示没有限制) 表示连接池的链接拿完了 现在去申请需要等待的时间 max-wait: -1 # 连接池中的最大空闲连接 max-idle: 10 # 连接池中的最小空闲连接 min-idle: 0 # 连接超时时间(毫秒) 去链接redis服务端 timeout: 6000
RedisConfigpackage com.haiyeren.config; import com.fasterxml.jackson.annotation.JsonAutoDetect; import com.fasterxml.jackson.annotation.PropertyAccessor; import com.fasterxml.jackson.databind.ObjectMapper; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer; import org.springframework.data.redis.serializer.StringRedisSerializer; @Configuration public class RedisConfig { @Bean public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory){ RedisTemplate redisTemplate = new RedisTemplate<>(); //设置工厂链接 redisTemplate.setConnectionFactory(redisConnectionFactory); //设置自定义序列化方式 setSerializeConfig(redisTemplate, redisConnectionFactory); return redisTemplate; } private void setSerializeConfig(RedisTemplate redisTemplate, RedisConnectionFactory redisConnectionFactory) { //对字符串采取普通的序列化方式 适用于key 因为我们一般采取简单字符串作为key StringRedisSerializer stringRedisSerializer = new StringRedisSerializer(); //普通的string类型的key采用 普通序列化方式 redisTemplate.setKeySerializer(stringRedisSerializer); //普通hash类型的key也使用 普通序列化方式 redisTemplate.setHashKeySerializer(stringRedisSerializer); //解决查询缓存转换异常的问题 大家不能理解就直接用就可以了 这是springboot自带的jackson序列化类,但是会有一定问题 Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class); ObjectMapper om = new ObjectMapper(); om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); jackson2JsonRedisSerializer.setObjectMapper(om); //普通的值采用jackson方式自动序列化 redisTemplate.setValueSerializer(jackson2JsonRedisSerializer); //hash类型的值也采用jackson方式序列化 redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer); //属性设置完成afterPropertiesSet就会被调用,可以对设置不成功的做一些默认处理 redisTemplate.afterPropertiesSet(); } }
RedisUtilspackage com.haiyeren.common; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Component; import org.springframework.util.CollectionUtils; import javax.annotation.Resource; import java.util.*; import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; @Component public class RedisUtils { @Autowired private RedisTemplate redisTemplate; /** * @param key * @return 获得值 * redis有五种数据类型 opsForValue表示是操作字符串类型 */ public Object get(String key){ // RedisTemplate redisTemplate=new RedisTemplate<>(); return key == null ? null : redisTemplate.opsForValue().get(key); } //本来只可以放入string类型,但是我们配置了自动序列化所以这儿可以传入object public boolean set(String key,Object value){ // RedisTemplate redisTemplate=new RedisTemplate<>(); redisTemplate.opsForValue().set(key,value); return true; } /** * * @param keys 删除key 可变参数 */ public void del(String ...keys){ // RedisTemplate redisTemplate=new RedisTemplate<>(); if(keys!=null&&keys.length>0) { redisTemplate.delete((Collection) CollectionUtils.arrayToList(keys)); } } }
使用: @Autowired public RedisUtils redisUtils;
存: redisUtils.set(userEntity.getId()+RedisPool.GOODS_BUY_KEY,buys);
获取: Object redisBuy = redisUtils.get(RedisPool.GOODS_BUY_KEY);
影像体验解读OPPOReno6超大杯会是你的Vlog之机么?在手机影像系统越来越发达的今天,不少人都会用自己的手机记录下生活中的瞬间。不过,有些人却因为不会化妆,而没有胆量站在镜头前。随着科技的进步,我们也有了很多现代的科技手段能够解决这一
程序员2021。8。160黑客称盗窃只是为了好玩退还39亿的加密货币,对钱不感兴趣攻陷PolyNetwork加密货币平台的黑客表示,盗窃只是为了好玩)该黑客现退还盗取的加密货币。黑客还声称,这些货币已转移
跨境电商还有出路吗?上周末收到深圳客户(一个专做亚马逊的跨境电商)通知,原来准备计划生产的一批货暂时不需要了,等他们的进一步通知。我其实早就预料到了,这事情早晚有一天会发生。今年五月份以来,亚马逊开始
集齐了淘宝京东拼多多,国美折上折APP要干啥?七夕期间,南方记者从广州国美获悉,国美近期推出折上折APP。国美折上折平台CEO张金鹏表示,国美折上折APP作为一个提供海量折上折券的优惠券门户,与其他购物平台和返利平台最大的不同
干掉XMLMapper,新出的FluentMybatis真香使用fluentmybatis可以不用写具体的xml文件,通过javaapi可以构造出比较复杂的业务sql语句,做到代码逻辑和sql逻辑的合一。不再需要在Dao中组装查询或更新操作
iPhonese2使用一个月的感受苹果se第二代这款手机在发布之前很多人都抱着一种期待去看待这款手机,但是在发布后这酷似苹果8的造型让很多人选择了放弃。屏下摄像头都有了在这个全面屏的时代宽大的下巴并不是很招人喜爱反
Ruff迷你网关搭载SaaS实现零代码配置,独创智能屏显2021年二季度,Ruff南潮物联通用无线数传场景的小网关RGWi0600开始实现量产,从前期研发到落地商用,仅用时3个月时间。同时,可以云端远程配置的RuffIoT设备管理平台1
谁在为自动驾驶隐患买单?撰文郑文编辑匡吉旧世界正在崩塌,新世界仍未成型。在我们身后,过去那个光怪陆离的世界已经逐渐闭合,而在我们面前,新世界的大门仓促打开,人们懵懂而又按图索骥地生活着,需要不断地重返旧世
诺基亚63008000系统更新,支持支付宝支付8月17日消息,诺基亚手机今天宣布,Nokia63004G和Nokia80004G已支持支付宝扫码支付功能,系统更新后就能使用。根据诺基亚官方的介绍,诺基亚80004G和诺基亚63
国内手机厂商的命名能改改了国内手机厂商的命名,总体给人感觉有几个特点随意跟风定位不清晰。(说明以下几个厂商只是举个栗子,不黑)随意华为Mate1Mate2Mate7Mate10Mate20Mate50Mat
饿了么与美团有什么不同关于外卖的两大巨头美团和饿了么相信大家都不是很陌生,到他们到底有什么不同估计还是有很多朋友不是很清楚,下面就为大家介绍一下,先说下饿了么,饿了么单量相比美团要少很多,但人也少很多,