Redis之一: 简介及环境安装搭建

news2024/11/20 8:26:26

什么是NoSQL?

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

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

为什么使用NoSQL ?

今天我们可以通过第三方平台(如:Google,Facebook等)可以很容易的访问和抓取数据。用户的个人信息,社交网络,地理位置,用户生成的数据和用户操作日志已经成倍的增加。我们如果要对这些用户数据进行挖掘,那SQL数据库已经不适合这些应用了, NoSQL 数据库的发展却能很好的处理这些大的数据。

RDBMS vs NoSQL

RDBMS - 高度组织化结构化数据 - 结构化查询语言(SQL) - 数据和关系都存储在单独的表中。 - 数据操纵语言,数据定义语言 - 严格的一致性 - 基础事务

NoSQL - 代表着不仅仅是SQL - 没有声明性查询语言 - 没有预定义的模式 -键 - 值对存储,列存储,文档存储,图形数据库 - 最终一致性,而非ACID属性 - 非结构化和不可预知的数据 - CAP定理 - 高性能,高可用性和可伸缩性

NoSQL的优点/缺点

优点:

  • - 高可扩展性

  • - 分布式计算

  • - 低成本

  • - 架构的灵活性,半结构化数据

  • - 没有复杂的关系

缺点:

  • - 没有标准化

  • - 有限的查询功能(到目前为止)

  • - 最终一致是不直观的程序

Redis 简介

Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库 从2013年5月开始,Redis的开发由Pivotal(Spring生态)赞助。

Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和地理空间 geospatial 索引半径查询。 Redis 内置了 复制(replication),LUA 脚本(Lua scripting), LRU 驱动事件(LRU eviction),事务(transactions)和不同级别的 磁盘持久化(persistence), 并通过 Redis哨兵(Sentinel)和自动 分区(Cluster)提供高可用性(high availability)。

安装

1.下载

官网:Redis

中文:http://redis.cn/

本教程使用版本:redis-6.0.6.tar.gz

2.上传到服务器

/opt/soft/redis 目录下

3.更新升级GCC

gcc的全称是GNU Compiler Collection,它是由GNU推出的一款功能强大的、性能优越的多平台编译器,是一个能够编译多种语言的编译器。最开始gcc是作为C语言的编译器(GNU C Compiler),现在除了c语言,还支持C++、java、Pascal等语言。gcc支持多种硬件平台。

gcc的特点

  • gcc是一个可移植的编译器,支持多种硬件平台。例如ARM、X86等等。
  • gcc不仅是个本地编译器,它还能跨平台交叉编译。所谓的本地编译器,是指编译出来的程序只能够在本地环境进行运行。而gcc编译出来的程序能够在其他平台进行运行。例如嵌入式程序可在x86上编译,然后在arm上运行。
  • gcc有多种语言前端,用于解析不同的语言。
  • gcc是按模块化设计的,可以加入新语言和新CPU架构的支持。
  • gcc是自由软件。任何人都可以使用或更改这个软件
查看GCC版本
[root@zhang redis]# gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/4.8.5/lto-wrapper
Target: x86_64-redhat-linux
Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-linker-hash-style=gnu --enable-languages=c,c++,objc,obj-c++,java,fortran,ada,go,lto --enable-plugin --enable-initfini-array --disable-libgcj --with-isl=/builddir/build/BUILD/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/isl-install --with-cloog=/builddir/build/BUILD/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/cloog-install --enable-gnu-indirect-function --with-tune=generic --with-arch_32=x86-64 --build=x86_64-redhat-linux
Thread model: posix
gcc version 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) 

默认版本一般都是 4.8.* 的。

准备 SCL

scl软件集(Software Collections),是为了给 RHEL/CentOS 用户提供一种以方便、安全地安装和使用应用程序和运行时环境的多个(而且可能是更新的)版本的方式

