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

news/2024/12/5 12:23:49/

什么是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 installINSTALL installINSTALL installINSTALL installINSTALL 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.ppmy.cn/news/1365897.html

相关文章

【Java程序设计】【C00323】基于Springboot的高校科研信息管理系统(有论文)

基于Springboot的高校科研信息管理系统(有论文) 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的高校科研信息管理系统,本系统有管理员、学校管理员、科研人员三种角色; 管理员:首页、个…

vue2 引入阿里图标库iconfont

有时候我们使用的 ui 里面图标是不够丰富的,不一定可以满足我们的需求。 这时我们可以引入阿里图标库来丰富自己的项目图标。 上步骤: 1、点击文字地址连接: iconfont-阿里巴巴矢量图标库 2、登录,没有账号需要先使用手机号注册…

Spring IOC在业务中常见的使用方式

目录 1、什么是IOC 2、java实现创建对象的方式有哪些 3、基于配置文件的di实现 3.1、什么是di 3.2、入门案例 3.3、环境搭建 接口和实现类 ioc配置文件 测试程序 3.4、案例总结 3.5、简单类型属性的赋值(set注入) set注入要求 JavaBean sp…

Leetcode : 215. 数组中的第 K 个最大元素

给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。 请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。 你必须设计并实现时间复杂度为 O(n) 的算法解决此问题。 思路:最开始排序算法&…

vue中scss样式污染引发的思考

新做了一个项目,就是在登录后,就会产生左侧菜单的按钮颜色不一样。 然后发现样式是从这里传过来的 发现是登录页面的css给污染了 就是加了scope就把这个问题解决了 然后想总结一下这个思路:就是如何排查污染样式: 如果出现了…

个人如何合法自建服务器?

随着互联网技术的不断发展,越来越多的人开始考虑自建服务器,以满足自己的需求。但是,在自建服务器之前,必须了解相关的法律法规和规定,以确保自己的行为合法合规。本文将介绍个人如何合法自建服务器,以供参…

uniappQQ登录是如何实现的,请说明其流程

QQ登录功能的实现分成以下几个步骤: 注册QQ互联账号并创建应用,获取 appid 配置回调地址 recirect_uri在页面中放置 QQ登录按钮,点击按钮后跳转到 QQ 登录页面,链接地址是由 QQ 平台提供的,需要拼接上申请的 appid登录…

Amino PEG11 COOH,Amino-PEG11-acid,可在活化剂存在下与氨基反应

您好,欢迎来到新研之家 文章关键词:1616426-12-0,Amino-PEG11-acid,Amino PEG11 COOH,H2N-PEG11-CH2CH2COOH,氨基-PEG11-羧酸 一、基本信息 【产品简介】:Amino-PEG11 acid is a heterobifun…