專案中加入redis
阿新 • • 發佈:2019-02-13
在spring的配置檔案中加入redis的配置:
<!-- 配置redis -->
<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
<property name="maxTotal" value="200" />
<property name="maxIdle" value="100" />
<property name="timeBetweenEvictionRunsMillis" value ="30000" />
<property name="minEvictableIdleTimeMillis" value="30000" />
<property name="testOnBorrow" value="true" />
</bean>
<!-- redis 配置,也可以把配置挪到properties配置檔案中,再讀取 -->
<bean id="jedisPool" class="redis.clients.jedis.JedisPool">
<constructor-arg index="0" ref="jedisPoolConfig" />
<constructor-arg index="1" value="127.0.0.1" name="host"
type="java.lang.String" />
<constructor-arg index="2" value="6379" name="port"
type="int" />
<constructor-arg index="3" value="5000" name="timeout"
type ="int" />
<constructor-arg index="4" value=""
name="password" type="java.lang.String" />
</bean>
<bean id="jedisConnectionFactory"
class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"
scope="singleton">
<property name="hostName" value="127.0.0.1" />
<property name="port" value="6379" />
<property name="password" value="" />
<property name="timeout" value="100000" /><!-- redis快取時間測試10分鐘過期,重新登入ok -->
<property name="poolConfig" ref="jedisPoolConfig" />
<property name="usePool" value="true" />
</bean>
<bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate">
<property name="connectionFactory" ref="jedisConnectionFactory" />
<property name="keySerializer">
<bean
class="org.springframework.data.redis.serializer.StringRedisSerializer" />
</property>
<property name="hashKeySerializer">
<bean
class="org.springframework.data.redis.serializer.StringRedisSerializer" />
</property>
<property name="valueSerializer">
<bean
class="org.springframework.data.redis.serializer.JdkSerializationRedisSerializer" />
</property>
</bean>
<!-- 自定義的redis工具類,用於setter,getter -->
<bean id="redisTemplateUtils" class="com.redis.RedisTemplateUtils">
<property name="redisTemplate" ref="redisTemplate" />
</bean>
自定義的工具類RedisTemplateUtils,用來編寫java程式碼時,需要向redis存入或者取出資料時方便操作,這個寫的不全,是為了測試寫的,可以自己上網上抄一個全的,嘿嘿:
package com.redis;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.SetOperations;
import org.springframework.data.redis.core.ZSetOperations;
/**
*
* @author HKY
*
*/
public class RedisTemplateUtils {
private RedisTemplate<String, String> redisTemplate;
/**
* 用於spring注入.
* @param redisTemplate
*/
public void setRedisTemplate(RedisTemplate<String, String> redisTemplate) {
this.redisTemplate = redisTemplate;
}
/**
* 獲取模板redis物件.
* @return
*/
public RedisTemplate<String, String> getRedisTemplate() {
return redisTemplate;
}
/**
* zSet有序集合,預設按照score升序排列,儲存格式K(1)==V(n),V(1)=S(1)(K=key,V=value,S=score)
* @param key
* 鍵
* @param value
* 值
* @param number
* 插入序號
* @return
*/
public Boolean zSet(String key, String value, Integer score) {
Boolean result;
ZSetOperations<String, String> zSet = redisTemplate.opsForZSet();
result = zSet.add(key, value, score);
if (result) {
System.out.println("zset儲存成功");
}else {
System.out.println("zset儲存失敗");
}
return result;
}
/**
* 無序集合,add的順序不是儲存順序
* @param key
* @param values
* @return
*/
public Long set(String key, String... values) {
Long result;
SetOperations<String, String> set = redisTemplate.opsForSet();
result = set.add(key, values);
if (result != null) {
System.out.println("set儲存成功");
}else {
System.out.println("set儲存失敗");
}
return result;
}
}
當然, 也可以直接在專案中呼叫原始的redisTemplate,但是要把它用spring注入。。噁心了,貌似不要那樣做的好!自己玩玩就行了。。。
測試:
@Autowired
private RedisTemplateUtils redisUtils;
private void goTest(){
redisUtils.set("hh", "hahah");
redisUtils.zSet("kk", "gogo", 0);
System.out.println("ok");
}