1.安装scl源:
yum install centos-release-scl scl-utils-build
2.列出scl有哪些源可以用
yum list all --enablerepo='centos-sclo-rh'|grep gcc
[root@zhang redis]# yum list all --enablerepo='centos-sclo-rh' |grep gcc
gcc.x86_64                                 4.8.5-44.el7           @base         
libgcc.x86_64                              4.8.5-44.el7           @base         
compat-gcc-44.x86_64                       4.4.7-8.el7            base          
compat-gcc-44-c++.x86_64                   4.4.7-8.el7            base          
compat-gcc-44-gfortran.x86_64              4.4.7-8.el7            base          
devtoolset-10-gcc.x86_64                   10.2.1-11.1.el7        centos-sclo-rh
devtoolset-10-gcc-c++.x86_64               10.2.1-11.1.el7        centos-sclo-rh
devtoolset-10-gcc-gdb-plugin.x86_64        10.2.1-11.1.el7        centos-sclo-rh
devtoolset-10-gcc-gfortran.x86_64          10.2.1-11.1.el7        centos-sclo-rh
devtoolset-10-gcc-plugin-devel.x86_64      10.2.1-11.1.el7        centos-sclo-rh
devtoolset-10-libgccjit.x86_64             10.2.1-11.1.el7        centos-sclo-rh
devtoolset-10-libgccjit-devel.x86_64       10.2.1-11.1.el7        centos-sclo-rh
devtoolset-10-libgccjit-docs.x86_64        10.2.1-11.1.el7        centos-sclo-rh
devtoolset-7-gcc.x86_64                    7.3.1-5.16.el7         centos-sclo-rh
devtoolset-7-gcc-c++.x86_64                7.3.1-5.16.el7         centos-sclo-rh
devtoolset-7-gcc-gdb-plugin.x86_64         7.3.1-5.16.el7         centos-sclo-rh
devtoolset-7-gcc-gfortran.x86_64           7.3.1-5.16.el7         centos-sclo-rh
devtoolset-7-gcc-plugin-devel.x86_64       7.3.1-5.16.el7         centos-sclo-rh
devtoolset-7-libgccjit.x86_64              7.3.1-5.16.el7         centos-sclo-rh
devtoolset-7-libgccjit-devel.x86_64        7.3.1-5.16.el7         centos-sclo-rh
devtoolset-7-libgccjit-docs.x86_64         7.3.1-5.16.el7         centos-sclo-rh
devtoolset-8-gcc.x86_64                    8.3.1-3.2.el7          centos-sclo-rh
devtoolset-8-gcc-c++.x86_64                8.3.1-3.2.el7          centos-sclo-rh
devtoolset-8-gcc-gdb-plugin.x86_64         8.3.1-3.2.el7          centos-sclo-rh
devtoolset-8-gcc-gfortran.x86_64           8.3.1-3.2.el7          centos-sclo-rh
devtoolset-8-gcc-plugin-devel.x86_64       8.3.1-3.2.el7          centos-sclo-rh
devtoolset-8-libgccjit.x86_64              8.3.1-3.2.el7          centos-sclo-rh
devtoolset-8-libgccjit-devel.x86_64        8.3.1-3.2.el7          centos-sclo-rh
devtoolset-8-libgccjit-docs.x86_64         8.3.1-3.2.el7          centos-sclo-rh
devtoolset-9-gcc.x86_64                    9.3.1-2.el7            centos-sclo-rh *******
devtoolset-9-gcc-c++.x86_64                9.3.1-2.el7            centos-sclo-rh *******
devtoolset-9-gcc-gdb-plugin.x86_64         9.3.1-2.el7            centos-sclo-rh *******
devtoolset-9-gcc-gfortran.x86_64           9.3.1-2.el7            centos-sclo-rh
devtoolset-9-gcc-plugin-devel.x86_64       9.3.1-2.el7            centos-sclo-rh
devtoolset-9-libgccjit.x86_64              9.3.1-2.el7            centos-sclo-rh
devtoolset-9-libgccjit-devel.x86_64        9.3.1-2.el7            centos-sclo-rh
devtoolset-9-libgccjit-docs.x86_64         9.3.1-2.el7            centos-sclo-rh
gcc-c++.x86_64                             4.8.5-44.el7           base          
gcc-gfortran.x86_64                        4.8.5-44.el7           base          
3.选择高版本的进行安装

这里选择的是上面列表中 devtoolset-9 前三个: -gcc.x86_64 、-gcc-c++.x86_64、-gcc-gdb-plugin.x86_64

yum install devtoolset-9-gcc.x86_64 devtoolset-9-gcc-c++.x86_64 devtoolset-9-gcc-gdb-plugin.x86_64 

等待一段时间,安装成功后:

