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

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云原生数据库 PolarDB MySQL 版,通用型 2核8GB 50GB
简介: 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;
相关文章
|
9月前
|
数据采集 JavaScript Python
如何根据目标网站调整Python爬虫的延迟时间?
如何根据目标网站调整Python爬虫的延迟时间?
|
9月前
|
存储 运维 监控
百万指标,秒级查询,零宕机——时序数据库 TDengine 在 AIOps 中的硬核实战
本篇文章详细讲述了七云团队在运维平台中如何利用 TDengine 解决海量时序数据存储与查询的实际业务需求。内容涵盖了从数据库选型、方案落地到业务挑战及解决办法的完整过程,特别是分享了升级 TDengine 3.x 时的实战经验,给到有需要的小伙伴参考阅读。
327 1
|
JavaScript
Vue项目中强制刷新页面的方法
Vue项目中强制刷新页面的方法
268 0
|
12月前
|
人工智能 运维 自然语言处理
今晚围观—>安全运维工程师现场直播用通义灵码发现和修复代码漏洞
12 月 18 日晚 19:30 分,阿里云中小企业直播间「AI 编码助手一年养成记:从“打酱油”到企业开发“真正助手”」见。
|
运维 监控 Devops
自动化运维的魔法:打造高效DevOps流水线
【10月更文挑战第6天】 在现代软件开发的快节奏中,自动化运维成为提高效率、保障质量的重要手段。本文将带你了解如何构建高效的DevOps流水线,从持续集成到部署,再到监控和反馈,我们将一步步揭开自动化运维的神秘面纱。你将学习到如何通过代码和工具的结合,实现软件交付过程的自动化,以及如何通过这一流程提升团队的协作和响应速度。让我们开始探索自动化运维的奇妙之旅吧!
|
机器学习/深度学习 人工智能 自然语言处理
探索深度学习在游戏开发中的创新应用
【8月更文挑战第11天】深度学习技术在游戏开发中的应用为游戏产业带来了前所未有的变革和机遇。通过不断探索和创新应用,我们有理由相信未来的游戏将会更加智能、丰富和引人入胜。
|
监控 安全 算法
室内定位导航技术:数字化时代的智能寻路解决方案
室内定位导航技术融合Wi-Fi、蓝牙信标及超宽带等技术,克服了GPS在室内的局限性。蓝牙信标作为关键组件,通过信号强度分析估算距离,结合三角定位算法确定位置。该技术不仅部署简便、成本低,还能提供准确稳定的定位服务。应用场景包括商场导航、医院科室指引、厂区资产管理、园区安全监控以及智能停车场等,极大提升了用户体验和管理效率。
765 0
室内定位导航技术:数字化时代的智能寻路解决方案
判断是否保持函数依赖的方法
判断是否保持函数依赖的方法
435 2
|
存储 安全 Java
Java.security包中的KeyStore类详解
Java.security包中的KeyStore类详解
882 0
|
人工智能 编译器 开发工具
【Mojo】AI编程语言Mojo简介
Mojo,一门像 Python 一样简单、像 C++ 一样快速的新编程语言,一门用于构建人工智能应用程序的革命性新编程语言
535 0