1.概念:redis是一款高性能的NOSQL系列的非关系型数据库
关系型数据库:数据之间有关联关系,数据存储在硬盘的文件上
非关系型数据库:数据之间没有关联关系,数据存储在内存中
是一款用C语言开发的一个开源的高性能键值对(Key-Value)数据库
目前Redis数据库支持的数据类型为
字符串类型String 哈希类型 hash 列表类型 list 集合类型 set 有序集合类型 sortedset
1.1NQL
NOSQL(NoSQL = Not Only SQL),意味"不仅仅是SQL",是一项全新的数据库理念,泛指没有关系的数据库
1.2NSQ与关系型数据库比较
优点:
成本:nosql数据库简单部署,基本都是开源软件,不需要使用oracle那个大量成本,
查询速度:nosql数据库将数据存储于缓存中,关系型数据库将数据存入硬盘之中,自然查询速度远不及nosql数据库
数据存储格式:nosql的存储格式是key,value形式,文档形式,图片形式等等,所以可以存储基础类型以及对象或是集合等各种格式,而数据库只支持基础类型
扩展性:关系型数据库有类似join这样的多表查询机制导致扩展很艰难
缺点:
维护的工具和资料有限,不能和关系型数据库十几年的技术同日而语
不提供对sql的支持,如果不支持sql这样的工业标准,将产生一定胡勇的学习和使用成本
不提供关系型数据库对事物的处理
非关系数据库的优势
性能nosql是基于键值对的,可以相信成表中的主键和值的对应关系,而且不需要经过sql层的解析,所以性能非常高
可扩展性同样也是基于键值对,数据之间没有耦合性,所以非常容易水平扩展
2.下载于安装
官网:https://redis.io/
中文网:https://www.redis.net.cn/
3.命令操作
1.redis的数据结构
redis的存储是Key-value格式的数据,其中key都是字符串,value有物种不同的数据结构
字符串类型String 哈希类型 hash 列表类型 list 集合类型 set 有序集合类型 sortedset
2.字符串类型String
1.存储:set key value
2.获取:get key
3.删除:del key
3.哈希类型 hash
1.存储:hset key field value
2.获取:hget key filed
获取所有的key:hget key
3.删除:hdel key field
4.列表类型:list可以添加一个元素到列表的头部(左边)或者尾部(右边)
添加:
lpush key value:将元素加入列表左边
rpush key value 将元素加入列表右边
获取:
lrang key start end :范围的一个获取
删除:
lpop key:删除列表最左边的元素,并将元素返回
rpop key:删除列表最右边的元素,并将元素返回
5.集合类型:set不允许重复元素
1.存储:sadd key value
2.获取:smemvers key:获取set集合所有元素
3.删除:srem key value:删除set集合中的某个元素
6.有序集合类型:sortedset
Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。有序集合的成员是唯一的,但分数(score)却可以重复。
1.存储:zadd key score value:
2.获取:zrange key start end
3.删除:zrem key value
7.通用命令
keys *: 查询所有的键
type key: 获取键对应的value的类型
del key:删除指定的key value
4.持久化
1.redis是一个内存数据库,当redis服务器重启,或者电脑重启了,我们可以将redis内存中的数据持久化保存到硬盘的文件中
2.redis持久化机制:
1.RDB:默认方式,不需要进行配置,默认就使用这种机制
*在一定的间隔时间中,检测key的变化情况,然后持久化数据
在一定的间隔时间中,检测key的变化情况,然后持久化数据
编辑redis.conf
save 900 1
# after 900 sec (15 min) if at least 1 key changed 在十五分钟内又1个key发生改变
save 300 10
# after 300 sec (5 min) if at least 10 keys changed 在五分钟内又三百个key发生改变
save 60 10000
# after 60 sec if at least 10000 keys changed 在60s内又10000key发生改变
2.AOF:日志记录的方式,可以记录每一条命令的操作,可以每一次命令操作后,持久化数据
编辑redis.conf
appendonly no (默认关闭)--》appendonly yes (开启aof)
# appendfsync always 每一次操作都执行持久化
appendfsync everysec 每隔一秒进行一次持久化
# appendfsync no 不进行持久化