
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  不进行持久化


















