2024 RedisAnd Mysql基础与进阶操作系列(13)作者——LJS[你个小黑子这都还学不会嘛?你是真爱粉嘛?真是的 ~;以后请别侮辱我家鸽鸽]

本文涉及的产品
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
RDS AI 助手,专业版
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
简介: Redis之Nosql数据库分类、存储类型、特点;Redis 作用、与其他库的对比、使用场景以及如何部署、安装等具体详解步骤;举例说明、注意点及常见报错问题所对应的解决方法

欢迎各位彦祖与热巴畅游本人专栏与博客

你的三连是我最大的动力

以下图片仅代表专栏特色 [点击箭头指向的专栏名即可闪现]

专栏跑道一

➡️网络空间安全——全栈前沿技术持续深入学习

image.gif

专栏跑道二

➡️ 24 Network Security -LJS

image.gif

image.gif

image.gif

专栏跑道三


➡️ MYSQL REDIS Advance operation

image.gif

专栏跑道四

➡️HCIP;H3C-SE;CCIP——LJS[华为、华三、思科高级网络]

image.gif

专栏跑道五

➡️RHCE-LJS[Linux高端骚操作实战篇]

image.png

专栏跑道六

➡️数据结构与算法[考研+实际工作应用+C程序设计]

image.gif

专栏跑道七

➡️RHCSA-LJS[Linux初级及进阶骚技能]

image.gif

image.gif

上节回顾





1.NoSQL简介

1.1 什么是NoSQL?

NoSQL,指的是非关系型的数据库。NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称。

NoSQL用于超大规模数据的存储

(例如谷歌或Facebook每天为他们的用户收集万亿比特的数据)。这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展

1.2 我们为什么使用NoSQL ?

  • 今天我们可以通过第三方平台(如:Google,Facebook等)可以很容易的访问和抓取数据。
  • 用户的个人信息,社交网络,地理位置,用户生成的数据和用户操作日志已经成倍的增加。我们如果要对这些用户数据进行挖掘,那SQL数据库已经不适合这些应用了, NoSQL数据库的发展也却能很好的处理这些大的数据。
  • 随着互联网 web2.0 网站的兴起,传统的关系数据库在应付 web2.0 网站,特别是超大规模和高并发的SNS 类型的 web2.0 纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库 则由于其本身的特点得到了非常迅速的发展。
  • NoSQL 数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题。

1.3 RDBMS vs NoSQL

RDBMS vs NoSQL

NoSQL RDBMS
代表着不仅仅是SQL 高度组织化结构化数据
没有声明性查询语言 结构化查询语言(SQL)
没有预定义的模式 数据和关系都存储在单独的表中
键 - 值对存储,列存储,文档存储,图形数据库 数据操纵语言,数据定义语言
最终一致性,而非ACID属性 严格的一致性
非结构化和不可预知的数据 基础事务
CAP定理
高性能,高可用性和可伸缩性

1.4 NoSQL 产品

常见的NoSQL产品:redis、memcache、mongdb等

image.gif 编辑

NoSQL产品的显著特点:

1、NoSQL产品一般不使用严格的表关系;

2、NoSQL产品的数据查询一般不用在sql上;

image.gif

1.5 NoSQL 数据库分类

NoSQL 数据库分类

键值数据库 列族数据库 文档数据库 图形数据库
应用 内容缓存 分布式数据存储与管理 存储、索引并管理面向文档的数据或者类似的半结构化数据 大量复杂、互连接、低结构化的图结构场合,如社交网络、推荐系统等
缺点 无法存储结构化信息、条件查询效率较低 缺乏统一的查询语言 复杂性高、只能支持一定的数据规模
优点 扩展性好、灵活性好、大量写操作时性能高 查找速度快、可扩展性强、容易进行分布式扩展、复杂性低 性能好、灵活性高、复杂性低、数据结构灵活 活性高、支持复杂的图形算法、可用于构建复杂的关系图谱

1.6NoSQL 存储类型及特点

NoSQL存储类型及特点

类型 部分代表 特点
列存 储 Hbase Cassandra Hypertable 顾名思义,是按列存储数据的。最大的特点是方便存储结构化 和半结构化数据,方便做数据压缩,对针对某一列或者某几列 的查询有非常大的IO优势。
文档 存储 MongoDB CouchDB 文档存储一般用类似json的格式存储,存储的内容是文档型 的。这样也就有有机会对某些字段建立索引,实现关系数据库 的某些功能。
keyvalue 存储 Tokyo Cabinet / Tyrant Berkeley DB MemcacheDB Redis 可以通过key快速查询到其value。一般来说,存储不管value 的格式,照单全收。(Redis包含了其他功能)
图存储 Neo4J FlockDB 图形关系的最佳存储。使用传统关系数据库来解决的话性能低 下,而且设计使用不方便。
对象 存储 db4o Versant 通过类似面向对象语言的语法操作数据库,通过对象的方式存 取数据。
xml 数据 库 Berkeley DB XML BaseX 高效的存储XML数据,并支持XML的内部查询语法,比如 XQuery,Xpath。

