欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 建筑 > Redis操作常用API

Redis操作常用API

2025/8/1 4:50:01 来源:https://blog.csdn.net/qq_42108331/article/details/131455434  浏览:    关键词:Redis操作常用API

说明:Redis应用于java项目中,操作Redis数据可以使用API,相较于命令行更方便。使用前,需先添加依赖。

	<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId><version>2.7.3</version></dependency>

自动装配一个RedisTemplate对象

    @Autowiredprivate RedisTemplate<String,String> redisTemplate;

String操作

【方法一】添加数据

添加一条key为username,值为zhangsan的String类型数据

	// 1.添加一个数据redisTemplate.opsForValue().set("username", "zhangsan");

在这里插入图片描述

【方法二】添加时限性数据

添加一条key为password,值为123456,有效期为1分钟的String类型数据

	// 2.添加一个有时效性的数据redisTemplate.opsForValue().set("password", "123456", 1, TimeUnit.MINUTES);

在这里插入图片描述

【方法三】对数值型的key进行自增/自减

设置一条数据,key为age,初始值为20;后自增10,自减5

	// 3.对一个数据进行加减操作redisTemplate.opsForValue().set("age", String.valueOf(20));redisTemplate.opsForValue().increment("age", 10);redisTemplate.opsForValue().decrement("age", 5);

在这里插入图片描述

【方法四】设置一对值,如果存在就返回true并设置成功,如果不存在就返回false并设置失败

	// 4.设置一对值,如果存在就返回true并设置成功,如果不存在就返回false并设置失败Boolean flag = redisTemplate.opsForValue().setIfPresent("username", "zhangsan_fix");System.out.println("flag = " + flag);

在这里插入图片描述

设置成功,value被修改成“zhangsan_fix”

在这里插入图片描述

【方法五】如果key存在就存储失败,不存在则存储成功

相当于setnx命令,可用来实现分布式锁;

	// 5.如果key存在就存储失败,不存在则存储成功Boolean flagAge = redisTemplate.opsForValue().setIfAbsent("age", "100");System.out.println("flagAge = " + flagAge);Boolean flagNewAge = redisTemplate.opsForValue().setIfAbsent("NewAge", "200");System.out.println("flagNewAge = " + flagNewAge);

age之前存入过,故设置失败;NewAge没有存入过,故能设置成功;

在这里插入图片描述

【方法六】存入对象数据

	// 6.存入一个自定义对象User user = User.builder().id(1).username("zhangsan").password("123456").build();redisTemplate.opsForValue().set("user", JSONUtil.toJsonStr(user));

User对象如下:

import lombok.Builder;
import lombok.Data;
import java.io.Serializable;@Data
@Builder
public class User implements Serializable {private Integer id;private String username;private String password;
}

在这里插入图片描述

Hash操作

【方法一】添加数据

	// 1.添加一个数据redisTemplate.opsForHash().put("user1", "username", "zhangsan");

在这里插入图片描述

【方法二】添加多个数据

	// 2.添加多个数据HashMap<String, String> map = new HashMap<>();map.put("username", "zhangsan");map.put("password", "123456");map.put("age", "20");redisTemplate.opsForHash().putAll("user2", map);

在这里插入图片描述

【方法三】获取数据

	// 3.获取指定Map中的指定key的值Object username = redisTemplate.opsForHash().get("user2", "username");System.out.println(username);

在这里插入图片描述

【方法四】获取所有Key列表

// 4.获取所有Key列表Set<Object> keys = redisTemplate.opsForHash().keys("user2");System.out.println("keys = " + keys);

在这里插入图片描述

【方法五】获取所有Value列表

	// 5.获取所有Value列表List<Object> values = redisTemplate.opsForHash().values("user2");System.out.println("values = " + values);

在这里插入图片描述

【方法六】获取所有键值对

	// 6.获取所有键值对Map<Object, Object> entries = redisTemplate.opsForHash().entries("user2");System.out.println("entries = " + entries);

在这里插入图片描述

【方法七】给Hash中的数值型字符进行自增/自减

	// 7.给Hash中的数值型字符进行自增/自减Long increment = redisTemplate.opsForHash().increment("user2", "age", 10);System.out.println("increment = " + increment);

返回自增/自减后的值;

在这里插入图片描述

【方法八】删除数据

	// 8.删除数据redisTemplate.opsForHash().delete("user2", "age");

age已删除

在这里插入图片描述

【方法九】判断某个键是否存在

	// 9.判断某个键是否存在Boolean flag = redisTemplate.opsForHash().hasKey("user2", "age");System.out.println("flag = " + flag);

在这里插入图片描述

【方法十】获取长度

	// 10.获取长度Long size = redisTemplate.opsForHash().size("user2");System.out.println("size = " + size);

在这里插入图片描述

List操作

【方法一】添加数据

	// 1.添加数据// 第一种方式:直接添加元素redisTemplate.opsForList().leftPush("list", "a");// 第二种方式:添加多个元素redisTemplate.opsForList().leftPushAll("list", "b", "c");// 第三种方式:添加一个ListList<String> list = new ArrayList<>();list.add("d");list.add("e");redisTemplate.opsForList().leftPushAll("list", list);

