ssm集成redis 及简单实例:简单的将java对象存入redis(json存入)1、导入依赖,redis依赖、spring集成redis依赖和后面用到的对象转JSON字符依赖
2、spring配置文件(applicationContext.xml)中加入redis配置org.springframework.data spring-data-redis 1.8.2.RELEASE redis.clients jedis 2.9.1 commons-pool commons-pool 1.5.6 org.apache.commons commons-lang3 3.3.2 com.google.code.gson gson 2.2.4
3.redis的连接配置
#redis连接 #ip地址 redis.hostName=192.168.16.129 #端口号 redis.port=6379 #密码,默认为空 redis.password= #客户端超时时间单位是毫秒 默认是2000 redis.timeout=2000 #最大空闲数 redis.maxIdle=10 #连接池的最大数据库连接数。设为0表示无限制,如果是jedis 2.4以后用redis.maxTotal #redis.maxActive=10 #控制一个pool可分配多少个jedis实例,用来替换上面的redis.maxActive,如果是jedis 2.4以后用该属性 redis.maxTotal=10 #最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示无限制。 redis.maxWaitMillis=1000 #连接的最小空闲时间 默认1800000毫秒(30分钟) redis.minEvictableIdleTimeMillis=300000 #每次释放连接的最大数目,默认3 redis.numTestsPerEvictionRun=1024 #逐出扫描的时间间隔(毫秒) 如果为负数,则不运行逐出线程, 默认-1 redis.timeBetweenEvictionRunsMillis=30000 #是否在从池中取出连接前进行检验,如果检验失败,则从池中去除连接并尝试取出另一个 redis.testOnBorrow=false #在空闲时检查有效性, 默认false redis.testWhileIdle=false4、工具类RedisUtil
网上有很多完整的Redis工具类,如http://t.csdn.cn/1oiHP,下面只展示部分代码
public class RedisUtil {
private RedisTemplate redisTemplate;
public void setRedisTemplate(RedisTemplate redisTemplate) {
//根据需要加入
RedisSerializer stringSerializer = new StringRedisSerializer();
redisTemplate.setKeySerializer(stringSerializer);
redisTemplate.setValueSerializer(stringSerializer);
this.redisTemplate = redisTemplate;
}
//=============================common============================
public boolean expire(String key,long time){
try {
if(time>0){
redisTemplate.expire(key, time, TimeUnit.SECONDS);
}
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
public long getExpire(String key){
return redisTemplate.getExpire(key,TimeUnit.SECONDS);
}
public boolean hasKey(String key){
try {
return redisTemplate.hasKey(key);
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
@SuppressWarnings("unchecked")
public void del(String ... key){
if(key!=null&&key.length>0){
if(key.length==1){
redisTemplate.delete(key[0]);
}else{
redisTemplate.delete(CollectionUtils.arrayToList(key));
}
}
}
//============================String=============================
public Object get(String key){
return key==null?null:redisTemplate.opsForValue().get(key);
}
public boolean set(String key,Object value) {
try {
redisTemplate.opsForValue().set(key, value);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
public boolean set(String key,Object value,long time){
try {
if(time>0){
redisTemplate.opsForValue().set(key, value, time, TimeUnit.SECONDS);
}else{
set(key, value);
}
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
}
5、实例测试
实体类关系:
Person
--name
--age
--Grade
--略
@Controller
public class RedisController {
@Autowired
private RedisUtil redisUtil;
@ResponseBody
@RequestMapping(value = "/login")
public Person login() {
Grade g = new Grade("2019", "软件班");
Person p = new Person("李四", 23, g);
//利用gson将对象转成json串
Gson gson = new Gson();
String pJson = gson.toJson(p);
redisUtil.set("p1", pJson);
String str= (String) redisUtil.get("p1");
//反转义
return gson.fromJson(str, Person.class);
}
}



