Redis——redis配置与优化

2023-11-09

一、关系数据库与非关系型数据库

1、关系型数据库

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

  • 一个结构化的数据库,创建在关系模型基础上,一般面向于记录

  • 包括:Oracle、MySQL、SQL Server、Microsoft Access、DB2等

2、非关系型数据库

NoSQL(NoSQL = Not Only SQL ), 意思是“不仅仅是 SQL”, 是非关系型数据库的总称。

  • 除了主流的关系型数据库以外的数据库,都认为是非关系型的
  • 包括:Redis、MongDB、Hbase、CouhDB等

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

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(RemoteDictionaryServer, 远程字典型)是一个开源的、使用 C 语言编写的 NoSQL数据库。 Redis 基于内存运行并支持持久化, 采用 key-value(键值对) 的存储形式, 是目前分布式架构中不可或缺的一环。

=举例:杯子理解成键,水理解成值,通过键找到值=

Redis 服务器程序是单进程模型,也就是在一台服务器上可以同时启动多个 Redis 进程,而 Redis 的实际处理速度则是完全依靠于主进程的执行效率。 若在服务器上只运行一个Redis 进程, 当多个客户端同时访问时, 服务器的处理能力是会有一定程度的下降; 若在同一台服务器上开启多个 Redis 进程, Redis 会提高并发处理能力的同时会给服务器的 CPU 造成很大压力。 也就是说在实际生产环境中, 需要根据实际的需求来决定开启多少个 Redis进程。 若对高并发要求更高一些, 可能会考虑在同一台服务器上开启多个进程; 若 CPU 资源比较紧张, 采用单进程即可。

1、Redis的应用场景

Redis 作为基于内存运行的数据库, 缓存是其最常应用的场景之一, 除此之外, Redis
常见应用场景还包括: 获取最新 N 个数据的操作、 排行榜类应用、 计数器应用、 存储关系、
实时分析系统、 日志记录。

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

在这里插入图片描述

三、Redis 安装部署

