nosql、redis优缺点、分布式缓存、安装、使用、配置文件、事物命令

分布式缓存——redis

一、 Nosql入门和概述

1. Nosql是什么?

l Not Only SQL,意即“不仅仅是SQL”

泛指非关系型的数据库。随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。

l NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题,包括超大规模数据的存储。例如谷歌或Facebook每天为他们的用户收集万亿比特的数据。

2. Nosql优点?

l 易于扩展

l 大数据量高性能

l 多样灵活的数据模型

3. 传统RDBMSNosql对比

l RDBMS

l Nosql

4. 3V+3

l 大数据时代的3V

² 海量Volume

² 多样Variety

² 实时Velocity

l 互联网需求的3高

² 高并发

² 高可扩

² 高性能

5. 当下Nosql经典应用

l 当下的应用是sql和nosql一起使用

淘宝存数据

商品基本信息:Mysql等关系型数据库

商品详情,描述类:MongDB,处理大文本

商品图片:Hadoop里的HDFS,淘宝TFS

关键字:ISearch搜索引擎,多隆自己写,蔡景现

商品高频信息:redis

6. Nosql数据模型简介

l Nosql的聚合模型

² KV键

² BSON

² 列族:顾名思义,是按列存储数据的。最大的特点是方便存储结构化和半结构化数据,方便做数据压缩,对针对某一列或者某几列的查询有非常大的IO优势。

 

² 图形:

 

l Nosql数据库的四大分类

² KV

  • 新浪BerkeleyDB+redis
  • 美团redis+tair
  • 阿里、百度的memcache+redis

