文章目录

  • 关系数据库与非关系型数据库介绍
    • 关系数据库
    • 非关系型数据库
    • 非关系型数据库产生背景
  • Redis介绍
    • Redis 简介
    • Redis 优点
  • Redis安装部署
  • Redis数据库的基本操作
    • set与get 命令
    • key 相关命令
    • 数据的迁移
  • Redis 命令工具
    • redis-benchmark 测试工具
    • 其他命令工具
  • Redis配置
    • 参数与基本作用

关系数据库与非关系型数据库介绍

关系数据库

  • 关系型数据库是一个结构化的数据库, 创建在关系模型基础上, 一般面向于记录。 它借
    助于集合代数等数学概念和方法来处理数据库中的数据,。 关系模型就是指二维表格模型,
    因而一个关系型数据库就是由二维表及其之间的联系组成的一个数据组织。 现实世界中, 各
    种实体与实体之间的各种联系都可以用关系模型来表示。 SQL 语句(标准数据查询语言) 就
    是一种基于关系型数据库的语言, 用于执行对关系型数据库中数据的检索和操作。
    主流的关系型数据库包括 Oracle、 MySQL、 SQL Server、 Microsoft Access、 DB2 等等。

非关系型数据库

  • NoSQL(NoSQL = Not Only SQL ), 意思是“不仅仅是 SQL”, 是非关系型数据库的总称。
    主流的 NoSQL 数据库有 Redis、 MongBD、 Hbase、 CouhDB 等等, 以上这些数据库, 他们的存
    储方式、 存储结构以及使用的场景都是完全不同的。 所以我们认为它是一个非关系型数据库
    的集合, 而不是像关系型数据库一样, 是一个统称。 换言之, 除了主流的关系型数据库以外
    的数据库, 都认为是非关系型的。 NoSQL 数据库凭借着其非关系型、 分布式、 开源和横向扩
    展等优势, 被认为是下一代数据库产品。

非关系型数据库产生背景

  • 关系型数据库已经诞生很久了, 而且我们一直在使用, 没有什么问题。 面对这样的情况,
    为什么还会产生 NoSQL? 那么, 下面我们就来介绍一下 NoSQL 产生的背景。
    随着 Web2.0 网站的兴起, 关系型数据库在应对 Web2.0 网站, 特别是海量数据和高并发
    的 SNS(Social Networking Services, 即社交网络服务) 类型的 Web2.0 纯动态网站时,
    暴露出很多难以解决的问题。
  1. High performance——对数据库高并发读写需求
    Web2.0 网站会根据用户的个性化信息来实时生成动态页面和提供动态信息, 因此, 无
    法使用动态页面静态化技术。 所以数据库的并发负载非常高, 一般会达到 10000 次/s 以上
    的读写请求。 关系型数据库对于上万次的查询请求还是可以勉强支撑的。 当出现上万次的写
    数据请求, 硬盘 IO 就已经无法承受了。 对于普通的 BBS 网站, 往往也会存在高并发的写数
    据请求, 如明星鹿晗在微博上公布恋情, 结果因为流量过大而引发微博瘫痪。

  2. Huge Storage——对海量数据高效存储与访问需求
    类似于 Facebook、 Friendfeed 这样的 SNS 网站, 每天会产生大量的用户动态信息。 如
    Friendfeed,一个月就会产生 2.5 亿条用户动态信息, 对于关系型数据库来说, 在一个包含
    2.5 亿条记录的表中执行 SQL 查询, 效率是非常低的。

  3. High Scalability && High Availability——对数据库高可扩展性与高可用性需求
    在 Web 架构中, 数据库是最难进行横向扩展的。 当应用系统的用户量与访问量与日俱增
    时, 数据库是没办法像 Web 服务一样, 简单地通过添加硬件和服务器节点来扩展其性能和负
    载能力的。 尤其对于一些需要 24 小时对外提供服务的网站来说, 数据库的升级与扩展往往
    伴随着停机维护与数据迁移, 其工作量是非常庞大的。
    关系型数据库和非关系型数据库都有各自的特点与应用场景, 两者的紧密结合将会给
    web2.0 的数据库发展带来新的思路。 让关系数据库关注在关系上, 非关系型数据库关注在
    存储上。 例如, 在读写分离的 MySQL 数据库环境中,可以把经常访问的数据存储在非关系型
    数据库中, 提升访问速度。

Redis介绍