2.Redis

2.1 Redis简介

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

(2)Redis 与其他 key - value 缓存有以下三个特点           

  • Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用
  • Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储  
  • Redis支持数据的备份,即master-slave模式的数据备份

2.2 Redis作用

Redis作用

内存存储和持久化:redis支持异步将内存中的数据写到硬盘上,同时不影响继续服务
取最新N个数据的操作,如:可以将最新的10条评论的ID放在Redis的List集合里面
模拟类似于HttpSession这种需要设定过期时间的功能
发布、订阅消息系统
定时器、计数器

2.3 Redis下载网站

2.4Redis使用群体

目前全球最大的 Redis 用户是新浪微博,在新浪有 200 多台物理机,400 多个端口正在运行着 Redis, 有 +4G 的数据跑在 Redis 上来为微博用户提供服务。 image.gif 编辑

image.gif

2.5Redis的部署场景

1.应用程序直接访问 Redis 数据库

image.gif

2. 应用程序直接访问 Redis,只有当 Redis 访问失败时才访问 MySQL image.gif

2.6Redis与其他数据库和软件的对比【了解一下;后续详解】

数据库和缓存服务器的特性与功能

名称 类型 数据存储选项 查询类型 附加功能
MySQL 关系数据库 每个数据库可以包 含多个表,每个表 可以包含多个行; 可以处理多个表的 视图(view);支 持空间(spatial) 和第三方扩展 SELECT、 INSERT、 UPDATE、 DELETE、函数、 存储过程 支持ACID性质 (需要使用 InnoDB),主从 复制和主主复制 (master/master replication)
memcached 使用内存存 储的键值缓 存 键值之间的映射 创建命令、读取 命令、更新命 令、删除命令以 及其他几个命令 为提升性能而设的 多线程服务器
MySQL 关系数据库 每个数据库可以包 含多个表,每个表 可以包含多个行; 可以处理多个表的 视图(view);支 持空间(spatial) 和第三方扩展 SELECT、 INSERT、 UPDATE、 DELETE、函数、 存储过程 支持ACID性质 (需要使用 InnoDB),主从 复制和主主复制 (master/master replication)
PostgreSQL 关系数据库 每个数据库可以包 含多个表,每个表 可以包含多个行; 可以处理多个表的 视图;支持空间和 第三方扩展;支持 可定制类型 SELECT、 INSERT、 UPDATE、 DELETE、内置函 数、自定义的存 储过程 支持ACID性质, 主从复制,由第三 方支持的多主复制 (multi-master replication)
MongoDB 使用硬盘存 储(ondisk)的非 关系文档存 储 每个数据库可以包 含多个表,每个表 可以包含多个无 schema(schemaless)的BSON文档 创建命令、读取 命令、更新命 令、删除命令、 条件查询命令等 支持map-reduce 操作,主从复制, 分片,空间索引 (spatial index)

3. Redis安装【基于CentOS 7.3 x86-64 系统安装 】

S1:rpm包安装

配置epel的yum源

yum install http://mirrors.163.com/centos/7.3.1611/extras/x86_64/Packages/epel-release-7-
9.noarch.rpm
image.gif

在线yum安装

yum install redis #安装完毕目前是redis-3.2.3-1.el7.x86_64.rpm
image.gif

安装最新版本使用remi

yum install ftp://rpmfind.net/linux/remi/enterprise/7/remi/x86_64/redis4.0.1-1.el7.remi.x86_64.rpm
image.gif

启动服务

systemctl start redis
systemctl enable redis
image.gif

验证测试

[root@localhost ~]# netstat -lnupt | grep :6379
       tcp        0      0 127.0.0.1:6379          0.0.0.0:*               
LISTEN      11413/redis-server 
[root@localhost ~]# ps -ef | grep redis
       redis     11413      1  0 10:46 ?        00:00:03 /usr/bin/redis-server 
127.0.0.1:6379
[root@localhost ~]# lsof -i tcp:6379
       COMMAND     PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME       redis-ser 11413 redis   6u IPv4  29352     0t0 TCP localhost:6379 
(LISTEN)
image.gif

登录

[root@localhost ~]# redis-cli 
127.0.0.1:6379> help
redis-cli 4.0.1
To get help about Redis commands type:
            "help @<group>" to get a list of commands in <group>
            "help <command>" for help on <command>
            "help <tab>" to get a list of possible help topics
            "quit" to exit
To set redis-cli preferences:
            ":set hints" enable online hints
            ":set nohints" disable online hints
Set your preferences in ~/.redisclirc
        
127.0.0.1:6379> quit
image.gif

S2:源码安装

下载

[root@localhost ~]# curl -O http://download.redis.io/releases/redis4.0.1.tar.gz
image.gif

解压

[root@localhost ~]# tar xf redis-4.0.1.tar.gz -C /usr/local/src/
image.gif

安装

