精华内容
下载资源
问答
  • SpringbootRedis

    2018-06-15 17:50:56
    springboot整合redis,并且封装好的一套api,下载配置好即可使用
  • 文章目录一、介绍pom依赖yml配置文件二、用法 一、介绍 SpringDataRedis。 它底层封装了Jedis,JRedis等常用api。 pom依赖 <dependency> <groupId>org.springframework.boot<...yml配置

    一、介绍

    SpringDataRedis。 它底层封装了Jedis,JRedis等常用api。

    pom依赖

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-redis</artifactId>
    </dependency>
    

    yml配置文件

    spring: 
    	redis:
      		host: 192.168.87.128
    

    二、用法

    在业务层直接注入RedisTemplate

    @Autowired
        RedisTemplate redisTemplate;
    
    public Article findById(String id) {
            //先从缓存中查询当前对象
            Article article = (Article) redisTemplate.opsForValue().get("article:" + id);
            System.out.println(article);
            //如果没有取到
            if (article == null) {
                //从数据库中查询
                article = repository.findById(id).get();
                redisTemplate.opsForValue().set("article:" + id, article,60*3, TimeUnit.SECONDS);
            }
            return article;
        }
    

    在这里插入图片描述
    String类型常用的方法:
    在这里插入图片描述

    展开全文
  • springbootredis.zip

    2019-12-01 21:18:43
    springboot-redis整合.
  • java开发wechat公众号,使用springboot,redis,接入聚合聊天机器人实现智能对话
  • springbootRedis-okend-源码

    2021-04-09 15:19:34
    平台简介 支撑服务管理台
  • springBootRedis-master

    2020-04-08 11:07:07
    RedisConfig package com.config; import com.fasterxml.jackson.annotation.JsonAutoDetect; import com.fasterxml.jackson.annotation.PropertyAccessor; import ... ...

    在这里插入图片描述

    RedisConfig

    package com.config;
    
    import com.fasterxml.jackson.annotation.JsonAutoDetect;
    import com.fasterxml.jackson.annotation.PropertyAccessor;
    import com.fasterxml.jackson.databind.ObjectMapper;
    import org.springframework.cache.CacheManager;
    import org.springframework.cache.annotation.CachingConfigurerSupport;
    import org.springframework.cache.annotation.EnableCaching;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.data.redis.cache.RedisCacheManager;
    import org.springframework.data.redis.connection.RedisConnectionFactory;
    import org.springframework.data.redis.core.*;
    import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
    import org.springframework.data.redis.serializer.StringRedisSerializer;
    
    /**
     * @author janti
     * reids 相关bean的配置
     */
    @Configuration
    @EnableCaching
    public class RedisConfig extends CachingConfigurerSupport {
    
        /**
         * 选择redis作为默认缓存工具
         * @param redisTemplate
         * @return
         */
        @Bean
        public CacheManager cacheManager(RedisTemplate redisTemplate) {
            RedisCacheManager rcm = new RedisCacheManager(redisTemplate);
            return rcm;
        }
    
        /**
         * retemplate相关配置
         * @param factory
         * @return
         */
        @Bean
        public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
    
            RedisTemplate<String, Object> template = new RedisTemplate<>();
            // 配置连接工厂
            template.setConnectionFactory(factory);
    
            //使用Jackson2JsonRedisSerializer来序列化和反序列化redis的value值(默认使用JDK的序列化方式)
            Jackson2JsonRedisSerializer jacksonSeial = new Jackson2JsonRedisSerializer(Object.class);
    
            ObjectMapper om = new ObjectMapper();
            // 指定要序列化的域,field,get和set,以及修饰符范围,ANY是都有包括private和public
            om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
            // 指定序列化输入的类型,类必须是非final修饰的,final修饰的类,比如String,Integer等会跑出异常
            om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
            jacksonSeial.setObjectMapper(om);
    
            // 值采用json序列化
            template.setValueSerializer(jacksonSeial);
            //使用StringRedisSerializer来序列化和反序列化redis的key值
            template.setKeySerializer(new StringRedisSerializer());
    
            // 设置hash key 和value序列化模式
            template.setHashKeySerializer(new StringRedisSerializer());
            template.setHashValueSerializer(jacksonSeial);
            template.afterPropertiesSet();
    
            return template;
        }
    
        /**
         * 对hash类型的数据操作
         *
         * @param redisTemplate
         * @return
         */
        @Bean
        public HashOperations<String, String, Object> hashOperations(RedisTemplate<String, Object> redisTemplate) {
            return redisTemplate.opsForHash();
        }
    
        /**
         * 对redis字符串类型数据操作
         *
         * @param redisTemplate
         * @return
         */
        @Bean
        public ValueOperations<String, Object> valueOperations(RedisTemplate<String, Object> redisTemplate) {
            return redisTemplate.opsForValue();
        }
    
        /**
         * 对链表类型的数据操作
         *
         * @param redisTemplate
         * @return
         */
        @Bean
        public ListOperations<String, Object> listOperations(RedisTemplate<String, Object> redisTemplate) {
            return redisTemplate.opsForList();
        }
    
        /**
         * 对无序集合类型的数据操作
         *
         * @param redisTemplate
         * @return
         */
        @Bean
        public SetOperations<String, Object> setOperations(RedisTemplate<String, Object> redisTemplate) {
            return redisTemplate.opsForSet();
        }
        /**
         * 对有序集合类型的数据操作
         *
         * @param redisTemplate
         * @return
         */
        @Bean
        public ZSetOperations<String, Object> zSetOperations(RedisTemplate<String, Object> redisTemplate) {
            return redisTemplate.opsForZSet();
        }
    }
    

    RedisService

    package com.service;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.data.redis.core.RedisTemplate;
    import org.springframework.stereotype.Component;
    
    import java.util.Collection;
    import java.util.Date;
    import java.util.Set;
    import java.util.concurrent.TimeUnit;
    import java.util.stream.Collectors;
    import java.util.stream.Stream;
    
    @Component
    public class RedisService {
        @Autowired
        private RedisTemplate<String, String> redisTemplate;
    
        /**
         * 默认过期时长,单位:秒
         */
        public static final long DEFAULT_EXPIRE = 60 * 60 * 24;
    
        /**
         * 不设置过期时长
         */
        public static final long NOT_EXPIRE = -1;
    
    
    
    
        public boolean existsKey(String key) {
            return redisTemplate.hasKey(key);
        }
    
        /**
         * 重名名key,如果newKey已经存在,则newKey的原值被覆盖
         *
         * @param oldKey
         * @param newKey
         */
        public void renameKey(String oldKey, String newKey) {
            redisTemplate.rename(oldKey, newKey);
        }
    
        /**
         * newKey不存在时才重命名
         *
         * @param oldKey
         * @param newKey
         * @return 修改成功返回true
         */
        public boolean renameKeyNotExist(String oldKey, String newKey) {
            return redisTemplate.renameIfAbsent(oldKey, newKey);
        }
    
        /**
         * 删除key
         *
         * @param key
         */
        public void deleteKey(String key) {
            redisTemplate.delete(key);
        }
    
        /**
         * 删除多个key
         *
         * @param keys
         */
        public void deleteKey(String... keys) {
            Set<String> kSet = Stream.of(keys).map(k -> k).collect(Collectors.toSet());
            redisTemplate.delete(kSet);
        }
    
        /**
         * 删除Key的集合
         *
         * @param keys
         */
        public void deleteKey(Collection<String> keys) {
            Set<String> kSet = keys.stream().map(k -> k).collect(Collectors.toSet());
            redisTemplate.delete(kSet);
        }
    
        /**
         * 设置key的生命周期
         *
         * @param key
         * @param time
         * @param timeUnit
         */
        public void expireKey(String key, long time, TimeUnit timeUnit) {
            redisTemplate.expire(key, time, timeUnit);
        }
    
        /**
         * 指定key在指定的日期过期
         *
         * @param key
         * @param date
         */
        public void expireKeyAt(String key, Date date) {
            redisTemplate.expireAt(key, date);
        }
        /**
         * 查询key的生命周期
         *
         * @param key
         * @param timeUnit
         * @return
         */
        public long getKeyExpire(String key, TimeUnit timeUnit) {
            return redisTemplate.getExpire(key, timeUnit);
        }
        /**
         * 将key设置为永久有效
         *
         * @param key
         */
        public void persistKey(String key) {
            redisTemplate.persist(key);
        }
    }
    

    RedisKeyUtil

    package com.util;
    
    /**
     * redisKey设计
     */
    public class RedisKeyUtil {
    
        /**
         * redis的key
         * 形式为:
         * 表名:主键名:主键值:列名
         *
         * @param tableName 表名
         * @param majorKey 主键名
         * @param majorKeyValue 主键值
         * @param column 列名
         * @return
         */
        public static String getKeyWithColumn(String tableName,String majorKey,String majorKeyValue,String column){
            StringBuffer buffer = new StringBuffer();
            buffer.append(tableName).append(":");
            buffer.append(majorKey).append(":");
            buffer.append(majorKeyValue).append(":");
            buffer.append(column);
            return buffer.toString();
        }
        /**
         * redis的key
         * 形式为:
         * 表名:主键名:主键值
         *
         * @param tableName 表名
         * @param majorKey 主键名
         * @param majorKeyValue 主键值
         * @return
         */
        public static String getKey(String tableName,String majorKey,String majorKeyValue){
            StringBuffer buffer = new StringBuffer();
            buffer.append(tableName).append(":");
            buffer.append(majorKey).append(":");
            buffer.append(majorKeyValue).append(":");
            return buffer.toString();
        }
    }
    

    StartApplication

    @SpringBootApplication
    public class StartApplication {
        public static void main(String[] args) {
            SpringApplication.run(StartApplication.class, args);
        }
    }
    
    展开全文
  • 前言 为什么互联网资讯这么发达,但是没有出现技术人才井喷? 为什么会出现应届生薪资倒挂多年老员工的现象? 这个世界有太多的现象都可以用**“二八定律”**来解释。 20%拿着高工资,80%每天挣扎在增删改查边缘。...

    前言

    为什么互联网资讯这么发达,但是没有出现技术人才井喷

    为什么会出现应届生薪资倒挂多年老员工的现象?

    这个世界有太多的现象都可以用**“二八定律”**来解释。

    20%拿着高工资,80%每天挣扎在增删改查边缘。

    职场一分钱一分货

    人家拿高薪,不是全靠运气

    工作年限越久,不代表越值钱

    一年经验用了五年,无法改变

    因为经历不等于经验

    加班“重灾区”的互联网行业以996闻名,每天超过11小时的工作时长每年位居各行业之首。

    工作内容重复,加班导致学习时间不够,无法跟上技术更新脚本。

    如何花最少时间学习最多知识,迫在眉睫!

    如何打破程序员提升的三大屏障,成为符合互联网行业的JAVA高级工程师。

    第1大技能:程序设计和开发

    1. 数据结构和算法:常用数据结构,排序,检索等

    2. 面向对象编程、设计模式,掌握建模语言和建模工具:UML、MVC编程思想

    3. 高质量编码能力:重用性,低耦合,可扩展性,高性能,可维护性,安全性高

    4. 集成开发,版本控制,构建等工具:eclipse, svn, maven 等

    5. 脚本语言:Perl,PHP, Ruby, Python, Groovy等

    image

    第2大技能:Java开发

    1. Java语言基础:异常处理,泛型,reflection,annotation; Java基本类库:io, util

    2. Java高级特性和类库:class loader,bytecode,nio, juc 等

    3. Java多线程编程

    4. Java网络与服务器编程, TCP/IP协议

    5. 开源产品和技术

    6. JVM原理和调优

    image.png

    第3大技能:Web开发

    1. DNS,HTTP, Cookie, Mail,FTP, Proxy等协议

    2. Java Servlet API, Velocity/JSP等模板引擎

    3. 主流Web开发框架:Spring Framework,WebX,Struts等

    4. Web服务器部署和配置:Apache,Tomcat,JBoss,Jetty等

    5. 客户端代码编写:HTML/CSS/JS

    6. Web开发调试工具:Firebug等

    image

    第4大技能:数据库开发

    1. 数据库设计原则

    2. 数据库SQL和NOSQL的选型

    3. 常见的:mysql和oracle的掌握

    4. 常用的nosql的掌握:Redis、Memchache、MongoDb。

    5. 常见的数据库性能优化方案等

    image

    第5大技能:java开发框架与工具

    1. 常用的开发系统:spring、redis、memcached、activeMQ等的掌握

    2. 常用的web服务器:tomcat 、jboss等

    3. 构建工具:maven等

    image

    第6大技能:分布式架构设计与经验

    1. 分层的应用框架设计思想:SOA,事件驱动等

    2. 分布式系统原理:CAP,最终一致性,幂等操作等

    3. 大型网络应用结构:消息中间件,缓存,负载均衡,集群技术,数据同步

    4. 高可用,可容灾分布式系统设计能力

    5. 大容量数据存储和检索系统设计能力:数据库分区,NoSQL,搜索引擎等

    image

    以上就是阿里P8架构师的技能,以上技能的要求重点都是精通,如果你还没有准备好学习,小编也针对不同阶段的学习,整理收集了相对应你学习的笔记pdf!(可免费分享)

    0-1年:夯实基础

    1.Java基础(Java异常分类及处理+Java反射+Java注解+Java内部类+Java泛型+Java序列化+Java复制)

    image

    2.并发编程(线程池+生命周期+锁+阻塞队列+CAS等)

    image

    3.JVM基础(线程+JVM内存区域+JVM运行时内存+垃圾回收与算法+GC+IO/NIO+类加载)

    image

    4.设计模式(23种设计模式)

    image

    5.SQL基础与优化

    image.png

    6.HTTP/TCP协议

    image

    7.算法与数据结构

    • Java算法(二分查找+排序算法+回溯算法等)

    • 一致性算法(Paxos+Zab+Raft+NWR+Gossip+一致性Hash)

    • 数据结构(栈+队列+链表+散列表+排序二叉树+红黑树+B树+位图)

    image

    8.Redis

    image

    1-3年:合格的程序员

    1.JVM基础调优

    image

    2.常见框架源码(Spring+SpringMVC+Mybatis)

    image

    3.消息中间件(MQ+Kafka)

    image

    4.微服务

    image

    5.Netty

    image

    4-5年:提升技术广度与深度

    1.性能调优

    image

    2.微服务

    image

    3.分布式场景问题

    image

    4.项目实战

    • 高仿小米商城项目

    image

    • Alibaba订单管理系统项目

    image

    • API监控系统

    image

    当然除了以上的必备技能,最重要的就是面试了,以下是总结出来最全架构师题目,包含:Java基础-中级-高级、开源框架、性能调优、微服务、分布式架构、数据库、高并发、数据结构与算法、网络等。

    第一部分:Java基础-中级-高级

    image

    第二部分:开源框架(SSM:Spring+SpringMVC+MyBatis)

    image

    第三部分:性能调优(JVM+MySQL+Tomcat)

    image

    第四部分:分布式(限流:ZK+Nginx;缓存:Redis+MongoDB+Memcached;通讯:MQ+kafka)

    image

    第五部分:微服务(SpringBoot+SpringCloud+Dubbo)

    image

    第六部分:其他:并发编程+设计模式+数据结构与算法+网络

    image

    言尽于此,完结

    无论是一个初级的 coder,高级的程序员,还是顶级的系统架构师,应该都有深刻的领会到设计模式的重要性。

    • 第一,设计模式能让专业人之间交流方便,如下:

    程序员A:这里我用了XXX设计模式

    程序员B:那我大致了解你程序的设计思路了

    • 第二,易维护

    项目经理:今天客户有这样一个需求…

    程序员:明白了,这里我使用了XXX设计模式,所以改起来很快

    • 第三,设计模式是编程经验的总结

    程序员A:B,你怎么想到要这样去构建你的代码

    程序员B:在我学习了XXX设计模式之后,好像自然而然就感觉这样写能避免一些问题

    • 第四,学习设计模式并不是必须的

    程序员A:B,你这段代码使用的是XXX设计模式对吗?

    程序员B:不好意思,我没有学习过设计模式,但是我的经验告诉我是这样写的

    image

    从设计思想解读开源框架,一步一步到Spring、Spring5、SpringMVC、MyBatis等源码解读,我都已收集整理全套,篇幅有限,这块只是详细的解说了23种设计模式,整理的文件如下图一览无余!

    资料领取方式:点击这里下载

    image

    验告诉我是这样写的

    [外链图片转存中…(img-cwXlw5mh-1621586945604)]

    从设计思想解读开源框架,一步一步到Spring、Spring5、SpringMVC、MyBatis等源码解读,我都已收集整理全套,篇幅有限,这块只是详细的解说了23种设计模式,整理的文件如下图一览无余!

    资料领取方式:点击这里下载

    [外链图片转存中…(img-lDfCtMRp-1621586945604)]

    搜集费时费力,能看到此处的都是真爱!

    展开全文
  • SpringBoot中默认提供了StringRedisTemplate,有些场景我们需要存储的不仅仅是String类型,这时我们就需要自己构造一个RedisTemplate。 import org.springframework.boot.autoconfigure.condition....

    SpringBoot中默认提供了StringRedisTemplate,有些场景我们需要存储的不仅仅是String类型,这时我们就需要自己构造一个RedisTemplate。

    import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
    import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
    import org.springframework.boot.autoconfigure.data.redis.RedisProperties;
    import org.springframework.boot.context.properties.EnableConfigurationProperties;
    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.RedisOperations;
    import org.springframework.data.redis.core.RedisTemplate;
    import org.springframework.data.redis.core.StringRedisTemplate;
    import org.springframework.data.redis.serializer.StringRedisSerializer;
    
    @Configuration
    @ConditionalOnClass(RedisOperations.class)
    @EnableConfigurationProperties(RedisProperties.class)
    public class RedisAutoConfiguration {
    
        /**
         * 构造RedisTemplate<String,Object></String,Object>
         *
         * @param redisConnectionFactory
         * @return
         */
        @Bean
        @ConditionalOnMissingBean(name = "redisTemplate")
        public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
            RedisTemplate<String, Object> template = new RedisTemplate<>();
            // 设置连接池
            template.setConnectionFactory(redisConnectionFactory);
            // 设置Key的序列化方式为字符串
            template.setKeySerializer(new StringRedisSerializer());
            // 设置hash结构的key序列化方式为字符串
            template.setHashKeySerializer(new StringRedisSerializer());
            // 设置hash结构的value序列化方式为字符串
            template.setHashValueSerializer(new StringRedisSerializer());
            // 还可以设置很多...
            return template;
        }
    
        /**
         * StringRedisTemplate默认就有的,可以在这改变下StringRedisTemplate默认的配置
         *
         * @param redisConnectionFactory
         * @return
         */
        @Bean
        @ConditionalOnMissingBean
        public StringRedisTemplate stringRedisTemplate(RedisConnectionFactory redisConnectionFactory) {
            StringRedisTemplate template = new StringRedisTemplate();
            template.setConnectionFactory(redisConnectionFactory);
            return template;
        }
    }
    

    使用方式

    /**
    * 注入自定义的RedisTemplate
    * 注意:泛型的类型一定要一致,否则会注入失败
    */
    @Autowired
    private RedisTemplate<String,Object> redisTemplate;
    
    展开全文
  • 主要介绍了springboot+redis过期事件监听实现过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • 尚硅谷SpringBoot整合篇

    2018-05-11 21:49:18
    本视频《SpringBoot高级》属于下部,着重介绍SpringBoot的与各大场景的整合使用,内容包括:缓存(整合Redis),消息中间件(整合RabbitMQ),检索(整合ElasticSearch),任务(异步任务,定时任务,邮件任务),...
  • 具有相当的灵活性和扩展性 4.4.2 定义接口 UserService.java 代码清单:spring-boot-redis/src/main/java/com/springboot/springbootredis/service/UserService.java public interface UserService { User save...
  • 主要介绍了详解SpringBoot Redis自适应配置(Cluster Standalone Sentinel),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • springboot+Redis 缓存实现,内含idea项目、sql文件等,如若使用需要更改数据库目录,postman测试即可
  • 本项目代码包括,最基本的SpringBoot2.0,+Swagger-ui,以及redis的测试类,redis各种类型数据存储的工具类以及测试的sql文件
  • 主要介绍了spring boot+redis 监听过期Key,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
  • springBoot整合Redis,包括整合单机版Redis、redis-cluster集群、redis哨兵三种模式
  • Springboot整合Redis集群,零配置方式;另外用AOP实现了操作缓存的三套自定义注解,有兴趣的小伙伴可以试试看.
  • springboot redis

    2019-10-16 16:55:42
    Redis Redise基础教程 Spring boot 集成Redis 关于spring-redis spring-data-redis针对jedis提供了如下功能: 1.连接池自动管理,提供了一个高度封装的“RedisTemplate”类 2.针对jedis客户端中大量api进行了归类...
  • 引入依赖: &lt;dependencies&gt; &lt;dependency&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt; &lt;artifactId&gt;spring-boot-starter-data...g
  • SpringBoot系列之集成Redis实现缓存处理

    万次阅读 多人点赞 2017-12-14 11:30:07
    第一章 需求分析计划在Team的开源项目里加入Redis实现缓存处理,因为业务功能已经实现了一部分,通过写Redis工具类,然后引用,改动量较大,而且不可以实现解耦合,所以想到了Spring框架的AOP(面向切面编程)。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 716
精华内容 286
关键字:

springbootredis

redis 订阅
spring 订阅