Linux安装配置Redis以及Redis基础概念

文章目录

        • Redis
        • 一、NoSQL
        • 二、NoSQL四大分类
        • 三、分布式数据库CAP原理
        • 四、Redis概述
          • 4.1 Redis是什么
          • 4.2 Redis能做什么
          • 4.3 Redis特性
          • 4.4 相关文件说明
          • 4.5 测试性能
        • 五、linux安装redis
        • 六、Redis基础知识


学习视频链接,示以尊重:https://space.bilibili.com/95256449/video


Redis


一、NoSQL

大数据时代3V:海量、多样、实时

大数据时代3高:高并发、高可拓、高性能

用户的个人信息,社交网络,地理位置等用户自己产生的数据,用户日志等等爆发式增长。数据量大,变化快,MySQL等关系型数据库不再适用,这时就需要使用NoSQL。

NoSQL = Not Only SQL(不仅仅是 SQL),泛指非关系型数据库。

NoSQL 特点:

  • 易扩展(数据之间没有固定关系,很好扩展)
  • 大数据量,高性能(Redis 一秒写8万次,读11万,是一种细粒度的缓存,性能较高)
  • 数据类型多样(不需要事先设计数据库)
  • 传统的RDBMS和NoSQL:
    • 传统的RDMBS:结构化组织、数据和关系都存在单独的表中、严格的一致性、事务操作…
    • NoSQL:不仅仅是数据、没有固定的查询语言、最终一致性、CAP定理、Base理论、高性能,高可用,高可扩展…

真正在公司中的实践:NoSQL + RDBMS 联合使用

1、商品的基本信息:名称、价格、商家信息:

关系型数据库: MySQL / Oracle

2、商品的描述、评论(文字比较多):

文档型数据库:MongoDB

3、图片 :

  • 分布式文件系统 FastDFS
  • 淘宝自己的 TFS
  • Gooale的 GFS
  • Hadoop的HDFS
  • 阿里云的 oss

4、商品的关键字 (搜索) :

  • 搜索引擎:solr、elasticsearch
  • ISerach

5、商品热门的波段信息 :

  • 内存数据库
  • Redis Tair、Memache…

6、商品的交易,外部的支付接口 :

第三方应用

大型互联网应用问题:

  • 数据类型太多
  • 数据源繁多,经常重构
  • 数据要改造,需要大面积改造

解决问题:统一数据服务平台(UDSL)


二、NoSQL四大分类

分类 主流产品 典型应用场景 数据模型 优点 缺点
键值(key-value) Tokyo Cabinet/Tyrant, Redis, Voldemort, Oracle BDB 内容缓存,主要用于处理大量数据的高访问负载,也用于一些日志系统等等。 Key 指向 Value 的键值对,通常用hash table来实现 查找速度快 数据无结构化,通常只被当作字符串或者二进制数据
列存储数据库 Cassandra, HBase, Riak 分布式的文件系统 以列簇式存储,将同一列数据存在一起 查找速度快,可扩展性强,更容易进行分布式扩展 功能相对局限
文档型数据库 CouchDB, MongoDB Web应用(与Key-Value类似,Value是结构化的,不同的是数据库能够了解Value的内容) Key-Value对应的键值对,Value为结构化数据 数据结构要求不严格,表结构可变,不需要像关系型数据库一样需要预先定义表结构 查询性能不高,而且缺乏统一的查询语法。
图形(Graph)数据库 Neo4J, InfoGrid, Infinite Graph 社交网络,推荐系统等。专注于构建关系图谱 图结构 利用图结构相关算法。比如最短路径寻址,N度关系查找等 很多时候需要对整个图做计算才能得出需要的信息,而且这种结构不太好做分布式的集群方案。

NoSQL的重点是non-relational,有如下优势:

  • 易扩展
    • NoSQL数据库种类繁多,但是一个共同的特点都是去掉关系数据库的关系型特性。数据之间无关系,这样就非常容易扩展。也无形之间,在架构的层面上带来了可扩展的能力。甚至有多种NoSQL之间的整合。
  • 灵活的数据模型
    • NoSQL无需事先为要存储的数据建立字段,随时可以存储自定义的数据格式。而在关系数据库里,增删字段是一件非常麻烦的事情。如果是非常大数据量的表,增加字段简直就是一个噩梦。
  • 高可用
    • NoSQL在不太影响性能的情况,就可以方便的实现高可用的架构。比如Cassandra,HBase模型,通过复制模型也能实现高可用。
  • 大数据量,高性能
    • NoSQL数据库都具有非常高的读写性能,尤其在大数据量下,同样表现优秀。这得益于它的无关系性,数据库的结构简单。

NoSQL同样有不适用的场景和不足之处:

不适用场景

  • 要求高度事务性的系统
  • 传统的商业智能应用
  • 复杂的跨文档(表)级联查询

劣势

  • 开发消耗高
  • 商业资源模式少
  • 功能不够齐全
  • 实际上技术还不是完全成熟

三、分布式数据库CAP原理

分布式数据系统的CAP原理的三要素:

  • 一致性(Consistency)**:在分布式系统中的所有数据备份,在同一时刻具有同样的值。(等同于所有节点访问同一份最新的数据副本)。**NoSQL系统通常注重性能和扩展性,而非事务机制(事务就是强一致性的体现)
  • 可用性(Availability):在集群中一部分节点故障后,集群整体依然可以响应客户端的读写请求。
  • 分区容忍性(Partition tolerance):系统在物理网络分区的情况下依然工作良好。分区:(两个区域网络不连通)

