鑑於CSDN肆無忌憚的廣告,博客不再更新,更多動態請移步至個人網站:https://youyou-2608.com
ssm框架的配置和redis的介紹安裝及命令見鏈接:
IDEA下spring+spring mvc+mybatis+mysql+maven框架搭建
添加Maven依賴:
在pom.xml文件中添加redis依賴,如下:
<!--import redis dependency-->
<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>
建立redis.properties資源文件:
將redis服務的常用配置從項目中分離出來,方便項目的移植和管理。
redis.key.prefix=redis_key
redis.host=localhost
redis.port=6379
redis.maxIdle=300
redis.maxActive=600
redis.maxWait=1000
redis.testOnBorrow=true
建立抽閒類AbstractBaseRedisDao類
建立AbstractBaseRedisDao.java類:
package com.demon.util.redis.service;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.RedisSerializer;
import javax.annotation.Resource;
/**
* @author [email protected]
* @date 2018/3/22 14:02
*/
public abstract class AbstractBaseRedisDao<K, V> {
@Resource
private RedisTemplate<K, V> redisTemplate;
/**
* 設置redisTemplate
*
* @param redisTemplate the redisTemplate to set
*/
public void setRedisTemplate(RedisTemplate<K, V> redisTemplate) {
this.redisTemplate = redisTemplate;
}
/**
* 獲取 RedisSerializer
* <br>------------------------------<br>
*/
RedisSerializer<String> getRedisSerializer() {
return redisTemplate.getStringSerializer();
}
}
建立RedisService接口,封裝相應的Redis操作:
新建RedisService.java:
package com.demon.util.redis.service;
import java.util.List;
/**
* @author [email protected]
* @date 2018/3/22 14:05
*/
public interface RedisService {
/**
* @param key key
* @param value value
* @description set a key to redis
*/
boolean add(String key, String value);
/**
* @param keys keys
* @param values values
* @description 批量增加
*/
boolean addByList(List<String> keys, List<String> values);
/**
* @param key key
* @description delete a key from redis
*/
void delete(String key);
/**
* @param key key
* @value value new value
* @description update
*/
boolean update(String key, String newValue);
/**
* @param key key
* @description get a value by key
*/
String get(String key);
}
添加RedisServiceImpl實現類:
package com.demon.util.redis.service;
import org.springframework.data.redis.core.RedisCallback;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.RedisSerializer;
import redis.clients.jedis.ShardedJedis;
import javax.annotation.Resource;
import java.io.Serializable;
import java.util.List;
/**
* @author [email protected]
* @date 2018/3/22 14:17
*/
public class RedisServiceImpl extends AbstractBaseRedisDao implements RedisService {
@Resource
private RedisTemplate<Serializable, Serializable> redisTemplate;
public boolean add(final String key, final String value) {
return redisTemplate.execute((RedisCallback<Boolean>) redisConnection -> {
RedisSerializer<String> redisSerializer = getRedisSerializer();
byte[] keyByte = redisSerializer.serialize(key);
byte[] valuesByte = redisSerializer.serialize(value);
return redisConnection.setNX(keyByte, valuesByte);
});
}
public boolean addByList(final List<String> keys, final List<String> values) {
return redisTemplate.execute(redisConnection -> {
final RedisSerializer<String> redisSerializer = getRedisSerializer();
//TODO resolve the for not loop problem
for (int i = 0; i < values.size(); i++) {
byte[] keyByte = redisSerializer.serialize(keys.get(i));
byte[] valueByte = redisSerializer.serialize(values.get(i));
return redisConnection.setNX(keyByte, valueByte);
}
return true;
}, false, false);
}
public void delete(String key) {
redisTemplate.execute((RedisCallback<Long>) redisConnection -> {
RedisSerializer<String> redisSerializer = getRedisSerializer();
byte[] keyByte = redisSerializer.serialize(key);
return redisConnection.del(keyByte);
});
}
public boolean update(final String key, final String newValue) {
if (get(key) == null) {
throw new NullPointerException("數據不存在,key = " + key);
}
return redisTemplate.execute((RedisCallback<Boolean>) redisConnection -> {
RedisSerializer<String> redisSerializer = getRedisSerializer();
byte[] keyByte = redisSerializer.serialize(key);
byte[] newValueByte = redisSerializer.serialize(newValue);
redisConnection.set(keyByte, newValueByte);
return true;
});
}
public String get(final String key) {
return redisTemplate.execute((RedisCallback<String>) redisConnection -> {
RedisSerializer<String> redisSerializer = getRedisSerializer();
byte[] keyByte = redisSerializer.serialize(key);
byte[] value = redisConnection.get(keyByte);
return redisSerializer.deserialize(value);
});
}
}
可以根據Redis命令實現相應的方法,這裏實現了全部的Redis操作:
java之redis篇(spring-data-redis整合)
添加測試:
測試省略。