Redis 简介

  • Redis(RemoteDictionaryServer, 远程字典型)是一个开源的、使用 C 语言编写的 NoSQL
    数据库。 Redis 基于内存运行并支持持久化, 采用 key-value(键值对) 的存储形式, 是目
    前分布式架构中不可或缺的一环。
  • Redis 服务器程序是单进程模型,也就是在一台服务器上可以同时启动多个 Redis 进程,而
    Redis 的实际处理速度则是完全依靠于主进程的执行效率。 若在服务器上只运行一个Redis 进程,当多个客户端同时访问时, 服务器的处理能力是会有一定程度的下降; 若在同一台服务器上开启多个 Redis 进程, Redis 会提高并发处理能力的同时会给服务器的 CPU 造成很大压力。 也就是说在实际生产环境中, 需要根据实际的需求来决定开启多少个 Redis进程。 若对高并发要求更高一些, 可能会考虑在同一台服务器上开启多个进程; 若 CPU 资源比较紧张, 采用单进程即可。

Redis 优点

  • 具有极高的数据读写速度, 数据读取的速度最高可达到 110000 次/s, 数据写入速度最
    高可达到 81000 次/s。
  • 支持丰富的数据类型, 不仅仅支持简单的 key-value 类型的数据, 还支持 Strings,
    Lists, Hashes, Sets 及 Ordered Sets 等数据类型操作。
  • 支持数据的持久化, 可以将内存中的数据保存在磁盘中, 重启的时候可以再次加载进行
    使用。
  • 原子性, Redis 所有操作都是原子性的。
  • 支持数据备份, 即 master-salve 模式的数据备份。