Installed:
  devtoolset-9-gcc.x86_64 0:9.3.1-2.el7                    devtoolset-9-gcc-c++.x86_64 0:9.3.1-2.el7                    devtoolset-9-gcc-gdb-plugin.x86_64 0:9.3.1-2.el7                   

Dependency Installed:
  devtoolset-9-binutils.x86_64 0:2.32-16.el7                  devtoolset-9-libstdc++-devel.x86_64 0:9.3.1-2.el7                  devtoolset-9-runtime.x86_64 0:9.1-0.el7                 

Complete!
4.查看从 SCL 中安装的包的列表:
scl --list 或 scl -l
[root@zhang redis]# scl --list
devtoolset-9
5.切换版本

gcc -v 查看版本后,发现并没有切换版本。

可以使用 scl enable devtoolset-9 bash 切换。

[root@zhang redis]# scl enable devtoolset-9 bash
[root@zhang redis]# gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/lto-wrapper
Target: x86_64-redhat-linux
Configured with: ../configure --enable-bootstrap --enable-languages=c,c++,fortran,lto --prefix=/opt/rh/devtoolset-9/root/usr --mandir=/opt/rh/devtoolset-9/root/usr/share/man --infodir=/opt/rh/devtoolset-9/root/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-shared --enable-threads=posix --enable-checking=release --enable-multilib --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-gcc-major-version-only --with-linker-hash-style=gnu --with-default-libstdcxx-abi=gcc4-compatible --enable-plugin --enable-initfini-array --with-isl=/builddir/build/BUILD/gcc-9.3.1-20200408/obj-x86_64-redhat-linux/isl-install --disable-libmpx --enable-gnu-indirect-function --with-tune=generic --with-arch_32=x86-64 --build=x86_64-redhat-linux
Thread model: posix
gcc version 9.3.1 20200408 (Red Hat 9.3.1-2) (GCC) 

上面最后一行可以到切换后的版本已经更新完成

4.解压 redis-6.0.6.tar.gz

tar -xvf redis-6.0.6.tar.gz

5. 安装

  cd redis-6.0.6

​ 切换到解压的目录 redis-6.0.6下,执行make

  make

​ 需要等待一段时间,完成后,再进入src。

​ (可以不需要:make 后,可以使用 make test,

​ 出现错误:You need tcl 8.5 or newer in order to run the Redis test。

​ 解决办法:yum install tcl )

注意: 此时,在 src 下已经出现 redis-server 和 redis-cli

[root@zhang src]# ./redis-server 
71047:C 04 Aug 2021 21:48:07.535 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
71047:C 04 Aug 2021 21:48:07.535 # Redis version=6.0.6, bits=64, commit=00000000, modified=0, pid=71047, just started
71047:C 04 Aug 2021 21:48:07.535 # Warning: no config file specified, using the default config. In order to specify a config file use ./redis-server /path/to/redis.conf
71047:M 04 Aug 2021 21:48:07.536 * Increased maximum number of open files to 10032 (it was originally set to 1024).

这样操作不是很方便,一般我们还会继续下面操作:make install 。把关键的执行文件存放到指定的目录。

  cd src

  make install PREFIX=/usr/redis

​ PREFIX参数指定redis的安装目录。一般软件安装到 /usr/redis 目录下。

如下:先到 src 目录下

直接执行 make install 会默认安装到 /usr/local/bin 目录下。可以直接在任意目录下使用命令。

[root@zhang src]# make install PREFIX=/usr/redis   ####这一步想简单的话,直接make install即可

Hint: It's a good idea to run 'make test' ;)

    INSTALL install
    INSTALL install
    INSTALL install
    INSTALL install
    INSTALL install
[root@zhang src]# 

make install 后,查看指定的安装目录,执行结果如下:

[root@zhang src]# ls /usr/redis/bin
redis-benchmark  redis-check-aof  redis-check-rdb  redis-cli  redis-sentinel  redis-server
[root@zhang src]# 

拷贝配置文件到安装目录 /usr/redis/bin

[root@zhang redis-6.0.6]# cp redis.conf /usr/redis/bin/
[root@zhang redis-6.0.6]# cd /usr/redis/bin
[root@zhang bin]# ls
redis-benchmark  redis-check-aof  redis-check-rdb  redis-cli  redis.conf  redis-sentinel  redis-server
[root@zhang bin]# 

修改配置文件后台启动,vi 编辑,底行模式 :/daemonize 搜索。

修改 redis.conf 文件,把 daemonize no 改为 daemonize yes

