redis的curd及各种数据类型的存取
Posted 若曦`
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了redis的curd及各种数据类型的存取相关的知识,希望对你有一定的参考价值。
1. redis使用流程
这是Springboot整合redis的使用步骤
(1) pom.xml中导入redis依赖
<!--导入这个redis依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
(2) 创建实体类,实现序列化接口
如果不实现序列化接口则无法存入redis数据库
(3) Controller中使用Redistemplate
(4) yml中配置redis连接信息
redis一共有16个库,这里0表示默认选择第一个库
(5) 使用postman进行测试
(6) get存入的student
可以看出这时候为nil(也就是为空),这是为什么呢?
因为redis在存入数据的时候会先进行序列化,也就是会在student前面加一串东西用作标记
(7) contorller中get取出redis中的数据
测试,成功取出
2. 增删改查
@Autowired
private RedisTemplate redisTemplate;
/**
* 增/改
* @param student
*/
@PostMapping("/set")
public void set(@RequestBody Student student){
redisTemplate.opsForValue().set("student",student);
}
/**
* 查
* @param key
* @return
*/
@GetMapping("get/{key}")
public Student get(@PathVariable("key") String key){
return (Student) redisTemplate.opsForValue().get(key);
}
/**
* 删
* @param key
* @return
*/
@DeleteMapping("delete/{key}")
public boolean delete(@PathVariable("key") String key){
//删除
redisTemplate.delete(key);
//寻找redis中是否有key,返回一个boolean值
return redisTemplate.hasKey(key);
}
3. redis各种数据类型的存取
(1) String
/**
* String类型数据的存入和取出
*/
@GetMapping("/string")
public void getString(){
//存
redisTemplate.opsForValue().set("str","hello,redis");
//取
String str = (String) redisTemplate.opsForValue().get("str");
System.out.println(str);
}
(2) List
/**
* List类型数据的存取
* @return
*/
@GetMapping("/getList")
public List<String> getList(){
//ListOperations相当于一根管道,左右两边都可以存取数据
ListOperations<String,String> listOperations = redisTemplate.opsForList();
//存
listOperations.leftPush("list","hello");
listOperations.rightPush("list","redis");
//使用range进行取,后面的两个参数类似于subString()的两个参数 指定下标获取
return listOperations.range("list",0,0); //hello
}
(3) Set
① 无序Set
/**
* 无序Set的存取
*/
@GetMapping("/getSet")
public void getSet(){
SetOperations<String,String> setOperations = redisTemplate.opsForSet();
//存
setOperations.add("set","hello");
setOperations.add("set","redis");
//取
Set<String> str = setOperations.members("set");
}
② 有序Set
/**
* 有序Set的存取
*/
@GetMapping("/getZSet")
public void getZSet(){
ZSetOperations<String,String> zsetOperations = redisTemplate.opsForZSet();
//存,第三个参数为序号 redis中会根据序号对set集合排序
zsetOperations.add("zset","hello",1);
zsetOperations.add("zset","redis",2);
//取
Set<String> str = zsetOperations.range("zset",0,1);
System.out.println(str);
}
(4) HashMap
/**
* HashMap的存取
*/
@GetMapping("/getHash")
public void getHash(){
//3个参数说明:hashMap的id,hashMap的key和value
HashOperations<String,String,String> hashOperations = redisTemplate.opsForHash();
//存
hashOperations.put("hashMap","hashKey","hello,redis");
//取
String str = hashOperations.get("hashMap","hashKey");
System.out.println(str);
}
以上是关于redis的curd及各种数据类型的存取的主要内容,如果未能解决你的问题,请参考以下文章