[root@localhost ~]# cd /usr/local/src/redis-4.0.1/
[root@localhost redis-4.0.1]# yum install gcc gcc-c++ make -y
[root@localhost redis-4.0.1]# make
[root@localhost redis-4.0.1]# make install
image.gif

启动

[root@localhost redis-4.0.1]# mkdir -p /etc/redis
[root@localhost redis-4.0.1]# cp redis.conf /etc/redis
[root@localhost redis-4.0.1]# cd
[root@localhost ~]# sed -i.bak 's/daemonize no/daemonize yes/' /etc/redis/redis.conf 
[root@localhost ~]# redis-server /etc/redis/redis.conf
            5448:C 12 Aug 11:54:21.743 # oO0OoO0OoO0Oo Redis is starting 
oO0OoO0OoO0Oo
            5448:C 12 Aug 11:54:21.743 # Redis version=4.0.1, bits=64, 
commit=00000000, modified=0, pid=5448, just started
            5448:C 12 Aug 11:54:21.743 # Configuration loaded
image.gif

S3:Redis命令行客户端

发送命令

redis-cli -h 127.0.0.1 -p 6379
redis-cli PING
redis-cli
image.gif

命令返回值

状态回复,e.g. >PING2.3 Redis配置 
           错误恢复, e.g. >ECMD
           整数回复, e.g. >INCR foo
           字符串回复,e.g. >GET foo   >GET notexists`
           多行字符串回复,e.g. >KEYS *
image.gif

S4:源码配置服务脚本:

#1、创建用户和组
groupadd -g 935 -r redis
useradd -u 935 -g 935 -r -d /var/lib/redis -c “redis server” -s /sbin/nologin redis
mkdir -p /var/lib/redis
chown -R redis /var/lib/redis
chmod -R 700 /var/lib/redis
image.gif
#2、修改配置文件
/etc/redis/redis.conf
               
dir /var/lib/redis/
               
daemonize no
image.gif
#3、创建服务脚本
           
[root@localhost ~]# vim /usr/lib/systemd/system/redis.service 
[Unit]
Description=Redis persistent key-value database
After=network.target
[Service]
ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf --daemonize no
ExecStop=/usr/bin/kill -9 `pidof redis-server`
User=redis
Group=redis
RuntimeDirectory=redis
RuntimeDirectoryMode=0755
[Install]
WantedBy=multi-user.target
[root@localhost ~]# systemctl daemon-reload【重新加载单元文件/更新服务状态】




相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
存储 Java 数据库连接
activiti工作流数据库表介绍
activiti工作流数据库表介绍
721 0
|
消息中间件 存储 NoSQL
深入Redis消息队列:Pub/Sub和Stream的对决【redis第六部分】
深入Redis消息队列:Pub/Sub和Stream的对决【redis第六部分】
1068 0
|
网络协议 网络架构
深入理解IP地址、子网掩码、网关的概念
深入理解IP地址、子网掩码、网关的概念
6877 0
深入理解IP地址、子网掩码、网关的概念
|
10月前
|
缓存 Java Spring
IDEA中配置HTML和Thymeleaf热部署的步骤
以上就是在IntelliJ IDEA中配置HTML和Thymeleaf热部署的步骤。这样的配置可以大大提高你的开发效率,让你更专注于代码的编写,而不是等待应用的重启。希望这个指南对你有所帮助!
777 21
|
机器学习/深度学习 算法 网络架构
基于深度学习的图像识别优化策略
【2月更文挑战第21天】 随着人工智能技术的飞速发展,深度学习在图像识别领域取得了突破性进展。然而,在实际应用中,模型的识别效率和准确性常常受限于数据量、计算资源和算法设计。本文旨在探讨针对现有深度学习模型的图像识别优化策略,通过改进训练过程、网络结构与后处理技术,提高模型性能并减少计算资源的消耗。
|
Go 开发者
|
存储 Linux 虚拟化
Hyper-V 安装 CentOS 8.5
本文档介绍了在 Windows 10 上使用 Hyper-V 安装 CentOS 8.5.2111 的详细步骤
1071 3
|
Linux 程序员 计算机视觉
【linux 学习】在Linux中经常用到的cmake、make、make install等命令解析
【linux 学习】在Linux中经常用到的cmake、make、make install等命令解析
1094 0
|
缓存 监控 负载均衡
系统健康长期“三高”:实现高性能、高可用性和高稳定性的关键要素
大家想必都知道在人类健康领域,我们常常警惕“三高”带来的风险,三高是一个不健康的意思,而在数字化世界中,恰恰相反,系统的高性能、高可用性和高稳定性代表着系统的健康和卓越运行,是一个健康的概念。作为开发者怎么能让我们开发的系统保证长期“三高”,那么本文就来简单讨论一下如何让系统长期维持理想的“三高”标准,以及“三高”在实际业务场景中的真实性,并探索一下在技术负责人角色中使用“三高”来评价系统开发工作的可行性等内容,欢迎大家在评论区留言交流。
722 1
系统健康长期“三高”:实现高性能、高可用性和高稳定性的关键要素

相关产品

  • 云数据库 RDS MySQL 版