Spring StringRedisTemplate 配置

本文介绍如何使用Spring框架集成Redis,并通过示例演示了如何配置连接池、读取配置文件及进行基本的CRUD操作。此外,还对比了RedisTemplate与StringRedisTemplate的区别及其常用方法。

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

1 先看pom.xml

 

<dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-pool2</artifactId>
            <version>2.0</version>
        </dependency>
        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>2.9.0</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-redis</artifactId>
            <version>1.6.2.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.4</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>

 

 

 

 

 

2 创建 redis.properties

 

# Redis settings
redis.host=192.168.1.88
redis.port=6379
redis.timeOut=10000
# redis.pass=

redis.maxIdle=300  
redis.maxTotal=1024  
redis.maxWaitMillis=10000  
redis.testOnBorrow=true  

 

 

 

3 applicationContext.xml

 

两段配置都要

 

<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">

        <property name="locations">
            <list>
                <value>classpath:redis/redis.properties</value>
            </list>
        </property>
    </bean>

 

 

<bean name="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
        <property name="maxIdle" value="${redis.maxIdle}" />
        <property name="maxTotal" value="${redis.maxTotal}" />
        <property name="maxWaitMillis" value="${redis.maxWaitMillis}" />
        <property name="testOnBorrow" value="${redis.testOnBorrow}" />
    </bean>

    <bean name="jedisPool" class="redis.clients.jedis.JedisPool">
        <constructor-arg index="0" ref="jedisPoolConfig" />
        <constructor-arg index="1" value="${redis.host}" />
        <constructor-arg index="2" value="${redis.port}" />
        <constructor-arg index="3" value="${redis.timeOut}" />
    </bean>
    <bean id="jedisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">
        <property name="hostName" value="${redis.host}" />
        <property name="port" value="${redis.port}" />
        <!-- <property name="password" value="${redis.password}" />   -->
        <property name="poolConfig" ref="jedisPoolConfig" />
    </bean>
    <bean id="redisTemplate" class="org.springframework.data.redis.core.StringRedisTemplate"   p:connection-factory-ref="jedisConnectionFactory" />

 

 

 

4 创建Test.cs

 

 

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("/applicationContext.xml")
public class RedisTest {
    @Autowired
    StringRedisTemplate redisTemplate;

    @Test
    public void Test() throws Exception{
        redisTemplate.opsForValue().set("a","test");
        String q = redisTemplate.opsForValue().get("a")+" hello";
        System.out.println(q);
    }
}

 

 

 

 

 

 

 

比较 RedisTemplate 和 StringRedisTemplate的相关信息:

 

 

 RedisTemplate

 

方法子API接口描述
opsForValue()ValueOperations<K,V>描述具有简单值的条目
opsForList()ListOperations<K,V>操作具有list值的条目
opsForSet()SetOperations<K,V>操作具有set值的条目
opsForZSet()ZSetOperations<K,V>操作具有ZSet值(排序的set)的条目
opsForHash()HashOperations<K,HK,VH>操作具有hash值的条目
boundValueOps(K)BoundValueOperations<K,V>以绑定指定key的方式,操作具有简单值的条目
boundListOps(K)BoundListOperations<K,V>以绑定指定key的方式,操作具有list的条目
boundSetOps(K)BoundSetOperations<K,V>以绑定指定key的方式,操作具有set的条目
boundZSet(K)BoundZSetOperations<K,V>以绑定指定key的方式,操作具有ZSet(排序的set)的条目
boundHashOps(K)BoundHashOperations<K,V>以绑定指定key的方式,操作具有hash值的条目

 

 

 

StringRedisTemplate

