zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

SpringBoot进阶-Redis数据类型及应用场景(二)

RedisSpringBoot应用 进阶 场景 数据类型
2023-09-11 14:16:57 时间

key的操作

返回匹配的所有key

可统计在线用户数量(大数据量下慎用),redis命令:

keys user:*

java实现:

//获取所有匹配的key
Set<String> keys = redisTemplate.keys("user:*");
keys.stream().forEach(System.out::println);

设置过期时间

给k1设置10秒的过期时间(PS:后面的代码格式都是redis命令再对应java实现)

expire k1 10
//设置过期时间,如果key已过期或不存在则返回false
boolean result = redisTemplate.expire("k1", Duration.ofSeconds(10));

查看过期时间

返回过期秒数,-1表示永不过期,-2表示已过期

ttl k1
//获取过期时间,第二个参数指定时间格式,-1表示永不过期,-2表示已过期
long expire = redisTemplate.getExpire("k1", TimeUnit.SECONDS);

查看保存的数据类型

type k1
//查看对应key保存的数据类型
DataType dataType = redisTemplate.type("k1");

删除key

del k1
redisTemplate.delete("k1");

String操作

一些简单操作就省略了,看些小复杂并且常用的

设置值加过期时间

参数1:key,参数2:过期时间(秒),参数3:value

setex k1 60 v1
redisTemplate.opsForValue().set("k1", "v1", Duration.ofSeconds(60));

不存在则设置值

setnx是set if not exist简写,如果不存在,则 SET

setnx k1 v2
//不存在就设置,返回值为true表示设置成功
boolean result = redisTemplate.opsForValue().setIfAbsent("k1", "v2");

计数

每次执行加1

incr personCount
//加1,第一个执行返回1
long count = redisTemplate.opsForValue().increment("personCount");

应用场景

1.计数器,incr,decr命令可用于点赞,收藏等数据计数

2.setnx可用于分布式锁

3.存储json对象