Spring与Redis(推荐使用Jedis)

29 篇文章 3 订阅
7 篇文章 0 订阅

连接到Redis

Redis连接工厂会生成到Redis数据库服务器的连接。Spring Data Redis为四种Redis客户端实现提供了连接工厂:
    JedisConnectionFactory

    JredisConnectionFactory

    LettuceConnectionFactory

    SrpConnectionFactory    

如果使用其他连接工厂可以简单的替换如:

所有的Redis连接工厂都具有setHostName()、setPort()和setPassword()方法。这样,它们在配置方面实际上是相同的。

Spring Data Redis提供了两个模板:
1.RedisTemplate

2.StringRedisTemplate

    RedisTemplate可以极大地简化Redis数据访问,能够让我们持久化各种类型的key和value,并不局限于字节数组。在认识到key和value通常是String类型之后,StringRedisTemplate扩展了RedisTemplate,只关注String类型。假设我们已经有了RedisConnectionFactory,那么可以按照如下的方式构建RedisTemplate:

RedisTemplate的很多功能是以子API的形式提供的:


每个子API都提供了使用数据条目的操作,基于value中所包含的是单个值还是一个值的集合它们会有所差别。

由于方法太多我简单的使用set和get方法做演示:(具体请查看官方文档)

@RestController
public class RedisTemplateController {

    @Autowired
    private StringRedisTemplate stringRedisTemplate;

    @Autowired
    private RedisTemplate redisTemplate;

    @RequestMapping("redis/get")
    public String get(){
        stringRedisTemplate.opsForValue().set("zzf","欧哈哟");
        return stringRedisTemplate.opsForValue().get("zzf");
    }

    @RequestMapping("redis/get2")
    public String get2(){
        redisTemplate.opsForValue().set("zzf2","欧哈哟哈哈哈");
        return (String)redisTemplate.opsForValue().get("zzf2");
    }
}

OK~

使用list的话如:

使用set如:

有兴趣的可以去看api文档学习这些方法……不过我个人更喜欢Jedis直观,简单方便……

使用key和value的序列化器

当某个条目保存到Redis key-value存储的时候,key和value都会使用Redis的序列化器(serializer)进行序列化。Spring Data Redis提供了当某个条目保存到Redis key-value存储的时候,key和value都会使用Redis的序列化器(serializer)进行序列化。

Spring Data Redis提供了多个这样的序列化器,包括:

1.GenericToStringSerializer:使用Spring转换服务进行序列化;

2.JacksonJsonRedisSerializer:使用Jackson 1,将对象序列化为JSON;

3.Jackson2JsonRedisSerializer:使用Jackson 2,将对象序列化为JSON;

4.JdkSerializationRedisSerializer:使用Java序列化;

5.OxmSerializer:使用Spring O/X映射的编排器和解排器(marshaler和unmarshaler)实现序列化,用于XML序列化;

6.StringRedisSerializer:序列化String类型的key和value。

假设当使用RedisTemplate的时候,我们希望将Product类型的value序列化为JSON,而key是String类型。RedisTemplate的setKeySerializer()和setValueSerializer()方法就需要如下所示:

下面附上我的SpringBoot集成RedisTemplate的配置步骤:

1.导入jar包,我这里使用的是maven

        <!--spring-data-redis-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
2.配置application.properties
# Redis数据库索引(默认为0)
spring.redis.database=0
# Redis服务器地址
spring.redis.host=127.0.0.1
# Redis服务器连接端口
spring.redis.port=6379
# Redis服务器连接密码(默认为空)
spring.redis.password=123456789
# 连接池最大连接数(使用负值表示没有限制)
#spring.redis.pool.max-active=1000
spring.redis.jedis.pool.max-active=1000
# 连接池最大阻塞等待时间(使用负值表示没有限制)
#spring.redis.jedis.pool.max-wait=-1
# 连接池中的最大空闲连接
spring.redis.jedis.pool.max-idle=10
# 连接池中的最小空闲连接
spring.redis.jedis.pool.min-idle=2
# 连接超时时间(毫秒)
spring.redis.timeout=5000

3.使用

package com.zzf.finals.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class RedisTemplateController {

    @Autowired
    private StringRedisTemplate stringRedisTemplate;

    @Autowired
    private RedisTemplate redisTemplate;

    @RequestMapping("redis/get")
    public String get(){
        stringRedisTemplate.opsForValue().set("zzf","欧哈哟");
        return stringRedisTemplate.opsForValue().get("zzf");
    }

    @RequestMapping("redis/get2")
    public String get2(){
        redisTemplate.opsForValue().set("zzf2","欧哈哟哈哈哈");
        return (String)redisTemplate.opsForValue().get("zzf2");
    }
}


参考《spring实战》






  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值