我们平时在Spring Boot项目中常用Spring Data Redis 来操作Redis,但是在非Spring项目,或者对于初学者及学生一类,就有使用原生操作的需求。
话不多说,直接上代码:
连接Redis服务器类(此类可优化,改成redis连接池):
package redis;
import redis.clients.jedis.DefaultJedisClientConfig;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisClientConfig;
import redis.clients.jedis.DefaultJedisClientConfig.Builder;
public class RedisConn {
//Redis服务器地址
private static String host="192.168.31.8";
//Redis端口号, 默认是6379
private static int port = 6379;
//Redis 密码,没有设置可以为空
private static String password="";
//Redis 默认链接的数据库
private static int databaseNo=5;
private static Jedis jedisConn = null;
static {
Builder config = DefaultJedisClientConfig.builder()
.database(databaseNo);
//密码不为空时候设置密码
if(password!=null && !"".equals(password)) {
config.password(password);
}
JedisClientConfig jedisClientConfig = config.build();
jedisConn = new Jedis(host,port,jedisClientConfig);
}
public static Jedis getJedis() {
try {
return jedisConn;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
public static void close() {
if(jedisConn!=null) {
jedisConn.close();
}
}
}
操作Redis类:
package redis;
import java.util.List;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.jdc.utils.T;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.params.SetParams;
/**
* Redis 操作助手
*
*/
public class RedisHelper {
private static Jedis redisConn;
/**
* 构造函数获取redis连接
*/
public RedisHelper() {
if(redisConn==null) {
redisConn = RedisConn.getJedis();
}
}
/**
* 设置字符串值
@param key Redis键
@param value 待设置的值
@return 操作成功则返回OK
*/
public String setCacheString(String key,String value) {
return redisConn.set(key, value);
}
/**
* 设置字符串值
@param key Redis键
@param value 待设置的值
@param min 过期时间(分钟)
@return 操作成功则返回OK
*/
public String setCacheString(String key,String value,long min) {
min = min==0?1:min;
return redisConn.set(key, value,SetParams.setParams().ex(min*60));
}
/**
* 设置对象
@param key Redis键
@param obj 对象
@return
*/
public <T> boolean setCacheObject(String key,T obj) {
String rs = redisConn.set(key, JSON.toJSONString(obj));
return "OK".equals(rs);
}
/**
* 设置List
@param key Redis键
@param list list数据
@return
*/
public <T> boolean setCacheList(String key,List<T> list) {
String rs = redisConn.set(key, JSON.toJSONString(list));
return "OK".equals(rs);
}
/**
* 设置过期时间
@param key Redis键
@param minute 过期时间(分钟)
@return
*/
public long expire(String key, long minute) {
return redisConn.expire(key, minute*60);
}
/**
* 获取字符串值
@param key Redis键
@return
*/
public String getCacheString(String key) {
return redisConn.get(key);
}
/**
* 获取对象
@param key Redis键
@param clazz 对象类型
@return
*/
public <T> T getCacheObject(String key,Class<T> clazz) {
String json = redisConn.get(key);
return JSONObject.parseObject(json, clazz);
}
/**
* 获取List
@param key Redis键
@param clazz list中元素的对象类型
@return
*/
public <T> List<T> getCacheList(String key,Class<T> clazz) {
String json = redisConn.get(key);
return JSONObject.parseArray(json, clazz);
}
/**
* 获取Redis中的键
@param pattern
*/
public boolean delete(String key) {
long rs = redisConn.del(key);
return rs==1;
}
/**
* 判断key是否存在
@param key Redis中的键
@return
*/
public boolean hasKey(String key) {
return redisConn.exists(key);
}
}