引入依赖
org.springframework.boot spring-boot-starter-data-redis1234
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 list1 = new ArrayList<>(); list1.add("a1"); list1.add("a2"); list1.add("a3"); List list2 = new ArrayList<>(); list2.add("b1"); list2.add("b2"); list2.add("b3"); redisTemplate.opsForList().leftPush("listkey1", list1); redisTemplate.opsForList().rightPush("listkey2", list2); List resultList1 = (List) redisTemplate.opsForList().leftPop("listkey1"); List resultList2 = (List) redisTemplate.opsForList().rightPop("listkey2"); System.out.println("resultList1:" + resultList1); System.out.println("resultList2:" + resultList2); return "成功"; }123456789101112131415161718192021
Hash结构,保存和读取map
/** * Hash结构,保存和读取map */ @GetMapping("mapredisdemo") public String mapredisdemo() { Map 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 resultMap = redisTemplate.opsForHash().entries("map1"); List reslutMapList = redisTemplate.opsForHash().values("map1"); Set 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 "成功"; }12345678910111213141516171819202122
保存和读取Set
/** * 保存和读取Set */ @GetMapping("setredisdemo") public String getredisdemo() { SetOperations set = redisTemplate.opsForSet(); set.add("key1", "value1"); set.add("key1", "value2"); set.add("key1", "value3"); Set resultSet = redisTemplate.opsForSet().members("key1"); System.out.println("resultSet:" + resultSet); return "resultSet:" + resultSet; }12345678910111213
保存和读取zset
/** * 保存和读取zset */ @GetMapping("zsetredisdemo") public String zsetredisdemo() { ZSetOperations.TypedTuple objectTypedTuple1 = new DefaultTypedTuple<>("zset-5", 9.6); ZSetOperations.TypedTuple objectTypedTuple2 = new DefaultTypedTuple<>("zset-6", 9.9); Set> 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 "成功"; }1234567891011121314
完整示例代码
import org.springframework.beans.factory.annotation.Autowired;import org.springframework.data.redis.core.DefaultTypedTuple;import org.springframework.data.redis.core.RedisTemplate;import org.springframework.data.redis.core.SetOperations;import org.springframework.data.redis.core.ZSetOperations;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RestController;import java.util.*;import java.util.concurrent.TimeUnit;@RestControllerpublic class ReidsDemo { @Autowired RedisTemplate redisTemplate; /** * 指定key的失效时间 */ @GetMapping("expire") public void expire(String key, long time) { //参数一:key //参数二:睡眠时间 //参数三:睡眠时间单位 TimeUnit.DAYS 天 TimeUnit.HOURS 小时 。。。 redisTemplate.expire(key, time, TimeUnit.MINUTES); } /** * 根据key获取过期时间 */ @GetMapping("getexpire") public long getExpire(String key) { Long expire = redisTemplate.getExpire(key); return expire; } /** * 判断key是否存在 */ @GetMapping("haskey") public boolean hasKey(String key) { return redisTemplate.hasKey(key); } /** * 根据key删除reids中缓存数据 */ @GetMapping("delredisbykey") public void delete(String key) { redisTemplate.delete(key); } /** * 保存和读取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 */ @GetMapping("listredisdemo") public String listredisdemo() { List list1 = new ArrayList<>(); list1.add("a1"); list1.add("a2"); list1.add("a3"); List list2 = new ArrayList<>(); list2.add("b1"); list2.add("b2"); list2.add("b3"); redisTemplate.opsForList().leftPush("listkey1", list1); redisTemplate.opsForList().rightPush("listkey2", list2); List resultList1 = (List) redisTemplate.opsForList().leftPop("listkey1"); List resultList2 = (List) redisTemplate.opsForList().rightPop("listkey2"); System.out.println("resultList1:" + resultList1); System.out.println("resultList2:" + resultList2); return "成功"; } /** * Hash结构,保存和读取map */ @GetMapping("mapredisdemo") public String mapredisdemo() { Map map = new HashMap<>(); map.put("key1", "value1"); map.put("key2", "value2"); map.put("key3", "value3"); redisTemplate.opsForHash().putAll("map1", map); Map resultMap = redisTemplate.opsForHash().entries("map1"); List reslutMapList = redisTemplate.opsForHash().values("map1"); Set 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 */ @GetMapping("setredisdemo") public String getredisdemo() { SetOperations set = redisTemplate.opsForSet(); set.add("key1", "value1"); set.add("key1", "value2"); set.add("key1", "value3"); Set resultSet = redisTemplate.opsForSet().members("key1"); System.out.println("resultSet:" + resultSet); return "resultSet:" + resultSet; } /** * 保存和读取zset */ @GetMapping("zsetredisdemo") public String zsetredisdemo() { ZSetOperations.TypedTuple objectTypedTuple1 = new DefaultTypedTuple<>("zset-5", 9.6); ZSetOperations.TypedTuple objectTypedTuple2 = new DefaultTypedTuple<>("zset-6", 9.9); Set> 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 "成功"; }}123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
序列化
直接粘贴在项目中即可
import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.data.redis.connection.RedisConnectionFactory;import org.springframework.data.redis.core.RedisTemplate;import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;import org.springframework.data.redis.serializer.RedisSerializer;import org.springframework.data.redis.serializer.StringRedisSerializer;/**序列化 */@Configurationpublic class MyRedisConfig { @Bean(name = "redisTemplate") public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory){ RedisTemplate redisTemplate = new RedisTemplate<>(); //参照StringRedisTemplate内部实现指定序列化器 redisTemplate.setConnectionFactory(redisConnectionFactory); redisTemplate.setKeySerializer(keySerializer()); redisTemplate.setHashKeySerializer(keySerializer()); redisTemplate.setValueSerializer(valueSerializer()); redisTemplate.setHashValueSerializer(valueSerializer()); return redisTemplate; } private RedisSerializer keySerializer(){ return new StringRedisSerializer(); } //使用Jackson序列化器 private RedisSerializer valueSerializer(){ return new GenericJackson2JsonRedisSerializer(); } }
读者福利:关注小编+私信回复【项目】获取整理好的100+个Java项目视频+源码+笔记
原文:blog.csdn.net/xiaozhezhe0470/article/details/111870478