Spring + Redis ( 简单使用)
- <dependency>
- <groupId>redis.clients</groupId>
- <artifactId>jedis</artifactId>
- <version>2.9.0</version>
- </dependency>
- //连接 Redis
- Jedis jedis = new Jedis("localhost", 6379);
- //如果需要密码
- //jedis.auth("");
- //记录操作次数
- int i = 0;
- try {
- long start = System.currentTimeMillis();
- while (true) {
- long end = System.currentTimeMillis();
- //当 大于等于 1000毫秒(1秒)时,结束
- if (end - start >= 1000) {
- break;
- }
- i++;
- jedis.set("testId" + i, i + " ");
- }
- } finally {
- //关闭 Redis
- jedis.close();
- }
- //打印1秒内对 Redis 的操作次数
- System.out.println("Redis每秒操作:" + i + "次");
结果:
- Redis每秒操作:1753次
使用 流水线技术( 连接池 ),提高速度。
- //配置 连接池
- JedisPoolConfig config = new JedisPoolConfig();
- //最大空闲数
- config.setMaxIdle(50);
- //最大连接数
- config.setMaxTotal(100);
- //最大等待数 毫秒数
- config.setMaxWaitMillis(20000);
- //创建 连接池
- JedisPool pool = new JedisPool(config,"localhost");
- //从连接池中获取单个连接
- Jedis jedis = pool.getResource();
- //如果需要密码
- //jedis.auth("");
- //记录操作次数
- int i = 0;
- try {
- long start = System.currentTimeMillis();
- while (true) {
- long end = System.currentTimeMillis();
- //当 大于等于 1000毫秒(1秒)时,结束
- if (end - start >= 1000) {
- break;
- }
- i++;
- jedis.set("testId" + i, i + " ");
- }
- } finally {
- //关闭 Redis
- jedis.close();
- }
- //打印1秒内对 Redis 的操作次数
- System.out.println("Redis每秒操作:" + i + "次");
运行结果:
- Redis每秒操作:5022次
spring-data-redis.jar 依赖包
- <dependency>
- <groupId>org.springframework.data</groupId>
- <artifactId>spring-data-redis</artifactId>
- <version>2.1.3.RELEASE</version>
- </dependency>
-
配置连接池
-
配置Spring所提供的连接工厂
-
JredisConnectionFactory
-
JedisConnectionFactory
-
LettuceConnectionFactory
-
SrpConnectionFactory
-
-
配置Spring RedisTemplate
Spring所提供的连接工厂,无论 如何它们都是接口 RedisConnectionFacory 的实现类
使用 JedisConnectionFactory 较为广泛。
- @Configuration//声明当前类 是配置类
- public class SpringRedisConfig {
- //配置连接池
- @Bean
- JedisPoolConfig poolConfig(){
- //配置连接池
- JedisPoolConfig config = new JedisPoolConfig();
- //最大空闲数
- config.setMaxIdle(50);
- //最大等待时间
- config.setMaxWaitMillis(20000);
- //最大连接数
- config.setMaxTotal(100);
- return config;
- }
- //配置 redis 连接工厂
- @Bean
- RedisConnectionFactory connectionFactory(){
- JedisConnectionFactory connectionFactory = new JedisConnectionFactory(poolConfig());
- return connectionFactory;
- }
- //配置 Spring RedisTemplate
- @Bean
- StringRedisTemplate redisTemplate(){
- return new StringRedisTemplate(connectionFactory());
- }
- }
测试示例:
- public static void main(String[] args) {
- //扫描 spring 注解
- AnnotationConfigApplicationContext bean = new AnnotationConfigApplicationContext(SpringRedisConfig.class);
- // 得到 spring 容器 中 的类
- StringRedisTemplate stringRedisTemplate =
- (StringRedisTemplate) bean.getBean("redisTemplate");
- //使用 SpringRedisTemplate
- stringRedisTemplate.boundValueOps("test").set("zhe shi yi ge ce shi !");
- System.out.println(stringRedisTemplate.boundValueOps("test").get());
- }
运行效果:
- zhe shi yi ge ce shi !
XML配置
- <?xml version="1.0" encoding="UTF-8"?>
- <beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
- <!--配置连接池-->
- <bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig">
- <!--最大等待时间-->
- <property name="maxWaitMillis" value="20000"/>
- <!--最大空闲数-->
- <property name="maxIdle" value="50"/>
- <!--最大连接数-->
- <property name="maxTotal" value="100"/>
- </bean>
- <!--Spring 提供的redis连接工厂-->
- <bean id="connectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">
- <property name="poolConfig" ref="poolConfig"/>
- </bean>
- <!--Spring Template-->
- <bean id="stringRedisTemplate" class="org.springframework.data.redis.core.StringRedisTemplate">
- <property name="connectionFactory" ref="connectionFactory"/>
- </bean>
- </beans>
测试类
- public static void main(String[] args) {
- //加载 配置文件
- ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("redisConfig.xml");
- //从容器中 获取 一个 bean
- StringRedisTemplate bean = (StringRedisTemplate) context.getBean("stringRedisTemplate");
- bean.boundValueOps("test").set("zhe shi yi ge jian dan de ce shi ");
- System.out.println(bean.boundValueOps("test").get());
- }
运行效果:
- zhe shi yi ge jian dan de ce shi