当前位置: 首页 > news >正文

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

什么是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

相关文章:

  • CNN-LSTM-Attention混合神经网络归时序预测的MATLAB实现(源代码)
  • ESP-VO 论文阅读
  • Fastjson2 <== 2.0.26反序列漏洞
  • redis 为什么会阻塞
  • 二刷代码随想录算法训练营第七天 |454.四数相加II 383. 赎金信 15. 三数之和 18. 四数之和
  • Python 编辑工具 Jupyter notebook
  • PTA天梯 L1-087 机工士姆斯塔迪奥
  • SQL中把datetime 转为字符串
  • 多模态论文阅读--V*指导视觉搜索成为多模态大语言模型的核心机制
  • Java 石头剪刀布小游戏
  • 【MySQL】查询语句:条件、排序和分页
  • Thinkphp框架漏洞--->5.0.23 RCE
  • 通过vue实现左侧树状右侧的组件
  • MySQL数据库基本操作(一)
  • 创建hadoop集群
  • 4月23日世界读书日 网络营销论坛推荐《正在爆发的营销革命》
  • Apache Zeppelin在Apache Trafodion上的可视化
  • django开发-定时任务的使用
  • hadoop入门学习教程--DKHadoop完整安装步骤
  • Java 实战开发之spring、logback配置及chrome开发神器(六)
  • sessionStorage和localStorage
  • Spark VS Hadoop:两大大数据分析系统深度解读
  • supervisor 永不挂掉的进程 安装以及使用
  • Vue实战(四)登录/注册页的实现
  • 百度贴吧爬虫node+vue baidu_tieba_crawler
  • 搞机器学习要哪些技能
  • 诡异!React stopPropagation失灵
  • 如何使用 JavaScript 解析 URL
  • 深入浏览器事件循环的本质
  • 携程小程序初体验
  • 一个普通的 5 年iOS开发者的自我总结,以及5年开发经历和感想!
  • 源码之下无秘密 ── 做最好的 Netty 源码分析教程
  • Spark2.4.0源码分析之WorldCount 默认shuffling并行度为200(九) ...
  • ​LeetCode解法汇总2182. 构造限制重复的字符串
  • ​软考-高级-系统架构设计师教程(清华第2版)【第20章 系统架构设计师论文写作要点(P717~728)-思维导图】​
  • #Z2294. 打印树的直径
  • #基础#使用Jupyter进行Notebook的转换 .ipynb文件导出为.md文件
  • (11)MATLAB PCA+SVM 人脸识别
  • (39)STM32——FLASH闪存
  • (Mirage系列之二)VMware Horizon Mirage的经典用户用例及真实案例分析
  • (论文阅读23/100)Hierarchical Convolutional Features for Visual Tracking
  • (四)汇编语言——简单程序
  • (转)Windows2003安全设置/维护
  • (转)重识new
  • (最优化理论与方法)第二章最优化所需基础知识-第三节:重要凸集举例
  • .NET MVC第三章、三种传值方式
  • .net 发送邮件
  • .NET 解决重复提交问题
  • .NET开发不可不知、不可不用的辅助类(一)
  • .NET学习全景图
  • .php文件都打不开,打不开php文件怎么办
  • :中兴通讯为何成功
  • @test注解_Spring 自定义注解你了解过吗?
  • [AIGC] Nacos:一个简单 yet powerful 的配置中心和服务注册中心
  • [AX]AX2012 AIF(四):文档服务应用实例