默认情况下,在任意目录是不能直接执行redis-server的,必须要使用 ./usr/redis/redis-server 才能访问,我们为了方便访问,可以放到 /usr/local/bin 目录下。

其实,如果上面 make install 不指定目录时,默认也会放到此目录下的。

[root@zhang bin]# redis-server   #####此时还不可以
bash: redis-server: command not found...
[root@zhang bin]# cp redis-cli /usr/local/bin
[root@zhang bin]# cp redis-server /usr/local/bin
[root@zhang bin]# redis-server  #####此时 可以

6. 启动和停止

如果配置了后台启动后,再次启动 redis-server 使用指定的配置文件启动,则可以后台运行,不再出现界面

[root@zhang bin]# redis-cli                    ###**通过客户端登录
127.0.0.1:6379> shutdown                       ###** 发送停机命令
not connected> quit                               ###** 退出redis 客户端
[root@zhang bin]# redis-server redis.conf      ### 使用配置文件启动 后台启动
73312:C 04 Aug 2021 22:20:59.748 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
73312:C 04 Aug 2021 22:20:59.748 # Redis version=6.0.6, bits=64, commit=00000000, modified=0, pid=73312, just started
73312:C 04 Aug 2021 22:20:59.748 # Configuration loaded
[root@zhang bin]# redis-cli        ###** 再次登录
127.0.0.1:6379> ping            ###** 测试登录成功
PONG
12

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1475436.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

阿里云定价_ECS产品价格_云服务器收费标准 - 阿里云官方活动

2024年最新阿里云服务器租用费用优惠价格表,轻量2核2G3M带宽轻量服务器一年61元,折合5元1个月,新老用户同享99元一年服务器,2核4G5M服务器ECS优惠价199元一年,2核4G4M轻量服务器165元一年,2核4G服务器30元3…

【GPU驱动开发】- mesa编译与链接过程详细分析

前言 不必害怕未知,无需恐惧犯错,做一个Creator! 一、总体框架图 暂时无法在飞书文档外展示此内容 二、Mesa API 处理 OpenGL 函数调用 Mesa API 负责实现 OpenGL 和其他图形 API 的函数接口。Mesa API 表是一个重要的数据结构&#xf…

别再让机会从指缝间溜走!社科院与杜兰大学金融管理硕士一同开创你的成功之路

新的一年,你的读研计划进行到哪个环节了呢?咨询社科院与杜兰大学金融管理硕士项目中,总听到有同学说,不着急,我先了解一下。你不知道是时间总是在指缝间溜走。别让犹豫成了我们前进的阻碍,马上行动早日遇到…

WPF的DataGrid自动生成中文列头

