[redis]spring整合redis

两种:spring整合redis,springboot整合redis

spring整合redis:

1、环境及jar包:

  • 环境:jdk1.6;spring+springmvc+ibatis+maven;redis3.2;

  • pom.xml:

    <dependency>
    	<groupId>org.springframework.data</groupId>
    	<artifactId>spring-data-redis</artifactId>
    	<version>1.7.1.RELEASE</version>
    </dependency>
    <dependency>
    	<groupId>redis.clients</groupId>
    	<artifactId>jedis</artifactId>
    	<version>2.8.1</version>
    </dependency>
    

    不使用maven可以自行下载jar包,复制到项目中:jar下载1jar下载2

2、编写redis配置文件:

#redis配置
spring.redis.host=使用的redis主机地址,本地redis即127.0.0.1
spring.redis.port=redis服务的端口,默认为6379
spring.redis.password=redis服务密码
spring.redis.timeout=redis客户端超过该空闲时间会断开

更多详细配置参考:https://www.cnblogs.com/metu/p/9609604.html
文件名可任取,后缀为properties

3、spring容器中注入redis:

  • 在spring的配置xml中引入redis配置文件:
    <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="locations">
            <list>
                <value>classpath:redis.properties</value>
            </list>
        </property>
    </bean>
    
    在这里插入图片描述
  • 配置jedis连接池(可不配,使用默认):
     <bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
    	<!-- <property name="maxIdle" value="${spring.redis.jedis.pool.max-idle}" />
    	<property name="maxTotal" value="${redis.maxTotal}" /> 
    	<property name="maxWaitMillis" value="${redis.maxWaitMillis}" /> 
    	<property name="testOnBorrow" value="${redis.testOnBorrow}" /> -->
    </bean> 
    
  • 配置jedis连接:
    <bean id="jedisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory" destroy-method="destroy">
    	<property name="usePool" value="true" />
    	<property name="hostName" value="${spring.redis.host}" />
    	<property name="port" value="${spring.redis.port}" />
    	<property name="timeout" value="${spring.redis.timeout}" />
    	<property name="password" value="${spring.redis.password}" />
    	<property name="poolConfig" ref="jedisPoolConfig" />	
    </bean>
    
  • 配置redisTemplate及序列化:
    <bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate">
    	<property name="connectionFactory" ref="jedisConnectionFactory" />
    	<property name="keySerializer" ref="stringSerializer"></property>
    	<!-- <property name="valueSerializer" ref="stringSerializer"></property> -->
    	<property name="hashKeySerializer" ref="stringSerializer"></property>
    	<property name="hashValueSerializer" ref="stringSerializer"></property>
    </bean>
    
    <bean id="stringSerializer" class="org.springframework.data.redis.serializer.StringRedisSerializer"></bean>
    

4、调用redisTemplate进行操作:

@Autowired
private RedisTemplate redisTemplate;

@RequestMapping("redistest.do")
public Set test() {
	Set<ZSetOperations.TypedTuple<String>> listset = new LinkedHashSet();
	ZSetOperations.TypedTuple<String> objectTypedTuple1 = new DefaultTypedTuple<String>("test1",1);
	ZSetOperations.TypedTuple<String> objectTypedTuple2 = new DefaultTypedTuple<String>("test2",2);
	listset.add(objectTypedTuple1);
	listset.add(objectTypedTuple2); 
	redisTemplate.setValueSerializer(new StringRedisSerializer());
	redisTemplate.opsForZSet().add(GaotimeConstants.DEFAULT_MENU_KEY, listset);//新增有序hash
	
	Set<HashMap> listresult = redisTemplate.opsForZSet().range(INFOPRODUCT_MENU_KEY, 0, redisTemplate.opsForZSet().size(INFOPRODUCT_MENU_KEY));  //查询
	
	redisTemplate.opsForZSet().removeRange(INFOPRODUCT_MENU_KEY, 0, redisTemplate.opsForZSet().size(INFOPRODUCT_MENU_KEY));  //删除
	
	System.out.println(redisTemplate.opsForZSet().size(INFOPRODUCT_MENU_KEY));  //打印长度

此外,还有更多操作的api,也就不一 一列举了。

springboot整合redis:

1、环境及jar包:

  • 环境:jdk1.8+springboot(2.1.11.RELEASE)+es6+mybatis+redis3.2
  • pom.xml:
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.11.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    
    <dependencies>
    	<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
    </dependencies>
    

2、配置redis:

在application.yml或者application.properties中配置:

#redis
#redis数据库索引(默认为0)
spring.redis.database=0
spring.redis.host=172.18.1.44
spring.redis.port=6379
spring.redis.password=!ZykUGb8
#连接池最大连接数(使用负数表示没有限制)默认8
spring.redis.jedis.pool.max-active=10
spring.redis.jedis.pool.max-idle=10
spring.redis.jedis.pool.min-idle=0
spring.redis.timeout=6000

3、编写redistemplate的bean配置:

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
	@SuppressWarnings("all")
	public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
        RedisTemplate<String, Object> template = new RedisTemplate<String, Object>();
        template.setConnectionFactory(factory);
        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);
        StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
        template.setKeySerializer(stringRedisSerializer);
        template.setHashKeySerializer(stringRedisSerializer);
        template.setValueSerializer(jackson2JsonRedisSerializer);
        template.setHashValueSerializer(jackson2JsonRedisSerializer);
        template.afterPropertiesSet();
        return template;
    }
}

4、调用redisTemplate进行操作:

如上述第4部分一致。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值