目录
Springboot之RedisTemplate和StringRedisTemplate的区别
RedisTemplate五种数据结构的操作
- redisTemplate.opsForValue(); //操作字符串
- redisTemplate.opsForHash(); //操作hash
- redisTemplate.opsForList(); //操作list
- redisTemplate.opsForSet(); //操作set
- redisTemplate.opsForZSet(); //操作有序zset
RedisTemplate方法
判断key是否存在
/**
* 判断key是否存在
*/
@GetMapping("haskey")
public boolean hasKey(String key) {
return redisTemplate.hasKey(key);
}
根据key删除reids中缓存数据
/**
* 根据key删除reids中缓存数据
*/
@GetMapping("delredisbykey")
public void delete(String key) {
redisTemplate.delete(key);
}
指定的key的失效时间
/**
* 指定key的失效时间
*/
@GetMapping("expire")
public void expire(String key, long time) {
//参数一:key
//参数二:睡眠时间
//参数三:睡眠时间单位 TimeUnit.DAYS 天 TimeUnit.HOURS 小时 。。。
redisTemplate.expire(key, time, TimeUnit.MINUTES);
}
根据key获取过期时间
/**
* 根据key获取过期时间
*/
@GetMapping("getexpire")
public long getExpire(String key) {
Long expire = redisTemplate.getExpire(key);
return expire;
}
String类型
spring boot整合redis ---- RedisTemplate的使用
spring boot整合redis ---- RedisTemplate的使用
Balmy
Balmy
引入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
1234复制代码
RedisTemplate五种数据结构的操作
redisTemplate.opsForValue(); //操作字符串redisTemplate.opsForHash(); //操作hashredisTemplate.opsForList(); //操作listredisTemplate.opsForSet(); //操作setredisTemplate.opsForZSet(); //操作有序zset
RedisTemplate方法讲解
判断key是否存在
/**
* 判断key是否存在
*/
@GetMapping("haskey")
public boolean hasKey(String key) {
return redisTemplate.hasKey(key);
}
获取指定的key的失效时间
/**
* 指定key的失效时间
*/
@GetMapping("expire")
public void expire(String key, long time) {
//参数一:key
//参数二:睡眠时间
//参数三:睡眠时间单位 TimeUnit.DAYS 天 TimeUnit.HOURS 小时 。。。
redisTemplate.expire(key, time, TimeUnit.MINUTES);
}
根据key获取过期时间
/**
* 根据key获取过期时间
*/
@GetMapping("getexpire")
public long getExpire(String key) {
Long expire = redisTemplate.getExpire(key);
return expire;
}
根据key删除reids中缓存数据
/**
* 根据key删除reids中缓存数据
*/
@GetMapping("delredisbykey")
public void delete(String key) {
redisTemplate.delete(key);
}
保存和读取String
/**
* 保存和读取String
*/
@GetMapping("stringredisdemo")
public String stringredisdemo() {
//设置过期时间为1分钟
redisTemplate.opsForValue().set("key1", "value1", 1, TimeUnit.MINUTES);
redisTemplate.opsForValue().set("key2", "value2");
redisTemplate.opsForValue().set("key3", "value3");
//读取redis数据
String result1 = redisTemplate.opsForValue().get("key1").toString();
String result2 = redisTemplate.opsForValue().get("key2").toString();
String result3 = redisTemplate.opsForValue().get("key3").toString();
System.out.println("缓存结果为:result:" + result1 + " " + result2 + " " + result3);
return "缓存结果为:result:" + result1 + " " + result2 + " " + result3;
}
list类型
/**
* 保存和读取list
*/
@GetMapping("listredisdemo")
public String listredisdemo() {
List<String> list1 = new ArrayList<>();
list1.add("a1");
list1.add("a2");
list1.add("a3");
List<String> list2 = new ArrayList<>();
list2.add("b1");
list2.add("b2");
list2.add("b3");
redisTemplate.opsForList().leftPush("listkey1", list1);
redisTemplate.opsForList().rightPush("listkey2", list2);
List<String> resultList1 = (List<String>) redisTemplate.opsForList().leftPop("listkey1");
List<String> resultList2 = (List<String>) redisTemplate.opsForList().rightPop("listkey2");
System.out.println("resultList1:" + resultList1);
System.out.println("resultList2:" + resultList2);
return "成功";
}
Hash类型
/**
* Hash结构,保存和读取map
*/
@GetMapping("mapredisdemo")
public String mapredisdemo() {
Map<String, String> map = new HashMap<>();
map.put("key1", "value1");
map.put("key2", "value2");
map.put("key3", "value3");
map.put("key4", "value4");
map.put("key5", "value5");
redisTemplate.opsForHash().putAll("map1", map);
Map<String, String> resultMap = redisTemplate.opsForHash().entries("map1");
List<String> reslutMapList = redisTemplate.opsForHash().values("map1");
Set<String> resultMapSet = redisTemplate.opsForHash().keys("map1");
String value = (String) redisTemplate.opsForHash().get("map1", "key1");
System.out.println("value:" + value);
System.out.println("resultMapSet:" + resultMapSet);
System.out.println("resultMap:" + resultMap);
System.out.println("resulreslutMapListtMap:" + reslutMapList);
return "成功";
}
set类型
/**
* 保存和读取Set
*/
@GetMapping("setredisdemo")
public String getredisdemo() {
SetOperations<String, String> set = redisTemplate.opsForSet();
set.add("key1", "value1");
set.add("key1", "value2");
set.add("key1", "value3");
Set<String> resultSet = redisTemplate.opsForSet().members("key1");
System.out.println("resultSet:" + resultSet);
return "resultSet:" + resultSet;
}
Zset类型
/**
* 保存和读取zset
*/
@GetMapping("zsetredisdemo")
public String zsetredisdemo() {
ZSetOperations.TypedTuple<Object> objectTypedTuple1 = new DefaultTypedTuple<>("zset-5", 9.6);
ZSetOperations.TypedTuple<Object> objectTypedTuple2 = new DefaultTypedTuple<>("zset-6", 9.9);
Set<ZSetOperations.TypedTuple<Object>> tuples = new HashSet<>();
tuples.add(objectTypedTuple1);
tuples.add(objectTypedTuple2);
System.out.println(redisTemplate.opsForZSet().add("zset1", tuples));
System.out.println(redisTemplate.opsForZSet().range("zset1", 0, -1));
return "成功";
}
Springboot之RedisTemplate和StringRedisTemplate的区别
二者区别
1. 两者的关系是StringRedisTemplate继承RedisTemplate。
2. 两者的数据是不共通的;
StringRedisTemplate只能管理StringRedisTemplate里面的数据,RedisTemplate只能管理RedisTemplate中的数据。
3. 序列化方式不同
StringRedisTemplate默认采用的是String的序列化策略,保存的key和value都是采用此策略序列化保存的。
RedisTemplate默认采用的是JDK的序列化策略,保存的key和value都是采用此策略序列化保存的。
StringRedisTemplate方法的操作
@SpringBootTest
class SpringbootRedis01ApplicationTests {
@Autowired
// private RedisTemplate redisTemplate;
private StringRedisTemplate stringRedisTemplate;
@Test
void contextLoads() {
Set<String> keys = stringRedisTemplate.keys("*");
keys.forEach(item-> {
System.out.println(item);
});
System.out.println(123);
}
@Test
public void test01(){
DataType name = stringRedisTemplate.type("name");
System.out.println(name);
Boolean name1 = stringRedisTemplate.delete("name");
System.out.println(name1);
Boolean name2 = stringRedisTemplate.hasKey("name");
System.out.println(name2);
stringRedisTemplate.opsForValue().set("code","5656");
stringRedisTemplate.expire("code",300, TimeUnit.SECONDS);
Long code = stringRedisTemplate.getExpire("code");
System.out.println(code);
}
@Test
void test02(){
stringRedisTemplate.opsForValue().set("id","1");//value对于string操作
String id = stringRedisTemplate.opsForValue().get("id");
System.out.println(id);
stringRedisTemplate.opsForValue().set("code01","5555",30,TimeUnit.SECONDS);
Long expire = stringRedisTemplate.getExpire("code01",TimeUnit.SECONDS);
System.out.println(expire);
}
@Test
// list操作
void test03(){
stringRedisTemplate.opsForList().leftPush("name","andy");
stringRedisTemplate.opsForList().leftPushAll("names","cxa","hmd","cmy","she");
String names = stringRedisTemplate.opsForList().leftPop("name");
System.out.println(names);
List<String> list = new ArrayList<>();
list.add(0,"老大");
list.add(1,"老二");
list.add(2,"老三");
list.add(3,"老四");
stringRedisTemplate.opsForList().leftPushAll("ranking",list);
List<String> ranking = stringRedisTemplate.opsForList().range("ranking", 0, -1);
ranking.forEach(item -> System.out.println(item));
}
@Test
// set操作
void test04(){
stringRedisTemplate.opsForSet().add("user","曹轩昂","郝梦迪","曹轩昂","郝梦迪");//去重
Set<String> user = stringRedisTemplate.opsForSet().members("user");
user.forEach(i -> System.out.println(i));
}
@Test
// hash类型操作
void test05() {
stringRedisTemplate.opsForHash().put("stu","name","anqi");
Object o = stringRedisTemplate.opsForHash().get("stu", "name");
System.out.println(o);
stringRedisTemplate.opsForHash().put("person","username","chenjinglong");
stringRedisTemplate.opsForHash().put("person","userAge","22");
stringRedisTemplate.opsForHash().put("data","code","20000");
stringRedisTemplate.opsForHash().put("data","msg","操作成功");
stringRedisTemplate.opsForHash().put("data","data","100");
//查看值
List<Object> person = stringRedisTemplate.opsForHash().values("data");
person.forEach(item-> System.out.println(item));
//查看值
Set<Object> stu = stringRedisTemplate.opsForHash().keys("data");
stu.forEach(item-> System.out.println(item));
}
@Test
// zset操作
void test06(){
stringRedisTemplate.opsForZSet().add("RankingList","CXA",22);
stringRedisTemplate.opsForZSet().add("RankingList","HMD",22);
stringRedisTemplate.opsForZSet().add("RankingList","CMY",25);
stringRedisTemplate.opsForZSet().add("RankingList","SHE",25);
Set<String> rankingList = stringRedisTemplate.opsForZSet().range("RankingList", 0, -1);
rankingList.forEach(System.out::println);
Set<ZSetOperations.TypedTuple<String>> rankingList01 = stringRedisTemplate.opsForZSet().rangeByScoreWithScores("RankingList", 22, 23);
rankingList01.forEach(item->{
System.out.println("item:"+item);
System.out.println(item.getValue());
System.out.println(item.getScore());
});
}
@Test
void test07(){
ArrayList<String> list01 = new ArrayList<String>();
list01.add("java");
list01.add("c");
list01.add("python");
list01.add("golang");
redisTemplate.opsForList().leftPush("key01", list01);
Object key01 = redisTemplate.opsForList().leftPop("key01");
System.out.println(key01);
}
}