直接将一个对象集合绑定到DataGrid上面,设置自动生成列AutoGenerateColumns"True",DataGrid会自动根据对象类的属性生成对应的列 示例类对象: public class DataModel{public int Id { get; set; }public string Name { get; set;…

Ansible自动化运维(四)jinja2 模板、Roles角色详解

👨‍🎓博主简介 🏅云计算领域优质创作者   🏅华为云开发者社区专家博主   🏅阿里云开发者社区专家博主 💊交流社区:运维交流社区 欢迎大家的加入! 🐋 希望大家多多支…

【Pytorch】Transfer Learning 迁移学习

文章目录 1. 获取数据2. 创建Dataset和DataLoader3. 获取预训练模型4. 训练模型5. 通过绘制损失曲线来评估模型6. 对测试集中的图像进行预测补充 迁移学习允许我们采用另一个模型从另一个问题中学到的模式(也称为权重)并将它们用于我们自己的问题。 例如…

51单片机 wifi连接

一、基本概念 ESP8266是一款集成了WiFi功能的高性能芯片,广泛应用于物联网设备、智能家居、传感器网络等领域。以下是ESP8266的详细讲解: 1. 功能特点:ESP8266集成了TCP/IP协议栈,支持STA(Station)和AP&am…

Kamacoder第八题摆平积木的C语言解法

8. 摆平积木 时间限制:1.000S 空间限制:32MB 题目描述 小明很喜欢玩积木。一天,他把许多积木块组成了好多高度不同的堆,每一堆都是一个摞一个的形式。然而此时,他又想把这些积木堆变成高度相同的。但是他很懒&…

[足式机器人]Part2 Dr. CAN学习笔记-Ch00-2 - 数学知识基础

本文仅供学习使用 本文参考: B站:DR_CAN 《控制之美(卷1)》 王天威 《控制之美(卷2)》 王天威 Dr. CAN学习笔记-Ch00 - 数学知识基础 Part2 4. Ch0-4 线性时不变系统中的冲激响应与卷积4.1 LIT System:Linear Time Invariant4.2 卷积 Convolution4.3 单位冲激 Unit Impulse—…

上传大文件报错No data found for resource with given identifier

预览中的数据No data found for resource with given identifier 首先以为是nginx问题查看nginx日志 39.89.216.201 - - [27/Feb/2024:10:14:53 0800] "POST /api/crm/clue/upload HTTP/1.1" 499 0 "https://op-dev.*.com/customer/clue-management" &qu…

163邮箱SMTP端口号及服务器地址详细设置?

163邮箱SMTP端口号是什么?163邮件SMTP设置教程? 除了基本的邮箱账号和密码外,还需要了解SMTP服务器地址和端口号,以及相应的设置。这些设置对于确保邮件能够顺利发送至关重要。下面,蜂邮EDM将详细介绍163邮箱SMTP端口…

idea生成WebServices接口

文章目录 idea生成WebServices接口1.创建接口2.生成wsdl文件3.在soapUI中,生成6个文件4.将生成的文件拷贝到工程中5.在service-config中注册服务 idea生成WebServices接口 1.创建接口 新建一个webServices工程,按照接口规范生成接口、请求类、响应类。…

phpldapadmin This base cannot be created with PLA

phpldapadmin This base cannot be created with PLA 1、问题描述2、问题分析3、解决方法:创建根节点 1、问题描述 安装phpldapadmin参考链接: https://blog.csdn.net/OceanWaves1993/article/details/136048686?spm1001.2014.3001.5501 刚安装完成phpldapadmin&…

2024全新版EasyRecovery14数据恢复软件功能详细分析

一、功能概述 EasyRecovery14是一款功能全面的数据恢复软件,它提供了从各种存储设备(如硬盘、U盘、SD卡、数码相机等)中恢复丢失或删除数据的能力。该软件支持多种恢复模式,包括快速恢复、深度扫描、格式化恢复等,以满…

C语言 int和unsigned int逻辑比较

文章目录 测试1、测试 CMP (int,int)2、测试 CMP (int ,unsigned int)3、测试 CMP (unsigned int ,unsigned int)4、测试 CMP(int ,常量) 总结 测试 在IAR(8.40.2)平台下测试单片机为STM32F103ZET6 1、测试 CMP (int,int) //a -2,b 3 int test_fun(int a, int…

vue组件中data为什么必须是一个函数

查看本专栏目录 关于作者 还是大剑师兰特:曾是美国某知名大学计算机专业研究生,现为航空航海领域高级前端工程师;CSDN知名博主,GIS领域优质创作者,深耕openlayers、leaflet、mapbox、cesium,canvas&#x…

R语言——条形图数据可视化的多种方式

本文章将会介绍如何使用R语言中的ggplot2包使用条形图进行数据可视化。将会使用一个“生产企业原材料的订购与运输”的订单数据,该数据来自2021数学建模国赛C题。 某建筑和装饰板材的生产企业所用原材料主要是木质纤维和其他植物素纤维材料总体可分为 A B C 三种类…

LeetCode 刷题 [C++] 第240题.搜索二维矩阵 II

题目描述 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性: 每行的元素从左到右升序排列。 每列的元素从上到下升序排列。 题目分析 通过分析矩阵的特点发现,其左下角和右上角可以看作一个“二叉搜索树的根节…

ROS-Ubuntu 版本相关

ROS-Ubuntu 版本相关:安装指引 年代ROS1版本Ubuntu 版本2014Indigo14.042016Kinetic16.042018Melodic18.042020Noetic20.04 & 22.04 ROS2兼顾了工业使用上的问题。 年代ROS2版本Ubuntu 版本2022Humble20.04 & 22.042023Iron16.04 相关参考: […

MySQL进阶:大厂高频面试——各类SQL语句性能调优经验

👨‍🎓作者简介:一位大四、研0学生,正在努力准备大四暑假的实习 🌌上期文章:MySQL进阶:强推,冲大厂必精通!MySQL索引底层(BTree)、性能分析、使用…