java连接redis

本文介绍了Java连接Redis的三种方式,包括Jedis、Lettuce以及Spring Boot的整合。重点讲述了Spring Boot中使用StringRedisTemplate和RedisTemplate进行操作,并提到了配置依赖和配置文件的修改。此外,还讨论了Redis作为缓存的原理、作用及适用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

默认有三种方式连接redis.

第一种:jedis---传统的项目--ssm

第二种:lettuce:---->刚出现没有多久就被springboot整合进来。

第三种:springboot连接redis

1.jedis

(1)引入依赖

<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>4.3.1</version>
</dependency>

(2)编写相关的代码

public void test01(){
    Jedis jedis = new Jedis("192.168.61.200", 6379);
    Set<String> keys = jedis.keys("*");
    jedis.set("k1","v1");
    jedis.set("k2","v2");
    jedis.setex("k3",60,"v3");
    HashMap<String, String> map = new HashMap<>();
    map.put("name","刘民证");
    map.put("age","38");
    map.put("sex","女");
    jedis.hset("k4",map);
    Map<String, String> k4 = jedis.hgetAll("k4");
    System.out.println(keys);
    System.out.println(k4);
    jedis.close();
}

每次使用jedis对象时 都需要自己创建,当使用完后,需要关闭该对象

2.jedis连接池的使用

public void test02(){
    JedisPoolConfig config = new JedisPoolConfig();//连接池配置
    config.setMaxTotal(10);//总条数
    config.setMaxIdle(10);
    config.setMinIdle(2);//最小空闲连接
    config.setTestOnBorrow(true); //测试连通性

    JedisPool jedisPool = new JedisPool(config,"192.168.61.200",6379);//连接池
    Jedis jedis = jedisPool.getResource();//获取链接

    jedis.flushDB();//清库
    jedis.set("k1","v1");
    String k1 = jedis.get("k1");
    System.out.println(k1);

    jedis.close();//归还连接
}

3.springboot整合redis

springboot在整合redis时提高两个模板类,StringRedisTemplate和RedisTemplate.以后对redis的操作都在该模板类中。StringRedisTemplate是RedisTemplate的子类。

(1)引入依赖

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

(2)修改配置文件

使用StringRedisTemplate(数据类型都是String)

使用RedisTemplate

它是StringRedisTemplate的父类,它类可以存储任意数据类型,但是任意类型必须序列化,默认采用的是jdk的序列化方式。jdk序列化方式阅读能力差,而且占用空间大. 我们在使用是一般需要人为指定序列化方式。

 如果每次使用都人为指定序列化方式,统一设置redisTemplate的序列化

@Bean //该方法的返回对象交于spring容器管理
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
    RedisTemplate<String, Object> template = new RedisTemplate<>();
    RedisSerializer<String> redisSerializer = new StringRedisSerializer();
    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);
    template.setConnectionFactory(factory);
    //key序列化方式
    template.setKeySerializer(redisSerializer);
    //value序列化
    template.setValueSerializer(jackson2JsonRedisSerializer);
    //key hashmap序列化
    template.setHashKeySerializer(jackson2JsonRedisSerializer);
    //value hashmap序列化
    template.setHashValueSerializer(jackson2JsonRedisSerializer);
    return template;
}

上面的连接都是连接的单机版的redis,真实项目它们的redis都是集群模式

 

redis的应用场景

redis可以作为缓存

(1) 缓存的原理

 

(2)缓存的作用:

 减少访问数据库的频率。--提高系统的性能。

(3)什么样的数据适合放入缓存

1.查询频率高的
2.修改频率低的
3.数据安全性要求低的。

 (4)如何使用缓存

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值