redis学习总结

redis学习总结
小鹤本期是本人学习redis的总结,同时更偏底层原理 基础命令语法见官网
- redis的持久化模式
- redis的key的过期时间
- redis的redis.conf配置文件
- redis的redis.io官网
- redis的redis.io官网
认识NoSQL
redis和mysql都是nosql,但是mysql是关系型数据库,redis是非关系型数据库
NoSQL | SQL | |
---|---|---|
数据结构 | 非结构化 | 结构化 |
数据关联 | 不关联 | 关联 |
查询方式 | 非SQL | SQL查询 |
事务特征 | BASE | ACID |
存储方式 | 内存 | 磁盘 |
扩展性 | 水平(分布式) | 垂直(主从) |
使用场景 | 数据结构不固定,对一致性安全性要求不高,对性能要求高 | 数据结构固定,对数据安全性一致性有要求 |
redis特征 键值型:value支持多种不同数据结构,功能丰富 单线程,每个命令具备原子性(redis6.0多线程仅在网络请求处理这方面) 低延迟,速度快(内存中,IO多路复用,良好代码) 支持数据持久化 支持主从集群,分片集群 支持多语言客户端
安装
redis数据结构介绍
string
string类型,字符串类型,是redis最简单的存储类型其value是字符串,不过根据字符串的格式不同,又可分为3类
string:普通字符串 int:整数类型,可以做自增自减
float:浮点类型,可以做自增,自减
不管哪种底层都是字节数组形式存储,知识编码方式不同,字符串类型最大空间不超过512M
待续。。
如果value是一个Java对象,可以将对象序列化为json字符串存储
hash
hash类型,哈希表,key-value,value是map,key是字符串,value是字符串,可以做增删改查,可以做key的模糊查询,
list
list可以实现常用的数据结构,相比java有更大的优势,
java实现的数据结构只能在进程内部实现,jvm
假设有3个web应用共享同一个数据结构比如栈,无法用java实现,需要设置同步一致性的方案,redis就可以直接共享,能够分布式场景下的数据
结构。
在线并发的情况下,如果使用java的list,那么在web应用A和web应用B同时操作list的时候,就会产生并发问题,