创建maven 项目 在pom.xml 中导入坐标
<!--Redis-->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
简单测试是否连接成功
public void test1(){
JedisPool jedisPool = new JedisPool("127.0.0.1", 6379); //第一个参数为 安装redis ip地址 第二个参数为端口号
String ping = jedis.ping();
System.out.println(ping);
String k1 = jedis.get("k1"); //获取key 为k1 的值
System.out.println(k1);
jedis.close();
}
运行结果如下 (连接成功)
列表查询中 redis 的使用(redis 一般在service 层中使用)
业务场景(定时刷新排行榜 )
1 controller层 代码
//controller 层中 代码如下
@RequestMapping("queryAll")
@ResponseBody
public List<User> queryAll(){
return userService.queryAll();
}
2 service层 代码
public List<User> queryAll() {
Jedis jedis = new Jedis("127.0.0.1", 6379);
String userList = jedis.get("userList"); //先判断redis 中是否有key 为 userList 的值
if(userList==null){ //没有 就调用mapper 去数据库中进行查询 (mapper 代码省略)
List<User> users = userMapper.queryAll();
String s = JSONObject.toJSONString(users); // 将 数据转为 json 串
jedis.setex("userList",10,s);
//设置过期时间 10秒后过期 (保证和数据库数据同步 )
jedis.close(); // 关闭连接
return users;
}else{
List<User> userList2 = JSON.parseArray(userList, User.class);
//将redis 中的数据转为list 集合 直接返回 不用再去数据库中进行查询
return userList2;
}
}
根据id 主键 (可以是其他条件)查询时 redis 的使用
业务场景(频繁查询操作)
controller层 代码
@RequestMapping("queryById")
@ResponseBody
public User queryById(Integer usId){
User user = userService.queryById(usId);
return user;
}
service层 代码
public User queryById(Integer usId) {
Jedis jedis = new Jedis("127.0.0.1", 6379); //创建连接
String user = jedis.hget("userMap", String.valueOf(usId)); //先判断redis 中是否存在 key 为userMap
的值
if(user==null){ //如果不存在
User queryUser= userMapper.queryById(usId); //调用mapper 去数据库进行查询
String user1 = JSONObject.toJSONString(queryUser); // 转为json 格式
jedis.hset("userMap",String.valueOf(queryUser.getUsId()),user1); // 将数据保存到redis 中
jedis.close(); // 关闭连接
return queryUser;
}else{
User user2 = JSON.parseObject(user, User.class);
//将redis 中的数据转为指定格式 直接返回 不用再去数据库中进行查询
return user2;
}
}
保存操作 进行数据的保存 redis 的使用
controller层 代码
业务场景(保存后,频繁查询 比如订单)
@RequestMapping("save")
@ResponseBody
public String save(User user ){
userService.save(user);
return"ok";
}
service层 代码
public void save(User user) {
userMapper.save(user); //调用mapper 保存数据到数据库
Jedis jedis = new Jedis("127.0.0.1", 6379); //创建连接
String user1 = JSONObject.toJSONString(user); //转为json 格式
jedis.hset("userMap",String.valueOf(user.getUsId()),user1); // 将数据保存到redis 中
jedis.close(); // 关闭连接 同时保存到redis 中 下次查询直接从redis 中获取
}
通过 依赖注入 jedisPool 避免频繁创建Jedis
一 ,在spring 配置文件中 配置Bean
<bean id="jedisPool" class="redis.clients.jedis.JedisPool">
<!--通过构造器注入 参数-->
<constructor-arg name="host" value="127.0.0.1"/>
<constructor-arg name="port" value="6379"/>
</bean>
二, 在service 层 注入
@Autowired
private JedisPool jedisPool;
三, 使用
Jedis jedis = jedisPool.getResource();