list = new ArrayList<>();
list.add("userName");
list.add("userId");
redisTemplate.watch(list);
等价于
WATCH userName userId
```
取消 WATCH 命令对所有 key 的监视。
```
redisTemplate.unwatch();
等价于
UNWATCH
```
### 示例代码
```
package com.advanced.controller;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit;
/**
* 开发公司:个人
* 版权:个人
*
* IndexController
*
* @author 刘志强
* @created Create Time: 2019/5/23
*/
@Controller
public class IndexController {
@Autowired
public RedisTemplate redisTemplate;
private Logger logger = LoggerFactory.getLogger(getClass());
// 重定向至首页
@GetMapping("/")
public void root(HttpServletResponse httpServletResponse) throws IOException {
httpServletResponse.sendRedirect("/index");
}
/**
*
* @param type 0 开启事务 1 放弃事务
* @return
*/
@GetMapping("/affair")
@ResponseBody
public Map affair(int type) {
logger.info("=========================================事务 开始======================================");
/**
* 开启一个事务
*/
redisTemplate.multi();
redisTemplate.opsForValue().set ("11","11");
redisTemplate.opsForValue().set("22","22");
redisTemplate.opsForValue().set("33","33");
redisTemplate.opsForValue().get("11");
redisTemplate.opsForValue().get("22");
redisTemplate.opsForValue().get("33");
if (type == 0) {
/**
* 执行所有事务块内的命令。
*/
List list = redisTemplate.exec();
list.forEach(o -> logger.info(o));
} else {
/**
* 取消事务,放弃执行事务块内的所有命令。如果正在使用 WATCH 命令监视某个(或某些) key,那么取消所有监视,等同于执行命令 UNWATCH 。
*/
}
return null;
}
@GetMapping("/index")
@ResponseBody
public Map index() {
logger.info("=========================================get,set,del 开始======================================");
/**
* 将字符串值 value 关联到 key 存储至redis.如果redis库中有相同的key,key将被覆盖
* 第一个参数 key
* 第二个参数 value
* 等同 SET
*/
redisTemplate.opsForValue().set("userName","Liuzhiqiang");
/**
* 将值 value 关联到 key ,并设置 key 的生存时间。
* 第一个参数 key
* 第二个参数 value
* 第三个参数 生存时间
* 第四个参数 生存时间类型
* 等同 SETEX
*/
redisTemplate.opsForValue().set("userId",12, 10, TimeUnit.SECONDS);
logger.info(String.valueOf(redisTemplate.opsForValue().get("userId")));
/**
* 根据key从redis中取出value
* 第一个参数 key
* 等同 GET
*/
logger.info((String) redisTemplate.opsForValue().get("userName"));
/**
* 根据key从redis中取出截取后value,value只能是字符串
* 第一个参数 key
* 第二个参数开始位置
* 第三个参数结束位置 -1 为最后一位, -2为倒数第二位,以此类推
*/
logger.info(redisTemplate.opsForValue().get("userName",3, -1));
/**
*给key重新分配一个value并返回旧值
* 第一个参数key
* 第二个参数新的value
*/
String str = (String) redisTemplate.opsForValue().getAndSet("userName", "wangyan");
logger.info(str);
logger.info((String) redisTemplate.opsForValue().get("userName"));
/**
* 根据key从redis库中删除
* 第一个参数 key
* 等同 DEL
*/
redisTemplate.delete("userName");
logger.info((String) redisTemplate.opsForValue().get("userName"));
List list = new ArrayList<>();
list.add("userName");
list.add("userId");
/**
* 批量删除
*/
redisTemplate.delete(list);
logger.info((String) redisTemplate.opsForValue().get("userName"));
logger.info((String) redisTemplate.opsForValue().get("userId"));
logger.info("=========================================get,set,del 结束======================================");
return null;
}
}
```