1.什么是Redis数据库

    完全开源的key-value的高性能数据库

2.数据库分为了关系型数据库和非关系型数据库

    2.(1)关系型数据库

       有mysql orade 和sql server

      是指采用了关系模型来组建数据的数据库

      其以行和列的形式来存储数据,以便用户理解

        关系型数据库的优缺点

      优点:

        1.容易理解,贴近逻辑世界的二维表格模型

        2.使用方便,丰富的sql语句操作

        3.易于维护,具有完整性,大大的降低了数据冗余和数据的不一致的概率

        4.支持sql,可用于复杂逻辑的查询

      缺点:

        1.因为完整性带来了巨大的代价就是读写性能比较差

        2.固定的表结构

        3.高并发读写需求慢

    2.(2)非关系型数据库

        常见的有:nosql Redis MonggoDB

        他的产生就是为了解决大规模数据集合多重数据类型带来的挑战,可以去快速创建可扩展的存储库

      非关系型数据库的优缺点

      优点:

        1.无需经过sql层的解析,读写性能很高

        2.基于键值对,数据没有耦合性,容易扩展

        3.nosql数据库(非关系型数据库),存储格式是key-value形式、文档形式、图片形式...

         而关系型数据库则只支持基础类型

        4.处理高并发、大批量数据的能力强

      缺点:

        1.没有sql支持,学习成本高

        2.事务处理能力弱

        3.没有完整性的约束,对于复杂的业务场景支持较差

3.Redis操作

    1.打开服务

      可以通过命令符输入命令  redis-server.exe

      也可以双击打开

    2.读写redis数据库

      在不关闭服务的前提下,打开另一个cmd窗口

      redis-cli.exe

    3.读写数据

      3.(1) String类型

        set name YTZL 设置name为YTZL

         get name 获取

        String类型是Redis最基本的数据类型,并且是二进制的十分安全,

        String类型可以包含任何数据,比如图片或者序列化的对象,

        一个键可以存储512MB

      3.(2) Hash 哈希

        HMSET 对象名 name zhangsan pwd 123  --设置      hmset

        HGETALL 对象名 --获取                                             hgetall

        HASH是一个键值对集合,特别适用于存储对象         

      3,(3)List 集合

        LPUSH nameList zhangsan --设置           lpush

        LPUSH nameList lisi --设置             

        LRANGE nameList 0 1 --获取(后面的数字是下标) lrange

        List 是字符串列表,按照插入顺序排序

      3.(4)Set集合

        SADD nameSet zhangsan ---设置        sadd

        SADD nameSet lisi --设置             sadd

        SMEMBERS nameSet --获取          smembers

        Set是String类型的无序列表,每一个成员都唯一的

        意味着不可能出现重复的数据

      3.(5)Zset集合

        ZADD userSet 1 zhangsan --设置          zadd

        ZADD userSet 2 lisi --设置              zadd

        ZRANGE userSet 0 1 --获取           zrange

           Zset集合是String类型的集合,且不允许有重复的对象,

        不同的是每一个元素都会关联一个double类型的分数

        Redis正是通过这个额分数来进行集合中的成员大小排序的,

        并且分数可以重复

      3.(6)基本命令

        1.EXISTS keyName

          若key存在,则返回1 否则换回0

        2.DEL keyName keyName keyName ...

          返回的是被删除的数量

        3.设置过期时间

          EXPIRE key Name seconds

          设置成功返回1 

        4.查询过期时间(单位是秒)

          TTL keyName 

          seconds:返回剩余秒数

          -2:当前key已经过期

          -1:当前key存在但是没有设置过期时间

        5.查询过期时间(单位是毫秒)

          TTL keyName 

          seconds:返回剩余秒数

          -2:当前key已经过期

          -1:当前key存在但是没有设置过期时间

        6.获取key的数据类型

          type keyName

          返回值是各大数据类型和none

          none:key不存在