我使用的是springboot项目
1第一步是引入包
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
2.第二步配置文件.yml或者.properties
spring.redis.host=127.0.0.1
spring.redis.port = 6379
spring.redis.jedis.pool.max-active=8
spring.redis.jedis.pool.max-idle=500
别的配置项也可以加进去,看个人需要
3.第三步,封装的service类,或者工具类也可以
import java.util.List;
import java.util.concurrent.TimeUnit;
public interface RedisService {
/**
* 模糊查询缓存信息 (方法说明:腾讯云不允许模糊查询,因此该方法不可用)
* @param matchKey 匹配key
* @return
*/
@Deprecated
public String getCacheByMatchKey(String matchKey);
/**
* 返回指定key的缓存值
* @param key 缓存key
* @return
*/
String get(String key);
<T> T getForObject(String key,Class<?> clazz);
<T> List<T> getForList(String key, Class<?> clazz);
void set(String key, Object value);
void set(String key, Object value, int seconds);
void set(String key, Object value, int seconds, TimeUnit unit);
/**
* 设置缓存 list 结构
* @param key
* @param value
*/
void leftPush(String key, Object value);
void delete(String key);
void expire(String key,int seconds, TimeUnit unit);
/**
* 获取list结构数据的数量
* @param key
* @return
*/
Long getSizeForList(String key);
/**
* list结构获取分页数据
* @param key 缓存key
* @param page 页数
* @param rows 行数
* @param sidx 排序字段
* @param <V>
* @return
*/
<V> List<V> sort(String key,Integer page,Integer rows,String sidx);
List<?> getObjectList(String key,Class<?> clazz);
void set(String key, List<?> value,int seconds);
void set(String key, List<?> value);
}
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import io.netty.util.internal.StringUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.query.SortQueryBuilder;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import java.util.List;
import java.util.Set;
import java.util.concurrent.TimeUnit;
@Service
public class RedisServiceImpl implements org.apache.dubbo.admin.utils.RedisService {
@Autowired
private RedisTemplate redisTemplate;
public void setRedisTemplate(RedisTemplate redisTemplate) {
this.redisTemplate = redisTemplate;
}
@Override
public String getCacheByMatchKey(String matchKey) {
String sessionStr = "";
// 获取所有的key
Set<String> keys = redisTemplate.keys(matchKey);
if(keys != null && keys.size() > 0){
sessionStr = (String)redisTemplate.opsForValue().get(keys.iterator().next());
}
return sessionStr;
}
@Override
public String get(String key) {
return (String)redisTemplate.opsForValue().get(key);
}
@Override
public <T> T getForObject(String key,Class<?> clazz) {
String valueStr = (String)redisTemplate.opsForValue().get(key);
if(!StringUtils.isEmpty(valueStr)){
if(clazz.getSimpleName().equals("Map")){
return (T) JSONObject.parse(valueStr);
}
return (T)JSONObject.parseObject(valueStr,clazz);
}
return null;
}
@Override
public <T> List<T> getForList(String key, Class<?> clazz) {
String valueStr = (String)redisTemplate.opsForValue().get(key);
if(!StringUtils.isEmpty(valueStr)){
return (List<T>) JSONArray.parseArray(valueStr, clazz);
}
return null;
}
@Override
public void set(String key, Object value) {
if(value instanceof String){
}else if (value instanceof Long){
}else if (value instanceof Integer){
}else{
value = JSONObject.toJSONString(value);
}
redisTemplate.opsForValue().set(key,value);
}
@Override
public void set(String key, Object value, int seconds) {
if(value instanceof String){
}else if (value instanceof Long){
}else if (value instanceof Integer){
}else{
value = JSONObject.toJSONString(value);
}
redisTemplate.opsForValue().set(key,value,seconds, TimeUnit.SECONDS);
}
@Override
public void set(String key, Object value, int seconds, TimeUnit unit) {
if(value instanceof String){
}else if (value instanceof Long){
}else if (value instanceof Integer){
}else{
value = JSONObject.toJSONString(value);
}
redisTemplate.opsForValue().set(key,value,seconds,unit);
}
@Override
public void leftPush(String key, Object value) {
redisTemplate.opsForList().leftPush(key, value);
}
@Override
public void delete(String key) {
redisTemplate.delete(key);
}
@Override
public void expire(String key, int seconds, TimeUnit unit) {
redisTemplate.expire(key,seconds,unit);
}
@Override
public Long getSizeForList(String key) {
return redisTemplate.opsForList().size(key);
}
@Override
public <V> List<V> sort(String key, Integer page, Integer rows, String sidx) {
SortQueryBuilder<String> builder = SortQueryBuilder.sort(sidx);
builder.by(key+"*->"+sidx);
builder.get("#");
//builder.alphabetical(isAlpha);
long pageFrom = (page - 1) * rows;
long pageTo = page * rows;
builder.limit(pageFrom, pageTo);
List<V> list = redisTemplate.sort(builder.build());
return list;
}
@Override
public List<?> getObjectList(String key,Class<?> clazz) {
String valueStr = (String)redisTemplate.opsForValue().get(key);
if(!StringUtils.isEmpty(valueStr)){
return (List<?>) JSONArray.parseArray(valueStr, clazz);
}
return null;
}
@Override
public void set(String key, List<?> value,int seconds) {
String values = JSONObject.toJSONString(value);
redisTemplate.opsForValue().set(key,values,seconds,TimeUnit.SECONDS);
}
@Override
public void set(String key, List<?> value) {
String values = JSONObject.toJSONString(value);
redisTemplate.opsForValue().set(key,values);
}
}
4.第四步进行测试,随便找个方法测下
@Autowired
private RedisService redisService;
@RequestMapping(value = "/login", method = RequestMethod.GET)
public String login(@RequestParam String userName) {
if (StringUtils.isBlank(rootUserName) ) {
redisService.set(rootUserName,"myValue");
System.out.println("redis的值"+ redisService.get(rootUserName));
return true;
}
return null;
}