Spring + Redis ( 簡單使用)
阿新 • • 發佈:2019-01-09
<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