翻过redis这座山,面试官将会记住你的名字

作为一个java后端程序员的话,redis的学习是必不可少的。而且redis要学习的东西也不少。比方说redis的五大数据类型,三大特殊数据类型、redis事务中的乐观锁如何实现的,还有jedis的使用、springboot整合Redis、持久化之RDB以及AOF,发布订阅功能,配置主从复制,哨兵模式。还有高频面试题(缓存穿透、击穿、雪崩)等问题。作为一个新玩家(本人),这些知识是绕不过去的大山。就像18年那句话,翻过这座山,面试官将会记住你的名字。 今天就来学习一下最基本的在spingBoot该如何整合redis吧。

redis主要分五种类型:string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。

Spring Data Redis中提供了一个高度封装的类: RedisTemplate,针对jedis客户端中大量api进行了归类封装,将同一类型操作封装为operation接口,具体分类如下:

  • ValueOperations:简单K-V操作
  • SetOperations: set类型数据操作
  • ZSetOperations: zset类型数据操作
  • HashOperations:针对map类型的数据操作
  • ListOperations:针对list类型的数据操作

java连接redis

导入pom 依赖 spring-boot-starter-data-redis

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
复制代码

application.yml

spring:
  #Redis相关配置
  redis:
    host: 192.168.17.110
    port: 6379
    #password: 123456
    database: 0 #操作的是0号数据库
    jedis:
      #Redis连接池配置
      pool:
       #最大连接数
        max-active: 8
        #连接池最大阻塞等待时间
        max-wait: 1ms 
        #连接池中的最大空闲连接
        max-idle: 4 
        #连接池中的最小空闲连接
        min-idle: 0 
复制代码

RedisTemplate配置

/**
 * RedisTemplate 配置
 *
 * @author: liang_zh
 * @since: 2022-12-10 16:57
 */
@Configuration
@EnableCaching
public class RedisConfig {

    /**
     * 定义第三方的Bean
     * 方法设置为公有的,要把哪个对象装配到容器当中,那么就返回这个对象,这边返回的RedisTemplate
     * 用Template访问数据库,Template要有访问数据库的能力,那他就得能够创建连接,连接由连接工厂创建,所以就要把连接工厂
     * 工厂放进来,注入给Template,他才能访问数据库(RedisConnectionFactory factory)就是声明连接工厂
     *
     * @param factory 工厂
     * @return {@link RedisTemplate}<{@link String}, {@link Object}>
     */
    @Bean
    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
        //实例化这个Bean
        RedisTemplate<String, Object> template = new RedisTemplate<>();
        //把工厂设置给Template
        template.setConnectionFactory(factory);
        //配置Template主要配置序列化的方式,因为写的是java程序,得到的是java类型的数据,最终要这个数据存储到数据库里面
        //就要指定一种序列化的方式,或者说数据转换的方式
        //设置key的序列化方式
        template.setKeySerializer(RedisSerializer.string());
        //设置value的序列化方式
        template.setValueSerializer(RedisSerializer.json());
        //设置hash的key的序列化方式
        template.setHashKeySerializer(RedisSerializer.string());
        //设置hash的value的序列化方式
        template.setHashValueSerializer(RedisSerializer.json());
        //使上面参数生效
        template.afterPropertiesSet();
        return template;
    }
}
复制代码

然后可以做一些简单的测试。

 //注入RedisTemplate
    @Resource
    private RedisTemplate<String, String> redisTemplate;
    //注入RedisTemplate
    @Resource
    private RedisTemplate<String, String> redisTemplate;
      @Test
    public void redis() {
        redisTemplate.opsForValue().set("name", "lihua");
        String value = redisTemplate.opsForValue().get("name");
        System.out.println(value);
        redisTemplate.opsForValue().set("key1", "value1", 10L, TimeUnit.SECONDS);
        Boolean aBoolean = redisTemplate.opsForValue().setIfAbsent("name", "lihua");
        System.out.println(aBoolean);
    }
复制代码

=====================学习之境不止========================

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值