ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
>[info] 认识 redis REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统。 ***** Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、 Key-Value数据库,并提供多种语言的API。 ***** 它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Hash), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。 ***** **功能:** 1. 多种数据类型 2. redis持久化 3. redis主从复制 4. redis哨兵 5. redis集群 ***** **特点:** Redis 与其他 key - value 缓存产品有以下三个特点: * Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。 * Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。 * Redis支持数据的备份,即master-slave模式的数据备份。 1. 速度快 ``` why?(为什么速度快) 官方给出的数字是读写性能可以达到10万/秒,当然这也取决于机器的性能,但这里先不讨论机器性 能上的差异,只分析一下是什么造就了Redis除此之快的速度,可以大致归纳为以下三点: 1. Redis的所有数据都是存放在内存中的,所以把数据放在内存中是Redis速度快的最主要原因。 2. Redis是用C语言实现的,一般来说C语言实现的程序“距离”操作系统更近,执行速度相对会更 快。 3. Redis使用了单线程架构,预防了多线程可能产生的竞争问题。 ``` 2. 简单稳定 ``` Redis的简单主要表现在三个方面。 1. Redis的源码很少。 2. Redis使用单线程模型,这样不仅使得Redis服务端处理模型变得简单,而且也使得客户端开发变 得简单。 3. Redis不需要依赖于操作系统中的类库(例如Memcache需要依赖libevent这样的系统类库), Redis自己实现了事件处理的相关功能。 Redis虽然很简单,但是不代表它不稳定。维护的上千个Redis为例,没有出现过因为Redis自身bug 而宕掉的情况。 ``` 3. 语言多 ``` Redis提供了简单的TCP通信协议,很多编程语言可以很方便地接入到Redis,并且由于Redis受到社 区和各大公司的广泛认可,所以支持Redis的客户端语言也非常多,几乎涵盖了主流的编程语言,例 如Java、PHP、Python、C、C++、Nodejs等。 ``` ***** **与其他key-values相比:** Redis有着更为复杂的数据结构并且提供对他们的原子性操作,这是一个不同于其他数据库的进化路径。 Redis的数据类型都是基于基本数据结构的同时对程序员透明,无需进行额外的抽象。 ***** Redis运行在内存中但是可以持久化到磁盘,所以在对不同数据集进行高速读写时需要权衡内存,因为数据 量不能大于硬件内存。在内存数据库方面的另一个优点是,相比在磁盘上相同的复杂的数据结构,在内存 中操作起来非常简单,这样Redis可以做很多内部复杂性很强的事情。同时,在磁盘格式方面他们是紧凑的 以追加的方式产生的,因为他们并不需要进行随机访问。 ***** >[info] 安装redis (可以直接使用宝塔) 因为centos7.x的gcc版本还是4.8.5,而编译指定的版本是需要5.3以上。 ***** **环境部署与安装scl源:** ``` # 部署安装环境 yum install gcc cmake -y # 安装scl源 yum install centos-release-scl scl-utils-build # 安装gcc新版本 yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils # 更新gcc版本 scl enable devtoolset-9 bash # 查看gcc版本 gcc -v ``` ***** **安装 redis:** ``` # 解压源码包 tar zxvf redis-6.0.9.tar.gz # 进入解压目录 cd redis-6.0.9 # 执行安装命令 make && make install # 检查安装 make test # 进入redis目录的 src 启动redis ./redis-server ``` ***** **测试 redis:** ``` # 进入cli模式 redis-cli # 设置 set name chuxin # 获取 get name ``` ![](https://img.kancloud.cn/19/70/19708cad0b5b8eb170ecfa2705819896_335x121.png)