Redis详解及Spring Boot 整合 Redis

1 篇文章 0 订阅
1 篇文章 0 订阅

Redis

基于内存进行存储,支持key-value的存储形式,底层是C
基于key-value形式的数据字典,没有数据表的概念,直接用键值对的形式完成数据管理
支持五种数据类型:
	·字符串
	·列表
	·集合
	·有序集合
	·哈希

安装Redis

1.下载Redis:https://redis.io/download
2.解压并在本地硬盘人任意位置创建文件夹redis,再创建三个子文件夹:
	·bin 放置启动Redis的可执行文件
	·db  放置数据文件
	·etc 放置配置文件,设置Redis端口、日志文件位置、数据文件位置

启动Redis服务
1.进入Redis目录,启动redis-server
sudo ./bin/redis-server./etc/redis.config
2.启动redis-cli
./bin/redis-cli
3.对数据进行操作
set key value
get key
4.关闭Redis服务
shutdown
5.退出客户端
control+c

Spring Boot 整合 Redis

Spring Data Redis 操作 Redis.
1.创建maven工程,再pome.xml中配置

org.springframework.boot
spring-boot-starter-parent
2.1.5.RELEASE

	  <dependencies>
	  	<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>
	  </dependencies>

2.创建实体类,实现序列化接口,否则无法存入Redis数据库。
	package com.tianchen.entity;
	
	import java.util.Date;
	import java.io.Serializable;
	
	import lombok.Data;
	
	@Data
	public class Student implements Serializable{
		private Integer id;
		private String name;
		private Double score;
		private Date birthday;
	}

3.创建控制器
	package com.tianchen.controller;

	import org.springframework.beans.factory.annotation.Autowired;
	import org.springframework.data.redis.core.RedisTemplate;
	
	import com.tianchen.entity.Student;
	
	//import org.springframework.web.bind.annotation.PostMapping;
	//import org.springframework.web.bind.annotation.RequestBody;
	//import org.springframework.web.bind.annotation.RestController;
	
	@RestController
	public class StudentHandler {
		
		@Autowired
		private RedisTemplate redisTemplate;
		
		@PostMapping("/set")
		public void set(@RequestBody Student student) {
			redisTemplate.opsForValue().set("student",student);
		}
		
		@GetMapping("/get/{key}")
		public Student get(@PathVariable("key") String key) {
			return (Student)redisTemplate.opsForValue().get(key);
		}
		
		@DeleteMapping("/delete/{key}")
		public boolean delete(@PathVariable("key") String key) {
			redisTemplate.delete(key);
			return redisTemplate.hasKey(key);
		}
	}
	
4.创建配置文件application.yml
	spring:
		redis:
			database: 0
			host: localhost
			port: 6379

5.创建启动类
	package com.tianchen;
	
	import org.springframework.boot.SpringApplication;
	import org.springframework.boot.autoconfigure.SpringBootApplication;
	
	@SpringBootApplication
	public class Application {
		public static void main(String[] args) {
			SpringApplication.run(Application.class,args);
		}
	}

Redis 5 种数据类型
·字符串
@GetMapping("/string")
public String StringTest() {
redisTemplate.opsForValue().set(“str”,“Hello World”);
String str = (String)redisTemplate.opsForValue().get(“str”);
return str;
}

·列表
	@GetMapping("/list")
	public List<String> ListTest() {
		ListOperations<String,String> listOperations = redisTemplate.opsForList();
		listOperations.leftPush("list", "Hello");
		listOperations.leftPush("list", "World");
		listOperations.leftPush("list", "Java");
		List<String> list = listOperations.range("list", 0, 2);
		return list;
	}
	
·集合
	//如下只会存入Hello World Java 各一个
	@GetMapping("/set")
	public Set<String> setTest(){
		SetOperations<String,String> setOperations = redisTemplate.opsForSet();
		setOperations.add("set", "Hello");
		setOperations.add("set", "Hello");
		setOperations.add("set", "World");
		setOperations.add("set", "World");
		setOperations.add("set", "Java");
		setOperations.add("set", "Java");
		Set<String> set = setOperations.members("set");
		return set;
	}
	
·有序集合
		@GetMapping("/zset")
	public Set<String> zsetTest(){
		ZSetOperations zSetOperations = redisTemplate.opsForZSet();
		zSetOperations.add("zset", "Hello",1);
		zSetOperations.add("zset", "World",2);
		zSetOperations.add("zset", "Java",3);
		Set<String> zset = zSetOperations.range("zset", 0, 2);
		return zset;
	}
	
·哈希
HashMap key value
HashOperations key hashkey value
key 是每一组数据的 ID,hashkey 和 value 是一组完整的 HashMap 数据,通过key来区分不同的HashMap
	HashMap hashMap1 = new HashMap();
	hashMap1.put(key1,value1);
	HashMap hashMap2 = new HashMap();
	hashMap2.put(key2,value2);
	HashMap hashMap3 = new HashMap();
	hashMap3.put(key3,value3);
	HashOperations<String,String,String> hashOperations = ridisTemplate.opsForHash();
	hashOperations.put(hashMap1,key1,value1);
	hashOperations.put(hashMap2,key2,value2);
	hashOperations.put(hashMap2,key2,value2);

	@GetMapping("/hash")
	public void hashTest() {
		HashOperations<String,String,String> hashOperations = redisTemplate.opsForHash();
		hashOperations.put("key", "hashkey", "Hello");
		System.out.println(hashOperations.get("key","hashkey"));
	}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值