CAP原理:在分布式系统中,这三个要素最多只能同时实现两点,不可能三者兼顾:

对于分布式数据系统,分区容忍性是基本要求。而由于当前的网络硬件肯定会出现延迟丢包等问题,所以分区容忍性是必须需要实现的。所以只能在一致性和可用性之间进行权衡,没有NoSQL系统能同时保证这三点。

对于大多数web应用,牺牲一致性而换取高可用性,是目前多数分布式数据库产品的方向。

三个“一致性”:

  • 强一致性:(即时一致性) 假如A先写入了一个值到存储系统,存储系统保证后续A,B,C的读取操作都将返回最新值。
  • 弱一致性:假如A先写入了一个值到存储系统,存储系统不能保证后续A,B,C的读取操作能读取到最新值。此种情况下有一个“不一致性窗口”的概念,它特指从A写入值,到后续操作A,B,C读取到最新值这一段时间。
  • **最终一致性:**最终一致性是弱一致性的一种特例。假如A首先write了一个值到存储系统,存储系统保证如果在A,B,C后续读取之前没有其它写操作更新同样的值的话,最终所有的读取操作都会读取到A写入的最新值。此种情况下,如果没有失败发生的话,“不一致性窗口”的大小依赖于以下的几个因素:交互延迟,系统的负载,以及复制技术中replica的个数。

四、Redis概述

4.1 Redis是什么

Redis(Remote Dictionary Server ),即远程字典服务。是一个开源的使用ANSI-C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。

Redis推荐在linux服务器上进行搭建。

4.2 Redis能做什么

Redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了 master-slave(主从)同步。

  • 内存存储、持久化,内存中是断电即失、所以说持久化很重要(rdb、aof)
  • 效率高,可以用于高速缓存
  • 发布订阅系统
  • 地图信息分析
  • 计时器、计数器(浏览量统计)
4.3 Redis特性
  • 多样的数据类型
  • 持久化
  • 集群
  • 事务
4.4 相关文件说明

redis-server.exe:开启redis服务

redis-cli.exe:连接redis客户端,开启后可输入命令

127.0.0.1:6379> ping #测试连接
PONG
127.0.0.1:6379> set name xingyu #设置键值对
OK
127.0.0.1:6379> get name #获取键值对
"xingyu"

redis-check-aof.exe:检查持久化

redis-benchmark.exe:自带的压力检测工具

4.5 测试性能

redis-benchmark是官方自带的性能测试工具。

格式:redis-benchmark 命令参数

# 测试:100个并发连接 100000请求 
redis-benchmark -h localhost -p 6379 -c 100 -n 100000
#set测试结果
====== SET ======
  100000 requests completed in 2.03 seconds
  100 parallel clients
  3 bytes payload
  keep alive: 1
  host configuration "save": 900 1 300 10 60 10000
  host configuration "appendonly": no
  multi-thread: no

2.35% <= 1 milliseconds
98.46% <= 2 milliseconds
99.93% <= 3 milliseconds
99.99% <= 4 milliseconds
100.00% <= 4 milliseconds
49236.83 requests per second

五、linux安装redis

1、下载安装包

2、解压Redis的安装包到 /opt 目录下

3、进入解压后的文件,可以看到redis的配置文件:redis.conf

4、基本的环境安装

yum install gcc-c++ 
make 
make install

5、redis的默认安装路径 /usr/local/bin

6、将redis配置文件,复制到当前目录下,之后启动redis就用这个配置文件启动

#进入/usr/local/bin后
mkdir kconfig
cp /opt/redis-6.0.5/redis.conf kconfig

7、redis默认不是后台启动的,修改配置文件

vim redis.conf
#将daemonize no改为daemonize yes

8、启动Redis服务

#回到/usr/local/bin目录,通过指定的配置文件启动redis服务
redis-server kconfig/redis.conf

9、使用redis-cli 进行连接测试

redis-cli -p 6379

10、查看redis的进程是否开启

ps -ef|grep redis

11、如何关闭Redis服务呢?

shutdown
exit

12、再次查看进程是否存在

13、后面会使用单机多Redis启动集群测试


六、Redis基础知识

1、Redis默认有16个数据库,默认使用的是第0个,可以使用 select 进行切换数据库。

127.0.0.1:6379> select 3 # 切换数据库 
OK 
127.0.0.1:6379[3]> dbsize # 查看DB大小
(integer) 0

2、查看当前数据库所有的key:

127.0.0.1:6379[3]> keys * # 查看数据库所有的key 
1) "name"

3、清除当前数据库:flushdb

4、清除全部数据库的内容:flushall

5、Redis 是单线程的

官方表示,Redis是基于内存操作,CPU不是Redis性能瓶颈,Redis的瓶颈是根据机器的内存和网络带宽

Redis 为什么单线程还这么快?

  • 误区1:高性能的服务器一定是多线程的
  • 误区2:多线程(CPU上下文会切换!)一定比单线程效率高

核心:Redis 是将所有的数据全部放在内存中的,所以说使用单线程去操作效率就是最高的,多线程 (CPU上下文会切换:耗时的操作),对于内存系统来说,没有上下文切换的情况下效率就是最高的!多次读写都是在一个CPU上的,在内存情况下,这个就是最佳的方案!

你可能感兴趣的:(数据库,数据库,分布式,redis,linux,大数据)