Spring Data Redis概述及用法

一、概述

Spring Data Redis中提供了一个高度封装的类:RedisTemplate,针对jedis客户端中大量api进行了归类封装,将同一类型操作封装为operation接口

具体分类如下:

ValueOperations:简单K-V操作

SetOperations:set类型数据操作

ZSetOperations:zset类型数据操作

HashOperations:针对map类型的数据操作

ListOperations:针对list类型的数据操作

在Spring Boot项目中,可以使用Spring Data Redis来简化Redis操作

maven坐标:

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

二、用法

1、操作string类型数据

以string形式向redis添加数据:

redisTemplate.opsForValue().set("city","shanghai");

以string形式根据key去redis中拿value:

String city = (String) redisTemplate.opsForValue().get("city");
System.out.println(city);   //shanghai

以string形式向redis添加数据,并设置过期时间:

redisTemplate.opsForValue().set("name","chendong",10l,TimeUnit.SECONDS);

向redis中添加不存在的数据,false代表此数据在redis中存在,添加失败:

Boolean aBoolean = redisTemplate.opsForValue().setIfAbsent("city", "shanghai");
System.out.println(aBoolean);   //false

2、操作hash类型数据

以hash形式向redis添加数据:

redisTemplate.opsForHash().put("001","name", "chendong");
redisTemplate.opsForHash().put("001","age", "20");
redisTemplate.opsForHash().put("001","address", "shanghai");

以hash形式向redis取数据:

String name = (String) redisTemplate.opsForHash().get("001", "name");
System.out.println(name);   //chendong

以hash形式获取"001"中的所有字段:

Set<String> keys = redisTemplate.opsForHash().keys("001");
for (Object key : keys) {
    System.out.print(key+" ");
}   //name age address

以hash形式获取"001"中的所有值:

List<String> values = redisTemplate.opsForHash().values("001");
for (Object value : values) {
    System.out.print(value+" ");
}   //chendong 20 shanghai

3、操作List类型数据

以List形式向redis添加数据:

redisTemplate.opsForList().leftPush("mylist","a");   //存一个
redisTemplate.opsForList().leftPushAll("mylist","b","c","d");   //存多个

以List形式向redis取数据:

List<String> mylist = redisTemplate.opsForList().range("mylist", 0, -1);
for (String value : mylist) {
    System.out.print(value+" ");
}   //d c b a

以List形式获取列表长度:

int myListValeSize = redisTemplate.opsForList().size("mylist").intValue();

以List形式向redis清数据(此循环结束后mylist就变空了):

for (int i = 0; i < myListValeSize; i++) {
    //出队列
    String element = (String) redisTemplate.opsForList().rightPop("mylist");
    System.out.print(element+" ");
}   //a b c d

4、操作Set类型数据

以Set形式向redis添加数据:

redisTemplate.opsForSet().add("myset","a","b","c","d");

以Set形式向redis取数据:

Set<String> myset = redisTemplate.opsForSet().members("myset");
for (String s : myset) {
    System.out.print(s+" ");
}   //a d c b

以Set形式删除myset成员:

redisTemplate.opsForSet().remove("myset","a","b");

5、操作Zset类型数据

以Zset形式向redis添加数据:

redisTemplate.opsForZSet().add("myZset","a",4.0);
redisTemplate.opsForZSet().add("myZset","b",3.0);
redisTemplate.opsForZSet().add("myZset","c",2.0);
redisTemplate.opsForZSet().add("myZset","d",1.0);

以Zset形式向redis取数据:

Set<String> myZset = redisTemplate.opsForZSet().range("myZset", 0, -1);
for (String s : myZset) {
    System.out.print(s+" ");
}   //d c b a

以Zset形式修改分数:

redisTemplate.opsForZSet().incrementScore("myZset","d",5.0);

以Zset形式删除成员:

redisTemplate.opsForZSet().remove("myZset","a","b");

6、通用操作,redis五大数据类型都可以操作

获取redis中所有的key:

Set<String> keys = redisTemplate.keys("*");
for (String key : keys) {
    System.out.print(key+" ");
}   //myZset

获取指定key对应的value的数据类型:

DataType myZsetDataType = redisTemplate.type("myZset");
System.out.println(myZsetDataType); //ZSET

判断某个key是否存在:

Boolean myZset = redisTemplate.hasKey("myZset");
System.out.println(myZset); //true

删除指定key:

Boolean myZsetDelete = redisTemplate.delete("myZset");
System.out.println(myZsetDelete);   //true

三、案例

百度网盘链接:

https://pan.baidu.com/s/1ca97kJc1fsosUg_4VqhfsA 

提取码:

1234
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值