【RedisTemplate五种数据结构基本用法】

本文介绍了RedisTemplate在Java中操作Redis的五种数据结构:String、List、Set、Hash和Zset。详细讲解了如何进行增删查改操作,包括设置过期时间、获取长度、添加和删除元素等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这5种数据结构类型分别为String(字符串)、List(列表)、Set(集合)、Hash(散列)和 Zset(有序集合)。

1、添加依赖

<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-redis -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
    <version>2.7.5</version>
</dependency>

 2、添加配置文件

spring:
  redis:
    database: 0
    host: localhost
    port: 6379
    password:
    jedis:
      pool:
        #最大连接数
        max-active: 100
        #最大阻塞等待时间(负数表示没限制)
        max-wait: -1
        #最大空闲
        max-idle: 8
        #最小空闲
        min-idle: 0
        #连接超时时间
        timeout: 10000
    cache:
      redis:
        #存活时间
        time-to-live: 360000000

3、RedisTemplate的使用

3.1、注入RedisTemplate

@Autowired
private RedisTemplate redisTemplate;

3.2、String数据结构

set存值

redisTemplate.opsForValue().set("one","one");//添加键key值value

set存有过期时间的值

redisTemplate.opsForValue().set("two","two",10, TimeUnit.SECONDS);//添加键key值value,并设置10秒的过期时间,10秒之内查询有返回结果,10秒之后查询返回为null

 get获取key值

redisTemplate.opsForValue().get("two");//获取key为two的value值

 返回key所对应的value值的长度

redisTemplate.opsForValue().size("one");

 删除指定key(五种类型都通用的方法)

redisTemplate.delete("one");

 如果key不存在则创建并赋予过期时间

redisTemplate.opsForValue().setIfAbsent("five", "five", 10, TimeUnit.SECONDS);

3.3、List数据结构

从左添加所有的list集合数据

List<String> strings = new ArrayList<>();
strings.add("1");
strings.add("2");
strings.add("3");
redisTemplate.opsForList().leftPushAll("list",strings);

查询list列表中所有的值

redisTemplate.opsForList().range("list", 0, -1);

从右添加所有的list集合数据

List<String> strings = new ArrayList<>();
strings.add("1");
strings.add("2");
strings.add("3");
redisTemplate.opsForList().rightPushAll("list",strings);

从左添加指定值到key 为list集合数据

redisTemplate.opsForList().leftPush("list","1");
redisTemplate.opsForList().leftPush("list","2");
redisTemplate.opsForList().leftPush("list","3");

返回存储在键中的列表的长度。如果键不存在,则将其解释为空列表,并返回0。当key存储的值不是列表时返回错误。

redisTemplate.opsForList().size("list");

给list集合赋予过期时间(五种类型都通用的方法)

redisTemplate.expire("list",10, TimeUnit.SECONDS);

3.4、Set数据结构

添加set集合无序不可重复的数据

redisTemplate.opsForSet().add("six","six1","six2","six3","six4");

String[] strs= new String[]{"six1","six2"};
redisTemplate.opsForSet().add("six",strs);

根据key获取集合中所有的值

redisTemplate.opsForSet().members("six");

判断set集合中是否包含指定值

redisTemplate.opsForSet().isMember("six","six2");

返回指定集合key长度

redisTemplate.opsForSet().size("six");

删除指定key 的指定值

redisTemplate.opsForSet().remove("six", "six4", "six1");

String[] strs = new String[]{"str1","str2"};
System.out.println(template.opsForSet().remove("six",strs));

3.5、Hash数据结构

添加单条数据

redisTemplate.opsForHash().put("nine","nine1","100");

查询hash集合中指定key的值

redisTemplate.opsForHash().get("nine", "nine1");

批量添加数据

Map<String, String> stringStringHashMap = new HashMap<>();
stringStringHashMap.put("map1","23");
stringStringHashMap.put("map2","26");
stringStringHashMap.put("map3","32");
redisTemplate.opsForHash().putAll("nine",stringStringHashMap);

提取集合所有的keys

redisTemplate.opsForHash().keys("nine");

提取集合所有的values

redisTemplate.opsForHash().values("nine");

获取所有的键值对集合

redisTemplate.opsForHash().entries("nine");

判断Hash中是否含有该值

redisTemplate.opsForHash().hasKey("nine", "map1");
判断是否有该key(五种类型都通用的方法)
redisTemplate.hasKey("nine");

删除hash中指定key

redisTemplate.opsForHash().delete("nine", "map1");

3.6、Zset数据结构

集合中添加单条数据,给定分数

redisTemplate.opsForZSet().add("ten", "ten1", 1.2);

集合中批量添加数据

ZSetOperations.TypedTuple<Object> objectTypedTuple1 = new DefaultTypedTuple<>("ten2",98.5);
ZSetOperations.TypedTuple<Object> objectTypedTuple2 = new DefaultTypedTuple<>("ten3",93.2);
Set<ZSetOperations.TypedTuple<Object>> tuples = new HashSet<ZSetOperations.TypedTuple<Object>>();
tuples.add(objectTypedTuple1);
tuples.add(objectTypedTuple2);
System.out.println(redisTemplate.opsForZSet().add("ten",tuples));

查询zset集合中所有元素(从小到大)

redisTemplate.opsForZSet().range("ten",0,-1)

查询zset集合中所有元素(从大到小)

redisTemplate.opsForZSet().reverseRange("ten", 0, -1);

移除集合中单个或者多个元素

redisTemplate.opsForZSet().remove("ten","ten1");

返回有序集合中指定成员的排名,按分数的从小到大排序

redisTemplate.opsForZSet().rank("ten", "ten2");

返回有序集合中指定的成员的排名,按分数的从大到小排序

redisTemplate.opsForZSet().reverseRank("ten", "ten2");

获取指定成员的分数

redisTemplate.opsForZSet().score("ten", "ten2");

为指定成员的分数加分

redisTemplate.opsForZSet().incrementScore("ten", "ten2", 1.5);

如果写的有不对的地方,请大家指出来,我们一起进步,谢谢。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值