方法子API接口描述
opsForValue()ValueOperations<String,String>描述具有简单值的条目
opsForList()ListOperations<String,String>操作具有list值的条目
opsForSet()SetOperations<String,String>操作具有set值的条目
opsForZSet()ZSetOperations<String,String>操作具有ZSet值(排序的set)的条目
opsForHash()HashOperations<String,Object,Object>操作具有hash值的条目
boundValueOps(K)BoundValueOperations<String,String>以绑定指定key的方式,操作具有简单值的条目
boundListOps(K)BoundListOperations<String,String>以绑定指定key的方式,操作具有list的条目
boundSetOps(K)BoundSetOperations<String,String>以绑定指定key的方式,操作具有set的条目
boundZSet(K)BoundZSetOperations<String,String>以绑定指定key的方式,操作具有ZSet(排序的set)的条目
boundHashOps(K)BoundHashOperations<String,String>以绑定指定key的方式,操作具有hash值的条目

 

 

 

 

常用方法:

转载:http://blog.youkuaiyun.com/u011911084/article/details/53435172

 

[java] view plain copy

  1. stringRedisTemplate.opsForValue().set("test""100",60*10,TimeUnit.SECONDS);//向redis里存入数据和设置缓存时间  

[java] view plain copy

  1. stringRedisTemplate.boundValueOps("test").increment(-1);//val做-1操作  

[java] view plain copy

  1. stringRedisTemplate.opsForValue().get("test")//根据key获取缓存中的val  

[java] view plain copy

  1. stringRedisTemplate.boundValueOps("test").increment(1);//val +1  

[java] view plain copy

  1. stringRedisTemplate.getExpire("test")//根据key获取过期时间  

[java] view plain copy

  1. stringRedisTemplate.getExpire("test",TimeUnit.SECONDS)//根据key获取过期时间并换算成指定单位  

[java] view plain copy

  1. stringRedisTemplate.delete("test");//根据key删除缓存  

[java] view plain copy

  1. stringRedisTemplate.hasKey("546545");//检查key是否存在,返回boolean值  

[java] view plain copy

  1. stringRedisTemplate.opsForSet().add("red_123""1","2","3");//向指定key中存放set集合  

[java] view plain copy

  1. stringRedisTemplate.expire("red_123",1000 , TimeUnit.MILLISECONDS);//设置过期时间  

[java] view plain copy

  1. stringRedisTemplate.opsForSet().isMember("red_123""1")//根据key查看集合中是否存在指定数据  

[java] view plain copy

  1. stringRedisTemplate.opsForSet().members("red_123");//根据key获取set集合  

 

 

 

 

 

 

 

### 如何配置 `StringRedisTemplate` 示例教程 #### 配置依赖项 为了使用 `StringRedisTemplate`,需要引入必要的 Maven 或 Gradle 依赖。对于 Spring Boot 应用程序来说,通常只需要添加如下所示的 starter: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> ``` 这会自动导入所有必需的库来连接到 Redis 并操作字符串类型的键值对数据。 #### 创建应用程序类并注入 `StringRedisTemplate` 创建一个新的 Java 类用于测试目的,在其中定义一个字段以存储由框架自动装配好的 `StringRedisTemplate` 实例[^1]。 ```java @SpringBootTest(classes = RedisApplication.class) public class RedisApplicationTests { @Autowired private StringRedisTemplate stringRedisTemplate; } ``` 上述代码片段展示了如何通过 `@SpringBootTest` 注解启动整个上下文环境,并利用 `@Autowired` 自动装载所需的模板对象实例。 #### 编写单元测试方法设置键值对 接下来编写具体的业务逻辑实现,这里展示了一个简单的例子——向 Redis 中存入一条记录。 ```java @Test void set() { ValueOperations<String, String> ops = stringRedisTemplate.opsForValue(); ops.set("name", "奇遇少年"); } ``` 这段代码首先获取了针对字符串的操作接口 `opsForValue()`,接着调用了它的 `set` 方法将指定 key-value 对保存至缓存服务器中。 #### 关于 `StringRedisTemplate` 的最佳实践建议 当涉及到更复杂的场景时,应该遵循一些指导原则确保高效稳定的性能表现。例如合理规划 keyspace 结构有助于提高查询效率以及降低内存占用率;另外考虑到高可用性和容错能力,则需考虑采用哨兵模式或者集群架构等方案[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值