Redis安装部署

  1. 安装编译环境
  yum install gcc gcc-c++ make -y
  1. 安装redis
 #官网下载redis-5.0.7tar -zxvf redis-5.0.7.tar.gz -C /opt/cd /opt/redis-5.0.7/make#安装过程中,更改安装路径可以用make PRRFIX=安装路径 installmake PREFIX=/usr/local/redis install
 cd utils/./install_server.sh   #一直回车

  1. 建立软链接
 ln -s /usr/local/redis/bin/* /usr/local/bin/
  1. 查看端口
 netstat -ntap |grep 6379#配置完成

  1. 修改配置文件绑定IP
 #添加本主机的网络IPvim /etc/redis/6379.conf

  1. 重启服务
 /etc/init.d/redis_6379 restart
  1. 登录redis
 redis-cli -h 192.168.18.101 -p 6379

Redis数据库的基本操作

set与get 命令

  • set: 存放数据, 基本的命令格式为 set key value。
  • get: 获取数据, 基本的命令格式为 get key。

key 相关命令

  • 在Redis数据库中,与 key 相关的命令主要包含以下几种:

  • keys
    使用 keys 命令可以取符合规则的键值列表, 通常情况可以结合*、 ? 等选项来使用

  • exists
    exists 命令可以判断键值是否存在。存在为1,不存在为0。

  • del
    del命令可以删除当前数据库的指定key。

  • type
    使用 type 命令可以获取 key 对应的 value 值类型。

  • rename
    rename 命令是对已有 key 进行重命名, 其命令格式为: rename 源 key 目标 key。 使用
    rename 命令进行重命名时, 无论目标 key 是否存在都进行重命名, 且源 key 的值会覆盖目
    标 key 的值。 在实际使用过程中, 建议先用 exists 命令查看目标 key 是否存在, 然后再决
    定是否执行 rename 命令, 以避免覆盖重要数据。

数据的迁移

  • 重新进入数据库,默认进入[0]数据库,并查看。
  • SELECT 10 进入[10]数据库,查看。
  • 将[0]数据库中的professor迁移到[10]中
  • 返回到[10],查看
  • 清除数据

Redis 命令工具

redis-benchmark 测试工具

  • 基本语法:
 redis-benchmark [option] [option value]
参数 功能描述
-h 指定服务器主机名。
-p 指定服务器端口。
-s 指定服务器 socket。
-c 指定并发连接数。
-n 指定请求数。
-d 以字节的形式指定 SET/GET 值的数据大小。
-k 1=keep alive 0=reconnect 。
-r SET/GET/INCR 使用随机 key, SADD 使用随机值。
-P 通过管道传输请求。
-q 强制退出 redis。 仅显示 query/sec 值。
–csv 以 CSV 格式输出。
-l 生成循环, 永久执行测试。
-t 仅运行以逗号分隔的测试命令列表。
-I Idle 模式。 仅打开 N 个 idle 连接并等待。
 #发送 100 个并发连接与 100000 个请求测试性能redis-benchmark -h 192.168.18.101 -p 6379 -c 100 -n 100000#查看get,set时间


 #测试存取大小为 100 字节的数据包的性能redis-benchmark -h 192.168.18.101 -p 6379 -q -d 100

其他命令工具

  • Redis 软件提供了多个命令工具, 当 Redis 安装时, 所包含的软件工具会同时被安装到
    系统中, 在系统中可以直接使用。 这些命令工具的作用分别如下所示。
命令 功能描述
redis-server 用于启动 Redis 的工具
redis-benchmark 用于检测 Redis 在本机的运行效率
redis-check-aof 修复 AOF 持久化文件
redis-check-rdb 修复 RDB 持久化文件
redis-cli 是 Redis 命令行工具
redis-setinel 是 redis-server 文件的软链接

Redis配置

  • Redis 主配置文件为/etc/redis/6379.conf, 由注释行与设置行两部分组成。 与大多数Linux 配置文件一样, 注释性的文字以“#” 开始, 包含了对相关配置内容进行的说明和解释。 除了注释行与空行以外的内容即为设置行。 可根据生产环境的需求调整相关参数。
  • 在/etc/redis/6379.conf中进行配置与优化

参数与基本作用

  • timeout 300
    当客户端闲置多长时间后关闭连接, 如果指定为 0, 表示关闭该功能。
  • dbfilename dump.rdb
    指定本地数据库文件名, 默认值为 dump.rdb。
  • dir /var/lib/redis/6379
    指定本地数据库存放目录。
  • maxclients 10000
    设置同一时间最大客户端连接数, 默认为 10000, Redis可以同时打开的客户端连接数为 Redis 进程可以打开的最大文件描述符数, 如果设置 maxclients 0, 表示不限制。 当客户端连接数到达限制时, Redis 会关闭新的连接并向客户端返回 max number of clients reached 错误信息。
  • rdbcompression yes
    指定存储至本地数据库时是否压缩数据, 默认为 yes,Redis 采用 LZF 压缩, 如果为了节省 CPU 资源, 可以关闭该选项, 但会导致数据库文件变的巨大。
  • slaveof [masterip][masterport]
    设置当本机为 slav 从服务器时,设置 maste 服务的 IP地址及端口,在 Redis 启动时,它会自动从 master进行数据同步。
  • masterauth [master-password]
    当 master服务设置了密码保护时,slave服务连接master的密码。.
  • requirepass foobared
    设置 Redis 连接密码, 如果配置了连接密码, 客户端在连接 Redis 时需要通过 AUTH 命令提供密码, 默认关闭。
  • maxmemory bytes
    指定Redis最大内存限制,Redis在启动时会把数据加载到内存中, 达到最大内存后,Redis 会先尝试清除已到期或即将到期的 Key, 当此方法处理后,仍然到达最大内存设置,将无法再进行写入操作,但仍然可以进行读取操作。Redis新的vm机制,会把Key存放内存,Value会存放在swap区。
  • appendonly no
    指定是否在每次更新操作后进行日志记录,Redis在默认情况下是异步的把数据写入磁盘,如果不开启,可能会在断电时导致一段时间内的数据丢失。因为redis本身同步数据文件是按上面 save 条件来同步的,所以有的数据会在一段时间内只存在于内存中。默认为no。
  • appendonly.aof
    指定更新日志文件名,默认为appendonly.aof。
    appendfsync everysec
    指定更新日志条件, 共有 3 个可选值:
    no:表示等操作系统进行数据缓存同步到磁盘(快)
    always:表示每次更新操作后手动调用 fsync()将数据写到磁盘(慢, 安全)
    everysec:表示每秒同步一次(中等, 默认值)
    activerehashing yes
    指定是否激活重置哈希,默认为开启。
  • include /path/to/local.conf
    指定包含其它的配置文件, 可以在同一主机上多个 Redis实例之间使用同一份配置文件。

Nosql之Redis的概念介绍+安装配置+Redis数据库基本操作相关推荐

  1. redis cluster 集群 安装 配置 详解

    redis cluster 集群 安装 配置 详解 张映 发表于 2015-05-01 分类目录: nosql 标签:cluster, redis, 安装, 配置, 集群 Redis 集群是一个提供在 ...

  2. linux下安装配置redis服务

    2019独角兽企业重金招聘Python工程师标准>>> linux下安装配置redis服务 2016年03月25日 15:39:31 coding_everyday 阅读数:3530 ...

  3. HarmonyOS实战[一]——原理概念介绍安装:基础篇

    [本文正在参与"有奖征文|HarmoneyOS征文大赛"活动] 相关文章: HarmonyOS实战[一]--原理概念介绍安装:基础篇 HarmonyOS实战[二]-超级详细的原子化 ...

  4. linux系统数据库服务器配置,Linux安装配置MariaDB数据库全程详解

    MariaDB是采用Maria存储引擎的MySQL分支版本,在很多方面强于MySQL,那么在Linux下如何安装MariaDB数据库呢?下面小编就给大家介绍下Linux安装配置MariaDB数据库的方 ...

  5. linux装mongodb数据库,Linux下安装配置MongoDB数据库

    说明: 操作系统:CentOS 5.X 64位 IP地址:192.168.21.130 实现目的: 安装配置MongoDB数据库 具体操作: 一.关闭SElinux.配置防火墙 1.vi /etc/s ...

  6. 测试linux mongodb数据库开启,安装配置MongoDB数据库

    安装配置MongoDB数据库 实验环境: 系统环境:rhel6 x64 selinux and iptables disabled 一.安装MongoDB [root@server1 ~]# ls m ...

  7. CentOS7下使用yum快速安装配置oracle数据库

    2019独角兽企业重金招聘Python工程师标准>>> CentOS7下使用yum快速安装配置oracle数据库 2017年10月10日 15:29:23 aladdin_sun 阅 ...

  8. 阿里云ECS服务器配置LAMP时安装配置mysql数据库填坑(二)

    阿里云ECS服务器配置LAMP时安装配置mysql数据库填坑(二) 上篇文章讲到的是安装apache服务器时遇到的坑,经过排错总算是把Apache的坑填完了,没想到安装mysql又跳坑里了,真是不得不 ...

  9. MongoDB基本概念和安装配置

    基本概念 MongoDB直接存储JSON. 有了NoSQL数据库之后,可以直接在业务层将数据按照指定的结构进行存储. NO SQL NoSQL 1 数据库 数据库 2 表 集合 3 行 文档 4 列 ...

最新文章

  1. php的验证码要gd库,怎么在PHP中使用GD库实现一个验证码功能
  2. python 动态属性和特性
  3. 水题 Codeforces Beta Round #70 (Div. 2) A. Haiku
  4. Python实现8中常用排序算法
  5. 计算机应用基础题excel,计算机应用基础专练习题excel.doc
  6. 台式计算机的无线上网卡多少线,台式电脑可以用无线上网卡上网吗
  7. 百度地图API 拾取坐标
  8. .NET框架设计(1)
  9. Solaris 设备状态检查常用命令
  10. 农历 阴历 转换阳历算法
  11. 电商战决胜在物流 聚美优品破瓶颈发展
  12. 知物由学 | SO VMP 加壳与混淆,为移动应用提供函数级保护
  13. 全网最全面的python的讲解,讲的无可挑剔《记得收藏》
  14. PHP实现图片上传功能
  15. 基于DSP/BIoS设备驱动模型的视频驱动程序开发
  16. 快递查询(快递单号智能识别/快递公司+快递单号)-完整提供 Demo 代码示例及数据专业且全面的 API 查询接口
  17. 大学计算机基础实验教程实验2-7,大学计算机基础实验教程(Windows 7+Office 2010)(第2版)...
  18. 伦敦大学学院的新研究报告揭示主流分布式账本技术网络的能耗水平
  19. UNIX基本操作命令
  20. JAVA日常开发中常用的日志记录方式,攒个赞好不好?

热门文章

  1. 基于α-β剪枝算法的智能五子棋
  2. 崖山数据库系统YashanDB荣获“2022年度信创卓越贡献奖”
  3. 网易人工智能受邀出席第二届云创大会
  4. 微搭典型应用需求梳理
  5. jupyter notebook 恢复删除代码块
  6. 细节6:算术右移和逻辑右移
  7. Hybird A*算法
  8. git clone失败:Cloning into... fatal: unable to access... error setting certificate verify locations
  9. python docx 合并文档 图片_Python合并word文档制作电子书
  10. ccf 3. 缺席考试的是谁?(难度3)