² 文档性数据库(BSON格式较多

  • CouchDB
  • MongoDB

² 列存储数据库

  • Cassandra
  • Hbase
  • 分布式文件系统

² 图关系数据库

  • 专注于构建关系图谱
  • Neo4JInfoGrid

² 四者对比

 

二、 简介

1. redis是什么?

l REmote DIctionary Server(远程字典服务器)

是完全开源免费的,用C语言编写的,遵守BSD协议,是一个高性能的(key/value)分布式内存数据库,基于内存运行并支持持久化的NoSQL数据库,是当前最热门的NoSql数据库之一,也被人们称为数据结构服务器。

l 能满足对海量数据的读写

l redis的键只能是字符串

l redis的值支持多种数据类型:

² 字符串:string

² 哈希:hash

² 字符串列表:list

² 字符串集合:set

² 有序集合:zset(sorted set)

² HyperLogLog结构:redis2.8.9版本之后才有,用来做统计的算法

² GEO结构:redis3.2版本之后才有,是地理位置相关的数据类型

2. redis的优点?

高性能(Redis读的速度是11W次/s,写的速度是8.1W次/s)

原子性(保证数据的准确性)

持久存储(两种方式RDB/快照,AOF/日志)

l 主从结构,主机会自动将数据同步到从机,可以进行读写分离

3.0版本开始,支持集群

3. redis缺点?

由于是内存数据库,所以,单台机器存储的数据量,跟机器本身的内存大小有关。虽然redis本身有key过期策略,但是还是需要提前预估和节约内存。如果内存增长过快,需要定期删除数据。

修改配置文件,进行重启,将硬盘中的数据加载进内存,时间比较久。在这个过程中,redis不能提供服务。

4. redis主要功能

l KV

l Cache

l Persistence

5. redis应用场景

l 主要应用在高并发和实时请求的场景

l 关注列表,粉丝列表

l 微博数,粉丝数

l 热门微博

6. redis版本下载

l https://redis.io/

l http://www.redis.cn/

l 下载最新稳定版,如下图所示。

 

三、 redis安装

1. 软件环境

l CentOS7

l redis3.2.8

2. 安装准备

输入 yum -y install cpp binutils glibc glibc-kernheaders glibc-common glibc-devel gcc make tcl

3. rediswindows版安装

下载地址:https://github.com/dmajkic/redis/downloads

下载到的Redis支持32bit和64bit。根据自己实际情况选择,将64bit的内容cp到自定义盘符安装目录取名redis。 如 C: eids

打开一个cmd窗口 使用cd命令切换目录到C: edis 运行 redis-server.exe redis.conf 。

如果想方便的话,可以把redis的路径加到系统的环境变量里,这样就省得再输路径了,后面的那个redis.conf可以省略,如果省略,会启用默认的。输入之后,会显示如下界面:

这时候另启一个cmd窗口,原来的不要关闭,不然就无法访问服务端了。

切换到redis目录下运行 redis-cli.exe -h 127.0.0.1 -p 6379 。

设置键值对 set myKey abc

取出键值对 get myKey

4. 官方的安装提示

5. redislinux版安装

上传tar包到 /usr/local 并解压,进入解压后的目录

 

进入解压目录,输入 make编译

 

输入 make install 安装

l 安装后的redis命令默认 /usr/local/bin 目录

 

6. redis的服务端启动

l redis-server

 

可以修改配置文件,使之可以后台允许

 

按?号或反斜杠搜索并修改配置

 

 

用修改的配置启动

 

查看进程,没问题

 

7. redis客户端启动

l redis-cli

l exit是退出

 

8. redis测试

 

9. redis服务端停止

l redis-cli shutdown

l 关闭并查看进程

 

四、 redis杂项知识

1. 性能测试

先启动服务端

 

测试getset的性能

 

2. 为什么redis默认端口是6379

作者喜欢的女明星名字

3. redis索引都是从零开始

4. 默认16个库

 

5. 切换数据库

select 索引

6. 查看当前数据库的key的数量

7. FLUSHDB清空当前库

8. FLUSHALL通杀全部

9. 统一密码管理

l 16个库都是同样密码,要么都OK要么一个也连接不上

10. 判断某个key是否存在

 

11. key移动到其他库

 

12. key设置过期时间

 

13. 查看key过期时间

-2代表已经过期,-1表示不过期

 

14. 查看key类型

 

五、 redis.conf解析

1. redis.conf在哪

 

2. Units单位

 

redis配置文件,单位不区分大小写

3. INCLUDES包含

 

可以加入其他自定义配置文件

4. GENERAL通用

 

一些基本设置,包括端口号,守护进程等

5. NETWORK网络配置

 

配置一些超时时间等

6. SNAPSHOTTING快照

 

配置RDB持久化策略的位置

7. REPLICATION复制

 

配置主从复制的

8. SECURITY安全

 

设置redis密码

9. LIMITS限制

 

做一些连接和内存等的限制

10. APPEND ONLY MODE追加

 

配置AOF的位置

六、 redis的持久化——RDB

1. 官网介绍

2. RDB什么

l Redis DataBase,在指定的时间间隔内将内存中的数据集快照写入磁盘,也就是Snapshot快照,它恢复时是将快照文件直接读到内存里

l Redis会单独创建一个子进程(fork)来进行持久化,会先将数据写入到一个临时文件中,待持久化过程都结束了,再用这个临时文件替换上次持久化好的文件

整个过程中,主进程是不进行任何IO操作的,这就确保了极高的性能如果需要进行大规模数据的恢复,且对于数据恢复的完整性不是非常敏感,那RDB方式要比AOF方式更加的高效。

l RDB的缺点是最后一次持久化后的数据可能丢失。

3. Fork

l Fork的作用是复制一个与当前进程一样的进程。

l 新进程的所有数据数值都和原进程一致,但是是一个全新的进程,并作为原进程的子进程

4. RDB 保存的是dump.rdb文件

 

5. 配置策略

 

6. 如何触发RDB

 

7. RDB

l 适合大规模的数据恢复

l 对数据完整性和一致性要求不高

8. RDB的缺点

在一定间隔时间做一次备份,所以如果redis意外down掉的话,就会丢失最后一次快照后的所有修改

l Fork的时候,内存中的数据被克隆了一份,大致2倍的膨胀性需要考虑

9. 如何动态停止RDB

redis-cli命令行中,输入 config set save ""

七、 redis的持久化——AOF

1. AOF是什么

以日志的形式来记录每个写操作,将Redis执行过的所有写指令记录下来(读操作不记录),只许追加文件但不可以改写文件

l redis启动之初会读取该文件重新构建数据,换言之,redis重启的话就根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作

2. AOF保存的是appendonly.aof文件

 

3. 配置策略

 

4. 如何触发AOF

l 修改配置文件的appendonlyyes

5. AOF数据修复

l redis-check-aof --fix appendonly.aof

6. AOF的优点

同步持久化 每次发生数据变更会被立即记录到磁盘

l 性能较差但数据完整性比较好

7. AOF的缺点

相同数据集的数据而言aof文件要远大于rdb文件,恢复速度慢于rdb

八、 redis的事务

1. 官网介绍

2. redis事务是什么?

l 可以一次执行多个命令,批处理,本质是一组命令的集合。一个事务中的所有命令都会序列化,按顺序地串行化执行而不会被其它命令插入,不许加塞

3. redis事务能做什么?

l 一个队列中,一次性、顺序性、排他性的执行一系列命令

4. redis事务的常用命令

 

原文地址:https://www.cnblogs.com/zhang-da/p/13041194.html