Redis 的安装相对于其他服务比较简单,首先需要到 Redis 官网(https://www.redis.io)下载相应的源码软件包, 然后上传至 Linux 系统的服务器中进行解压

通常情况下在 Linux 系统中进行源码编译安装, 需要先执行./configure 进行环境检查与配置, 从而生成Makefile 文件, 再执行 make && make install 命令进行编译安装。 而Redis 源码包中直接提供了 Makefile 文件, 所以在解压完软件包后, 可直接进入解压后的软件包目录, 执行 make 与 make install 命令进行安装。

make install 只是安装了二进制文件到系统中, 并没有启动脚本和配置文件。 软件包中默认提供了一个install_server.sh 脚本文件, 通过该脚本文件可以设置 Redis 服务所需要的相关配置文件。 当脚本运行完毕, Redis 服务就已经启动, 默认侦听端口为 6379

1、安装Redis
[root@localhost ~]# mkdir /abc
[root@localhost ~]# mount.cifs //192.168.100.1/bao /abc
[root@localhost ~]# cd /abc
[root@localhost abc]# cd Y2C7
[root@localhost Y2C7]# tar zxvf redis-5.0.4.tar.gz -C /opt

[root@localhost Y2C7]# cd /opt
[root@localhost opt]# ls
redis-5.0.4  rh

[root@localhost opt]# yum -y install gcc gcc-c++ make perl

[root@localhost opt]# cd redis-5.0.4/

[root@localhost redis-5.0.4]# make
[root@localhost redis-5.0.4]# make PREFIX=/usr/local/redis install

安装过程中,更改安装路径可以用make PRRFIX=安装路径 install

[root@localhost redis-5.0.4]# ln -s /usr/local/redis/bin/* /usr/local/bin/
[root@localhost redis-5.0.4]# cd /opt/redis-5.0.4/utils/
[root@localhost utils]# ./install_server.sh 
Welcome to the redis service installer
This script will help you easily set up a running redis server

Please select the redis port for this instance: [6379] 			//回车
Selecting default: 6379
Please select the redis config file name [/et
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Redis——redis配置与优化 的相关文章

随机推荐

  • 【微信】微信小程序前后端数据请求示例

    本篇内容简介之 微信小程序的前后端数据交互示例 主要涉及到获取服务端的数据 和提交到服务端的数据演示 服务端使用java springboot进行快速搭建演示 1 在小程序中的index wxml中进行一个表单的设计 例如 说明一下wxml
  • CMake中set_target_properties/get_target_property的使用

    CMake中的set target properties命令用于为targets设置属性 targets can have properties that affect how they are built 其格式如下 set target
  • 推荐

    1 搭建你自己的神经网络 Make Your Own Neural Network 价格 45 美元 一步步让你了解神经网络的数学原理并用 Python 搭建自己的神经网络 神经网络是深度学习和人工智能的关键元素 然而 几乎很少有人真正了解
  • DITA Topic常用开发

    DITA Topic常用开发 Concept Topic用于描述类 Task Topic用于过程类 步骤类 Reference Topic用于过 DITA Topic开发特殊 应急维护手册使用 xtask 案例集手册使用 trbcase 巡
  • 破解2018的Pycharm的与下载JetbrainsCrack-3.1-release-enc.jar的架包

    https pan baidu com s 1L2uJeQIwg jDvHa7t tB6Q 提取码 143o 安装 找到安装目录如下 这里面根据下的版本号来引入 我用的是3 1的 博客转发的是2 8的 要改成3 1 C Program Fi
  • 蓝桥杯2019年第十届真题-人物相关性分析

    题目 题目链接 题解 字符串 滑动区间 不想写题解了 bug没de出来 吃饭去了 代码 我的代码 不知道为什么一直就是91 有大佬帮忙看一下吗 include
  • mybatis 传递参数的7种方法

    文章目录 1 第一种方式 匿名参数 顺序传递参数 2 第二种方式 使用 Param注解 3 使用Map传递参数 4 用过java bean传递多个参数 5 直接使用JSON传递参数 6 传递集合类型参数List Set Array 7 参数
  • 以人为本

    软件团队想要保证高质量的软件交付 一般情况下会想到以下几点 多的测试人员 高薪资 福利 各种质量管理工具和手法 etc 我们有大量的实际经验表明 这些方法往往没有达到预期值 更有甚者 会不那么有效 为何会如此 通过不断的事后回顾 我想导致这
  • Kubernetes核心概念—工作负载

    Kubernetes的工作负载包括五种类型 Deployments 一个 Deployment 控制器为 Pods 和 ReplicaSets 提供声明式的更新能 StatefulSets StatefulSet 是用来管理有状态应用的工作
  • 行为型模式-解释器模式

    package per mjn pattern interpreter import java util HashMap import java util Map 环境角色类 public class Context 定义一个map集合 用
  • C++ 多态

    多态按字面的意思就是多种形态 当类之间存在层次结构 并且类之间是通过继承关联时 就会用到多态 C 多态意味着调用成员函数时 会根据调用函数的对象的类型来执行不同的函数 下面的实例中 基类 Shape 被派生为两个类 如下所示 实例 incl
  • 入行软件测试7年,才知道原来字节跳动这么容易进

    当前就业环境 裁员 失业消息满天飞 好像有一份工作就不错了 更别说高薪了 其实这只是一方面 而另一方面 各大企业依然求贤若渴 高技术人才依然紧缺 只要你技术过硬 拿个年薪50w不是问题 我的人生格言 比你优秀的人不可怕 可怕的是比你优秀的人
  • C# Winform基本知识、文件结构、控件简介

    1 程序入口 Program类 STAThread com线程模型 单线程单位 如果没有它 无法工作 Application 提供了一系列静态化方法和属性 来管理应用程序 Application EnableVisualStyles 启用应
  • Python 异常捕获与处理

    视频版教程 Python3零基础7天入门实战视频教程 异常捕获与处理 如果出现程序异常 我们不去捕获和处理 那么程序遇到异常 就直接终止 后续的代码无法继续执行 这将是可怕的事情 Python提供了完善的异常处理机制 可以实现捕获异常 处理
  • html头部代码

    学习html是件比较容易的事情 但单单学html语言肯定是不够用的 所以大多数人并没有拿html作为学习核心 而是将html作为javascript 动态语言或者css学习的必经之路 于是很多人并不关注一些其他的html标签 主流书籍大多对
  • 【JavaSE系列】第八话 —— 继承和它的边角料们

    导航小助手 思维导图 一 引出继承 二 继承的概念 三 继承的语法 四 父类成员访问 4 1 子类中访问父类的成员变量 4 2 子类访问父类的成员方法 五 super 关键字 5 1 super 成员变量 5 2 super 成员方法 5
  • QT学习 -- 12信号连接信号

    视频学习链接 https www bilibili com video BV1g4411H78N p 12 信号可以连接事件 普通函数 可以连接槽函数 也可以连接信号 一 信号触发 连接 信号 举例如下 当用鼠标点击按键 按键发出点击 cl
  • 【Leetcode】560. 和为K的子数组

    题目描述 给你一个整数数组 nums 和一个整数 k 请你统计并返回该数组中和为 k 的连续子数组的个数 题解 暴力解法 双循环 i指针从左往右走 j指针从i往左走 一个个遍历一个个加起来 直到加到等于k 就计数一次 执行用时 1445 m
  • okhttp异常: java.io.IOException: closed okio.RealBufferedSource$1.read

    java io IOException closed at okio RealBufferedSource 1 read RealBufferedSource java 405 at sun nio cs StreamDecoder rea
  • Redis——redis配置与优化

    文章目录 一 关系数据库与非关系型数据库 1 关系型数据库 2 非关系型数据库 二 Redis 简介 1 Redis的应用场景 2 Redis的优点 三 Redis 安装部署 1 安装Redis 2 配置参数 四 Redis