NoSql之redis的简单介绍

Posted java书院

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NoSql之redis的简单介绍相关的知识,希望对你有一定的参考价值。

一、NoSql介绍

    1.nosql:非关系型数据库

    2.特点:非关系型(没有固定的表结构,也没有字段/行列,但有“库”的概念),分布式的(主从分离),开源的,水平可扩展。

    3.nosql产品:mongodb、redis、memcached、hbase等

    4.优势:

        1)处理超大量的数据

        2)运行在便宜的pc服务器集群上

        3)最大程度上解决了关系型数据库在性能上的问题

    5.使用场景:

        1)数据高并发读写mysql对于上万次的写入请求,硬盘的IO是无法承受的)

        2)需要对海量数据进行高效率存储与访问(我们可以想象一下,当过亿的数据同时对mysql等关系型数据库访问,那会是什么情况)

        3)对数据的高可扩和高可用(对于已上线的项目来说,对数据库进行升级和扩展是非常痛苦的,往往我们需要进行停机维护然后进行数据迁移,如果使用nosql,我们只需要去增加数据库的节点即可进行集群的扩展)


二、NoSql之Redis数据库介绍

    1.Redis是开源的,先进的key-value存储,通常称为数据结构服务器.redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。

    2.Redis能干什么

        1)对数据进行内存存储和持久化

        2)可以作为发布、订阅消息系统

        3)定时器、计数器

    3.Redis的部署场景

        1)应用直接访问redis数据库(这种数据存储方式存在一定的安全性问题,如果redis中的shutdown释放了,那么意味着存储在里面的数据将丢失)

        2)应用先访问redis数据库,当未查询到数据后再去mysql数据库中查询数据

    4.Redis安装(linux系统中进行安装)

        这里我使用的redis-3.0.4.tar.gz这个版本

        1)解压:

            tar -zxvf redis-3.0.4.tar.gz

        2)进入redis-3.0.4目录

        3)编译(这里需要先gcc++编译环境)

            执行make命令

            出现 Hint: It's a good idea to run 'make test' ;则编译成功

        4)执行完成后执行make install

            安装完成后,redis的安装文件默认在:/usr/local/bin

        5)复制redis.conf 到 /usr/local/redis中

        6)修改redis.conf的配置文件

             daemonize no (改为yes,可以在后台启动)

    7.启动redis服务端,进入redis安装文件目录cd /usr/local/bin

        ./redis-server ./redis.conf    

        (redis-server启动时,会去redis.conf中读取配置信息)

    8.启动redis客户端

        ./redis-cli -p 6379

        (-p 6379指的是redis服务的端口号,默认为6379)

    9.停止redis

        在客户端中执行:shutdown

三、redis基本知识

    1.redis是单进程的

    2.默认16个数据库,类似下标从零开始:0-15

    3.切换数据库:select 7(进入6号库)

    4.dbsize查看当前数据库的key的数量

    5.flushdb 清空当前数据库

    6.flush  清空全部库

    7.统一密码管理 16个库都是同样的密码

    8.redis索引都是从0开始

四、Redis的数据类型

    1.String:string是基本数据类型,一个redis字符串的value可以存储512M

    2.hash:键值对集合,类似java的Map<String,Object>

    3.list:一个字符串列表,按照插入顺序排序

    4.set:集合

    5.zset(sorted set:有序集合):每个元素都会关联一个double类型的分数,redis通过囧分数来为集合中的元素进行从小到大排序。其中元素是唯一的,但分数是可以重复的

五、Redis命令

    1.keys:返回所有的键 keys *

    2.exists:判断指定的键是否存在

    3.del:删除指定的键

    4.expire:设置一个key的过期时间 eg: expire name 10

    5.move:移动键到指定的数据库 eg: move name 1

    6.persist:移除指定key的过期时间

    7.randomkey:随机返回key空间中的一个键

    8.rename:重命名键

    9.type:返回指定键其值得数据类型

    .........

六、Redis持久化(RDB && AOF)

    

1.Redis的rdb

      将redis的数据写入到dump.rdb文件中

      1.1rdb的触发条件

        1.1.1配置文件中的时间配置(redis.conf)

          save 900 1   15分钟往redis中存一次数据

          save 120 10  2分钟执行10次

          save 60 10000   1分钟执行10000次

        只要触发上面的时间段,将会把数据写入dum.rdb

       1.1.2执行flushall,shutdown.

         注意:flushall 是吧内存的数据写入到dump.rdb文件中,

               

       1.1.3数据恢复

            只需要把dump.rdb文件放在启动目录 启动redis即可


       1.1.4save(同步阻塞式)或bgsave(异步非阻塞式)

         使用save命令可以立即实现rdb备份


     1-2.rdb使用场景:

        1>大规模的数据备份

        2>对数据的完整性和一致性要求不高


     1-3.rdb的不足:

         每次备份的时候都会生成一个与当前线程一样的线程,这样影响系统效率。

         还有一点就是如果在备份的时候出现异常,那么最后一次的数据将丢失

    AOF :是把你操作的命令 记录下来

   2-1.开启appendonly

          1>配置文件中加入:  appendonly yes

          2>动态修改:config set appendonly yes

          3>配置文件加入:  appendfilename appendonly.aof

             注意:1.rdb与aof可以同时存在,服务器优先加载aof;如果aof文件损坏将无法启动服务器

            2.aof文件修复: redis-check-aof --fix appendonly.aof

        2.2 Appendfsync 

               always    :同步持久化,每次发生数据变更会立即记录到磁盘,性能较差但数据完整性比较好

               Everysec  :出厂默认推荐,异步操作,每秒记录,如果一秒内宕机,有数据丢失

               no

        2-3.rewrite: aof文件的重写

         aof文件采用的是追加方式,因此文件随着时间会变的很大;当aof文件的大小超过所设定的值时,redis就会启动aof文件进行压缩

           该情况可以采用rewrite机制,对aof文件的数据

           


        2-3.aof重写触发条件

         默认是上一次rewrite之后的文件的一倍且容量大于64M

           auto-aof-rewrite-percentage 100 -- 大于一倍

           auto-aof-rewrite-min-size 64m   --最小64m(生产过程中,一般大于64m(3G))


        aof的文件通常大于rdb,恢复速度要慢于rdb


额。。。。。。。。

今天就先写到这里吧!记得关注哦NoSql之redis的简单介绍NoSql之redis的简单介绍!!!!




            

        

    

以上是关于NoSql之redis的简单介绍的主要内容,如果未能解决你的问题,请参考以下文章

NoSQL之Redis——Redis部署与配置

NoSQL之Redis入门

NoSQL学习笔记之——Redis基础

数据库之Redis

NoSQL之 Redis的五大数据类型的详细介绍

NoSQL之Windows下Redis的测试使用