SpringBoot整合Redis(基础)
Redis 是完全开源的,遵守 BSD 协议,是一个高性能的 key-value 数据库。2.创建实体类3.创建controller类4.创建配置文件和RedisConfig配置类5.创建启动类6.结果展示结果展示字符串
·
什么是Redis
Redis的认识
Redis 是完全开源的,遵守 BSD 协议,是一个高性能的 key-value 数据库。
Redis 的三个特点:
- Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
- Redis不仅支持简单的key-value类型的数据,同时还提供string,list,set,zset,hash等数据结构的存储。
- Redis支持数据的备份,即master-slave模式的数据备份
Redis的优势
- 性能极高
- 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
- 原子 – Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。
- 特性丰富 – Redis支持 publish/subscribe, 通知, key 过期等特性。
基于SpringBoot框架整合Redis即关于redis的增删改查操作(CRUD)
1.导入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
2.创建实体类
@Data
public class Movie implements Serializable {
private Integer id;//序号
private String name;//电影名称
private double investment;//投资
private Date release_time;//上映时间
}
3.创建controller类
@RestController
public class MovieController {
@Autowired
private RedisTemplate redisTemplate;
//添加,修改
@PostMapping("/set")
public void set(@RequestBody Movie movie){
redisTemplate.opsForValue().set("movie",movie);
}
//查询
@GetMapping("/get/{key}")
public Movie get(@PathVariable("key") String key){
return (Movie)redisTemplate.opsForValue().get(key);
}
@DeleteMapping("/delete/{key}")
public Boolean delete(@PathVariable("key") String key){
redisTemplate.delete(key);
return redisTemplate.hasKey(key);//查看是否被删除,如果删除返回false,没有删除,返回true
}
4.创建配置文件和RedisConfig配置类
spring:
redis:
database: 2
host: localhost
port: 6379
mvc:
servlet:
load-on-startup: 1
@Configuration
public class RedisConfig {
@Bean
public RedisTemplate<String,Object> redisTemplate(RedisConnectionFactory redisConnectionFactory){
RedisTemplate<String, Object> objectObjectRedisTemplate = new RedisTemplate<>();
objectObjectRedisTemplate.setConnectionFactory(redisConnectionFactory);
//设置key序列化使用String字符串
objectObjectRedisTemplate.setKeySerializer(RedisSerializer.string());
objectObjectRedisTemplate.setHashKeySerializer(RedisSerializer.string());
//设置value序列化为JSON格式
GenericJackson2JsonRedisSerializer genericJackson2JsonRedisSerializer =
new GenericJackson2JsonRedisSerializer();
objectObjectRedisTemplate.setValueSerializer(genericJackson2JsonRedisSerializer);
objectObjectRedisTemplate.setHashValueSerializer(genericJackson2JsonRedisSerializer);
return objectObjectRedisTemplate;
}
}
5.创建启动类
@SpringBootApplication
public class SpringbootredisApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootredisApplication.class, args);
}
}
6.结果展示
添加
查询
修改并查看
删除
SpringBoot操作Redis的五种数据类型
代码实现
/**
* 五种数据类型的操作
*/
//字符串
@GetMapping("/get/string")
public String StringTest() {
redisTemplate.opsForValue().set("str", "hello world!");
String str = (String) redisTemplate.opsForValue().get("str");
return str;
}
//列表
@GetMapping("/get/list")
public List<String> ListTest() {
ListOperations<String, String> listOperations = redisTemplate.opsForList();
listOperations.leftPush("list", "java");
listOperations.leftPush("list", "python");
listOperations.leftPush("list", "c++");
listOperations.leftPush("list", "c");
List<String> list = listOperations.range("list", 0, 3);
return list;
}
//集合
@GetMapping("/get/set")
public Set<String> SetTest() {
SetOperations<String, String> setOperations = redisTemplate.opsForSet();
setOperations.add("set", "123456789");
setOperations.add("set", "123456789");
setOperations.add("set", "AK47");
setOperations.add("set", "AK47");
setOperations.add("set", "一个花西子币");
setOperations.add("set", "一个花西子币");
Set<String> set = setOperations.members("set");
return set;
}
//有序集合
@GetMapping("/get/zset")
public Set<String> ZsetTest() {
ZSetOperations<String, String> zSetOperations = redisTemplate.opsForZSet();
zSetOperations.add("zset", "123456789", 1);
zSetOperations.add("zset", "AK47", 3);
zSetOperations.add("zset", "一个花西子币", 2);
zSetOperations.add("zset", "旺旺", 4);
Set<String> zset = zSetOperations.range("zset", 0, 3);
return zset;
}
//哈希
@GetMapping("get/hash")
public void HashTest(){
HashOperations<String,String,String> hashOperations =redisTemplate.opsForHash();
hashOperations.put("key","hashkey","人间");
System.out.println(hashOperations.get("key", "hashkey"));
}
结果展示
字符串
列表
无序集合
有序集合
哈希
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
已为社区贡献3条内容
所有评论(0)