Spring集成Redis使用RedisTemplate

本文详细介绍如何在Spring项目中配置并使用Redis,包括POM依赖设置、redis.properties配置、applicationContext-redis.xml配置,以及如何通过redisTemplate进行数据操作。

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

1、POM:

<!-- spring-redis -->
<!-- config junit jar -->
<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.8.2</version>
    <scope>test</scope>
</dependency>
<!-- config redis data and client jar -->
<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-redis</artifactId>
    <version>1.0.2.RELEASE</version>
</dependency>
<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>2.1.0</version>
</dependency>
 
<!-- config need jar -->
<dependency>
    <groupId>commons-lang</groupId>
    <artifactId>commons-lang</artifactId>
    <version>2.6</version>
</dependency>
<dependency>
    <groupId>org.apache.geronimo.specs</groupId>
    <artifactId>geronimo-servlet_3.0_spec</artifactId>
    <version>1.0</version>
</dependency>
<!-- cofig spring jar -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
    <version>${org.springframework.version}</version>
</dependency>
2、redis.properties,redis基本配置
# Redis 参数配置 
redis.isopen:yes
redis.host:172.16.30.23
redis.port:6379
redis.pass:
 
 
redis.maxIdle:300
redis.maxActive:600
redis.maxWait:1000
redis.testOnBorrow:true
3、applicationContext-redis.xml配置文件
   <!-- 注意此处注入的是JedisPoolConfig,说明SDR还依赖与Jedis -->
<bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig">
    <property name="maxIdle" value="${redis.maxIdle}" />
    <property name="maxActive" value="${redis.maxActive}" />
    <property name="maxWait" value="${redis.maxWait}" />
    <property name="testOnBorrow" value="${redis.testOnBorrow}" />
</bean>
 
<bean id="connectionFactory"
    class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"
    p:host-name="${redis.host}" p:port="${redis.port}" p:password="${redis.pass}"
    p:pool-config-ref="poolConfig" />
 
<bean id="redisTemplate" class="org.springframework.data.redis.core.StringRedisTemplate">
    <property name="connectionFactory" ref="connectionFactory" />
    <!-- 如果不配置Serializer,那么存储的时候智能使用String,如果用User类型存储,那么会提示错误User can't cast 
        to String!!! -->
    <property name="keySerializer">
        <bean
            class="org.springframework.data.redis.serializer.StringRedisSerializer" />
    </property>
    <property name="valueSerializer">
        <bean
            class="org.springframework.data.redis.serializer.JdkSerializationRedisSerializer" />
    </property>
</bean>
4、redisTemplate的使用
public void add(final User user){
    
    //方式1:.在redistemplate中配置Serializer
    redisTemplate.execute(new RedisCallback<Object>() {
        @Override
        public Object doInRedis(RedisConnection connection)
                throws DataAccessException {
            connection.set(redisTemplate.getStringSerializer().serialize(user.getId()), redisTemplate.getStringSerializer().serialize(user.getName()));
            return null;
        }
    });
    
    //方式2:不在redistemplate中配置Serializer,而是在Service的实现类中单独指定Serializer。
    ValueOperations<Serializable, Serializable> valueOps = redisTemplate.opsForValue();
    valueOps.set(user.getId(), user);
}
public User get(final String userId) {
    
    //方式1:.在redistemplate中配置Serializer
    return redisTemplate.execute(new RedisCallback<User>() {
        @Override
        public User doInRedis(RedisConnection connection)
                throws DataAccessException {
            byte[] key = redisTemplate.getStringSerializer().serialize(userId);
            User user = new User();
            if(connection.exists(key)){
                byte[] value = connection.get(key);
                String name = redisTemplate.getStringSerializer().deserialize(value);
                user.setId(userId);
                user.setName(name);
            }
            return user;
        }
    });
    //方式2:不在redistemplate中配置Serializer,而是在Service的实现类中单独指定Serializer。
    BoundValueOperations<Serializable, Serializable> boundValueOps = redisTemplate.boundValueOps(userId);
    User serializable = (User) boundValueOps.get();
    System.out.println(serializable);
    return serializable;
}

--------------------- 
作者:yk123666 
来源:优快云 
原文:https://blog.youkuaiyun.com/yk123666/article/details/53693676 
版权声明:本文为博主原创文章,转载请附上博文链接!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值