前置工作
- 项目的pom.xml 文件中引入了spring-boot-starter-data-redis
- 文件中引入
@Autowired
private StringRedisTemplate redisTemplate;
Redis 常用的五种数据结构对应的操作
redisTemplate.opsForValue(); //操作字符串
redisTemplate.opsForHash(); //操作hash
redisTemplate.opsForList(); //操作list
redisTemplate.opsForSet(); //操作set
redisTemplate.opsForZSet(); //操作有序set
1.操作字符串
// 1. 为多个键别设置他们的值:
Map<String,String> maps = new HashMap<String, String>();
maps.put("multi1","11");
maps.put("multi2","22");
maps.put("multi3","33");
redisTemplate.opsForValue().multiSet(maps)
List<String> keys = new ArrayList<String>();
keys.add("multi1");
keys.add("multi2");
keys.add("multi3");
redisTemplate.opsForValue().multiGet(keys);
// 2. 返回key 所对应的value 的长度
redisTemplate.opsForValue().size("key")
3//.截取 key 所对应的 value 字符串
redisTemplate.opsForValue().get("key",0,5)
2.操作List
1. // 从左边添加元素
String [] arrs = new String[]{"java", "python", "go", "ruby"};
redisTemplate.opsForList().leftPushAll("list", arrs)
2.// 返回列表键对应的元素,0是第一个元素
redisTemplate.opsForList().range("list",0,-1) // 返回值["java", "python", "go", "ruby"]
3. // 删除元素 count=0删除给定元素
redisTemplate.opsForList().remove("list", 0,"python");
4.// 在列表中 index 位置设置value 值
redisTemplate.opsForList().set("list",1,"setValue");
5. // 根据下标获取列表值,
redisTemplate.opsForList().index("list",0);
3.操作 Hash
// 1.插入map
Map<String,Object> myMap = new HashMap<String,Object>();
myMap.put("key1", "张三");
myMap.put("key2", "李四");
myMap.put("key3", "王五");
myMap.put("key4", "张三");
redisTemplate.opsForHash().putAll("map1",myMap);
// 2.显示给定key对应的数据
redisTemplate.opsForHash().entries("map1"));
// 3.判断 hashkey 是否存在
redisTemplate.opsForHash().hasKey("map1","key2");
// 4.获取 key 所对应 的散列表的key
redisTemplate.opsForHash().keys("map1")
// 5.根据键值,获取整个hash存储的值
redisTemplate.opsForHash().values("map1")
// 6. 使用 Cursor 在key的hash 中迭代
Cursor<Map.Entry<Object,Object>> cursor = redisTemplate.opsForHash().scan("map1", ScanOptions.NONE);
while(cursor.hasNext()){
Map.Entry<Object,Object> entry = cursor.next();
System.out.println("hashkey值:" + entry.getKey()+":"+entry.getValue());
}
4.操作 Set
// 1. 添加元素,返回集合个数
String[] arrays = new String[]{"str1","str2"};
redisTemplate.opsForSet().add("setTest", arrays);
// 2.移除元素
String[] rm= new String[]{"strarr1","str2","time1", "time2", "rain"};
System.out.println(redisTemplate.opsForSet().add("setRmTest", rm));
redisTemplate.opsForSet().remove("setRmTest",rm[1]);
// 3.返回集合中的所有成员
System.out.println(redisTemplate.opsForSet().members("setTest"));
// 4. key 无序集合合并
redisTemplate.opsForSet().union("setTest","setRmTest");
// 5.遍历 set
Cursor<String> curosr = redisTemplate.opsForSet().scan("setRmTest", ScanOptions.NONE);
while(curosr.hasNext()){
System.out.println("遍历 set:" + curosr.next());
}
// 6.无序集合差集 (返回所有第一个集合中与其他集合不一样的元素)
redisTemplate.opsForSet().members("setTest");
redisTemplate.opsForSet().members("setRmTest");
redisTemplate.opsForSet().difference("setTest","setRmTest");
5.操作 ZSet
// 1.新增一个有序集合
redisTemplate.opsForZSet().add("zset1","小王",99);
redisTemplate.opsForZSet().randomMember("zset1");
// 2.显示有序集合所有的元素
System.out.println("升序返回集合所有成员:" + redisTemplate.opsForZSet().range("zset1",0,-1));
// 3.升序返回有序集合中指定成员的排名,分数值从小到大
System.out.println(redisTemplate.opsForZSet().rank("zset1","小王")); // 2
// 4.降序返回有序集合中指定成员的排名,分数值从大到小
System.out.println(redisTemplate.opsForZSet().reverseRank("zset1","小王")); // 0
// 5.降序返回有序集合指定区域的成员 (分数从大到小)
System.out.println("降序返回有序集合" + redisTemplate.opsForZSet().reverseRange("zset1",0,-1));
// 6.获取有序集合成员数
redisTemplate.opsForZSet().size("zset1");
redisTemplate.opsForZSet().zCard("zset1");
spring-boot-starter-data-redis 学习笔记