文章目录
一、java对Redis基本操作示例
导入依赖:
java代码简单使用:
二、javaWeb 操作 Redis
1、RedisUtil工具类
2、controller
2、serviceimpl.java
3、mapper.xml
javaWeb 操作 Redis 代码下载
一、java对Redis基本操作示例
导入依赖:
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.0.1</version>
</dependency>
java代码简单使用:
/**
* Created by yan on 2019/2/17.
* 本机Redis,无密码!!!
*/
public class Redis {
/**
* Redis中存取值(String)
*/
@Test
public void test1(){
Jedis jedis = new Jedis();
//本地Redis服务状态,返回PONG--->正常
String ping = jedis.ping();
System.out.println(ping);
//Redis存值
jedis.set("firstKey", "第一个值");
//Redis读取
String firstKey = jedis.get("firstKey");
System.out.println(firstKey);
//关流
jedis.close();
}
/**
* Redis存储 Map
*/
@Test
public void test2(){
Jedis jedis = new Jedis();
jedis.hset("firstMap","field1","messages1");
jedis.hset("twoMap","field2","messages2");
String firstMap = jedis.hget("firstMap", "field1");
String secondMap = jedis.hget("twoMap", "field2");
System.out.println(firstMap);
System.out.println(secondMap);
jedis.close();
}
/**
* Redis 查询所有 key
*/
@Test
public void test3(){
Jedis jedis = new Jedis();
Set<String> keys = jedis.keys("*");
for (String key : keys) {
System.out.println(key);
}
jedis.close();
}
/**
* Redis 存储对象实体
*/
@Test
public void test4(){
User user = new User(1,"张三",18);
Jedis jedis = new Jedis();
//将User实体转换成JSONString,存入redis
String strUser = JSONObject.toJSONString(user);
jedis.set("user",strUser);
//将User实体取出,并打印出来
String user1 = jedis.get("user");
User user2 = JSON.parseObject(user1, User.class);
System.out.println(user2);
jedis.close();
}
/**
* Redis存储对象集合
*/
@Test
public void test5(){
User user1 = new User(1,"闫",23);
User user2 = new User(2,"创",24);
User user3 = new User(3,"业",25);
List<User> userList = new ArrayList<>();
userList.add(user1);
userList.add(user2);
userList.add(user3);
//将集合转变为JSONString
String strUserList = JSONObject.toJSONString(userList);
Jedis jedis = new Jedis();
jedis.set("userList",strUserList);
//取出
String userList1 = jedis.get("userList");
List<User> users = JSON.parseArray(userList1, User.class);
System.out.println(users);
jedis.close();
}
}
二、javaWeb 操作 Redis
首先添加RedisUtil工具类(简约版),注释很清楚,就不多说了
/**
* Created by yan on 2019/2/18.
*/
public class RedisUtil {
//服务器ip地址
private static String REDIS_HOST = "127.0.0.1";
//Redis端口号
private static int REDIS_PORT = 6379;
//Redis密码
//private static String redisAuth = "123456";
//Redis实例最大连接数,默认值为 8,(-1代表无限制,如果破pool分配完MAX_ACTIVE实例 状态为exhausted)
private static int REDIS_MAX_ACTIVE = 100;
//一个pool中最多有多少idle(空闲)的实例,默认值 8
private static int REDIS_MAX_IDLE = 8;
//等待连接最大时间(毫秒),默认值 -1(用不超时),(超过MAX_WAIT抛出JedisConnectionException)
private static int REDIS_MAX_WAIT = 10000;
//连接超时时间,默认值 0 用不超时
private static int REDIS_TIME_OUT = 0;
//在borrow一个jedis实例时,是否提前进行validate操作;如果为true,则得到的jedis实例均是可用的
private static boolean REDIS_TEST_ON_BORROW = true;
private static JedisPool jedisPool = null;
/**
* 初始化redis连接池配置
*/
static{
try {
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
jedisPoolConfig.setMaxIdle(REDIS_MAX_IDLE);
jedisPoolConfig.setMaxWaitMillis(REDIS_MAX_WAIT);
jedisPoolConfig.setMaxTotal(REDIS_MAX_IDLE);
jedisPoolConfig.setTestOnBorrow(REDIS_TEST_ON_BORROW);
jedisPool = new JedisPool(jedisPoolConfig,REDIS_HOST,REDIS_PORT,REDIS_TIME_OUT);
} catch (Exception e){
e.printStackTrace();
}
}
/**
* 获取Redis实例
*/
public static synchronized Jedis getJedis(){
try {
if (jedisPool != null)
{
Jedis resource = jedisPool.getResource();
return resource;
}
else
{
return null;
}
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
/**
* 释放Redis资源(关流)
*/
public static void closeJedisResource(final Jedis jedis){
if(jedis != null){
jedis.close();
}
}
/**
* 设置key过期时间
*/
public static void expire(String key,int seconds){
if(seconds <= 0){
return;
}
Jedis jedis = jedisPool.getResource();
jedis.expire(key,seconds);
}
}
2、controller
@RequestMapping("selectUserList")
@ResponseBody
public List<User> selectUserList(){
List<User> userList = redisService.selectUser();
return userList;
}
3、serviceimpl.java
@Service
public class RedisServiceImpl implements RedisService {
@Autowired
private RedisMapper redisMapper;
@Override
public List<User> selectUser() {
//获取jedis实例
Jedis jedis = RedisUtil.getJedis();
//判断Redis中是否存在userList,没有-->则通过mapper查询数据库返回-->并储存在Redis中,
//有则从Redis缓存中直接返回
if(!jedis.exists("userList")){
try {
List<User> userList = redisMapper.selectUser();
//将User集合转化为String
String strUserList = JSONObject.toJSONString(userList);
//存放到Redis中
jedis.set("userList", strUserList);
//设置Key过期时间,600s
RedisUtil.expire("userList", 600);
return userList;
} finally {
//关流,还不如直接close()呢
RedisUtil.closeJedisResource(jedis);
}
}else{
try {
//从Redis中取出userList,并转换为集合
String strUserList = jedis.get("userList");
List<User> userList = JSONObject.parseArray(strUserList,User.class);
return userList;
} finally {
RedisUtil.closeJedisResource(jedis);
}
}
}
}
3、mapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mr.good.mapper.RedisMapper">
<select id="selectUser" resultType="user">
select * from t_user
</select>
</mapper>
可以debug serviceimpl.java 查看Redis缓存效果!
本文转载来自https://blog.csdn.net/weixin_44030218/article/details/87553193