可以发现,最先push进去的元素,索引值越大;

在这里插入图片描述

【方法二】修改指定位置元素

	// 2.指定位置插入元素redisTemplate.opsForList().set("list",2,"a");

从0开始,将第2位修改成“a”;
在这里插入图片描述

【方法三】查询元素个数

	// 3.查询元素个数Long size = redisTemplate.opsForList().size("list");System.out.println("size = " + size);

list长度为5;

在这里插入图片描述

【方法四】范围查询元素列表

	// 4.范围查询元素列表List<String> range = redisTemplate.opsForList().range("list", 0, 3);System.out.println("range = " + range);

可以用这个API实现分页查询;

在这里插入图片描述

【方法五】弹出左边一个元素

	// 5.弹出左边一个元素String leftPop = redisTemplate.opsForList().leftPop("list");System.out.println("leftPop = " + leftPop);

因为前面都是用leftPush的方式添加元素的,所以最左边的元素就是最后添加的,也就是“e”;

在这里插入图片描述

【方法六】删除元素

	// 6.删除元素// count: 0表示删除全部,正数表示从左边开始删除,负数表示从右边开始删除redisTemplate.opsForList().remove("list", 1, "b");

上位左边,下为右边;

在这里插入图片描述

Set操作

【方法一】添加元素

	// 1.添加元素Long add = redisTemplate.opsForSet().add("set", "a", "b", "c");System.out.println("add = " + add);

在这里插入图片描述

【方法二】判断元素是否在

	// 2.判断元素是否在Boolean member = redisTemplate.opsForSet().isMember("set", "a");System.out.println("member = " + member);

“a”存在于set集合中;

在这里插入图片描述

【方法三】获取set集合

	// 3.获取set集合Set<String> set = redisTemplate.opsForSet().members("set");System.out.println("set = " + set);

members,成员的意思;

在这里插入图片描述

【方法四】计算两个set的交集

	// 4.计算两个set的交集redisTemplate.opsForSet().add("set2", "c", "d", "e");Set<String> intersection = redisTemplate.opsForSet().intersect("set", "set2");System.out.println("intersection = " + intersection);

set = [a, b, d],set2 = [d, e, f],交集是c

在这里插入图片描述

【方法五】计算两个set的并集

	// 5.计算两个set的并集Set<String> union = redisTemplate.opsForSet().union("set", "set2");System.out.println("union = " + union);

set = [a, b, d],set2 = [d, e, f],并集是,[a, b, c, d, e]

在这里插入图片描述

【方法六】删除元素

	// 6.删除元素redisTemplate.opsForSet().remove("set", "c");

set集合中的c已被删除

在这里插入图片描述

ZSet操作

【方法一】添加数据

	// 1.添加元素redisTemplate.opsForZSet().add("zset", "a", 1);redisTemplate.opsForZSet().add("zset", "b", 2);redisTemplate.opsForZSet().add("zset", "c", 3);redisTemplate.opsForZSet().add("zset", "d", 4);redisTemplate.opsForZSet().add("zset", "e", 5);redisTemplate.opsForZSet().add("zset", "f", 6);

在这里插入图片描述

【方法二】查询数据

	// 2.查询元素Set<String> range = redisTemplate.opsForZSet().range("zset", 0, -1);System.out.println("range = " + range);

0,-1,表示全部,有点像Python

在这里插入图片描述

【方法三】计算元素个数

	// 3.计算元素个数Long size = redisTemplate.opsForZSet().zCard("zset");System.out.println("size = " + size);

在这里插入图片描述

【方法四】删除元素

	Long remove = redisTemplate.opsForZSet().remove("zset", "b");System.out.println("remove = " + remove);

返回删除的元素个数,元素b已被删除;

在这里插入图片描述

【方法五】查询元素的score值

	// 5.查询元素的score值Double score = redisTemplate.opsForZSet().score("zset", "c");System.out.println("score = " + score);

在这里插入图片描述

【方法六】增加/减少某元素的score值

	// 6.增加/减少某元素的score值redisTemplate.opsForZSet().incrementScore("zset", "a", 10);redisTemplate.opsForZSet().incrementScore("zset", "c", -10);

可以用来存储某文章、视频的点赞量、收藏量等数据;

在这里插入图片描述

通用API

除了上面各个类型的API,还有几个通用的API,值得一提;

【方法一】对元素设置过期时间

	// 1.对元素设置过期时间redisTemplate.expire("username", 10, TimeUnit.SECONDS);

对username对应的元素设置有效期为10秒钟;

在这里插入图片描述

【方法二】获取某元素的过期时间

	// 2.获取某元素的过期时间Long expire = redisTemplate.getExpire("zset");System.out.println("expire = " + expire);

-1,表示无期限;

在这里插入图片描述

【方法三】根据RedisKey删除某元素

	// 3.根据RedisKey删除某元素redisTemplate.delete("zset");

前面的删除都是删除数据内元素的,这个删除,是删除Redis中任意Key对应的元素的。
在这里插入图片描述

总结

本文介绍了Spring Boot中,RedisTemplate对应操作Redis的API

实例完整代码:https://github.com/HeZhongYing/redis_api_demo

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词