springboot 自己是实现了一套 redis 缓存框架, 地址: https://www.cnblogs.com/huanggy/p/9473822.html, 通过配置即可轻松愉快地实现
某些特殊场合还是需要我们自己写入 redis, 首先需要在 springboot 项目整合 redis, 整合方法: https://www.cnblogs.com/huanggy/p/9473822.html
1, 注入 StringRedisTemplate
@Autowired private StringRedisTemplate redis;
2, 通用操作
// 检查 key 是否存在, 返回布尔值 redis.hasKey("test"); // 通过 key 删除 redis.delete("test"); // 获取过期时间 redis.getExpire("test") // 获取过期时间并换算成指定单位 redis.getExpire("test",TimeUnit.SECONDS) // 设置过期时间 redis.expire("test",1000 , TimeUnit.SECONDS);
3, Value 操作
// 设置值 redis.opsForValue().set("userName","Marry"); // 设置值同时设置过期时间, 3600 秒 redis.opsForValue().set("userAge", 3600, TimeUnit.SECONDS); // 获取值 redis.opsForValue().get("userName"); // 自减 1 redis.boundValueOps("age").increment(-1) // 自加 1 redis.boundValueOps("age").increment(-1)
4, List 操作
// 添加(从右添加, 可以理解为从尾部添加) redis.opsForList().rightPush("myList","1"); redis.opsForList().rightPush("myList","2"); redis.opsForList().rightPush("myList","3"); // 添加(从左添加, 可以理解为从头部添加) redis.opsForList().leftPush("myList","0"); redis.opsForList().leftPush("myList","-1"); // 获取 list 所有元素(0 表示第一个, -1 表示所有) redis.opsForList().range("myList",0,-1) // 获取 list 前5个元素(0,5 前闭后开) redis.opsForList().range("myList",0,5) // 添加一个 list List<String> strList = new ArrayList<>(); strList.add("4); strList.add("5); redis.opsForList().rightPushAll("MyList", strList); // 删除最先进入 myList 的值为 "1"的元素(因为List 可以重复, 一个值可能会出现多次) redis.opsForList().remove("myList",1, "1"); // 删除所有值是 "1" 的元素 redis.opsForList().remove("myList",0, "1");
5, Hash 操作
// 单独添加属性 姓名(后面的会覆盖前面的) redis.opsForHash().put("user:10001", "userName", "Marry"); // 单独添加属性 年龄 redis.opsForHash().put("user:10001", "userAge", 20); // 添加整个对象 Map<String, String> map = new HashMap<>(); map.put("userName", "Rose"); map.put("userAge", 20); redis.opsForHash().putAll("user:10002", map); // 获取 map 对象所有键值对 Map<Object, Object> map = redis.opsForHash().entries("user:10001"); // 获取 map 对象的某一个 key 的值 redis.opsForHash().get("userName:10001", "userName"); // 获取所有 key Set<Object> set = redis.opsForHash().keys("user:10001"); // 获取所有 value List<Object> list = redis.opsForHash().values("user:10001"); // 删除 map 对象的某一个 key-value redis.opsForHash().get("userName:10002", "userAge");