redis数据库设计可以有以下几种方式
1.使用唯一性的字段作为key,其余部分使用json将此行数据库数据存入redis的value中。 如 key -> 表名_主键值 value->行对象的json字符串,此种方式适合需要一次查询出整行的数据。缺点,序列化和反序列化会消耗时间,如果修改,在并发下可能会有问题,因为是对整个对象进行的,可能覆盖前一次操作。
2.key->表名_主键值_列名 value->列的值,这种方式是每一列数据都采用key-value这种方式,这种方式避免了上面的问题,由于key的重复存储,消耗的内存非常可观。
3.使用hash存储,key依旧是需要查询的唯一性字段,value是一个Map,这个Map的key是成员的属性名,value是属性值,这样对数据的修改和存取都可以直接通过其内部Map的Key。一个hash里面的数量最好不要大于1000,否则可能导致效率急剧下降。
1、添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
2、redis连接配置
spring:
redis:
host: 127.0.0.1
port: 6379
database: 14
password:
3、导入Redis的工具类
现在有两个方法存储对象与泛型。
3.1、用序列化与反序列化。
3.2、json
采用的是json格式来存储object类型。
@Autowired(required = false)
private RedisTemplate redisTemplate;
public class redisTest{
/**
*操作redis的工具类
*使用redis自带的工具类
*也可以自己写一个redis工具类(不推荐)
*/
@Autowired
private RedisTemplate<String ,Object> redisTemplate;
@Autowired
private StudentsDao studentsDao;
public void studentsRedis(){
ValueOperations<String, Object> operations = redisTemplate.opsForValue();
Students student = new Students();
List<Students> list = studentsDao.getlist();
//将Students转换为json格式
JSONObject jsonObject = JSONObject.fromObject(student);
//将json转换为json字符串
String str = jsonObject.toString();
//吧Students这个对象存放到redis中
operations.set("key",str);
}
}
现在就是吧object对象存放到redis中去了。
取得时候吧json转换为需要的对象
public void getRedis(){
public List<Students> getStu(int stuId){
List<Students> students =null;
ValueOperations<String, Object> operations = redisTemplate.opsForValue();
//吧json字符串转换成json
String str = (String) operations.get("key" + stuId);
//吧json转换成对象
ObjectMapper mapper = new ObjectMapper();
Students stu = mapper.readValue(str , Students .class);
}
}