Redis(一)CentOS7 安装Redis6.x
一、常识介绍
1. 数据是存在磁盘中的
有两个指标
- 寻址:速度是ms
- 带宽:G/M
2. 内存
- 寻址:ns
- 带宽:很大
秒>毫秒>微秒>纳秒 磁盘比内存寻址的速度慢10W倍
3. 成本问题I/O buffer
磁盘和磁道,扇区,一个扇区512Byte带来一个成本变大:索引
格式化磁盘有个4K对齐
操作系统,无论读取多少,都是最少从4K拿
二、数据存储发展进程
1. 文件里数据
data.txt
linux读取grep awk
java 通过流进行读取
随着文件变大,速度变慢
为什么
磁盘的I/O成为了瓶颈
2. 数据库出现
- data page 大小为4K
- 由多个data page组成
建表不建立索引,速度不变 - 索引就是拿着一个列的数据放到一个data page里,当数据量大时索引也会增多
- 表和索引都是存在磁盘中的
关系型数据库建表:必须给出schema(给出表的有多少个列,列的类型是什么)
类型:字节宽度
存:倾向于行级存储(空的拿0占位,有个好处更新时不用移动位置)
查询的时候带有where其中字段带有索引,在内存中有树干,在通过树干找到树叶(索引),索引读到内存找到对应的表中某个data page数据
数据库:表很大,性能下降?
如果有索引
更新数据变慢
查询速度
- 1个或者少量会很快
- 当并发量变大受硬盘带宽影响
出现一个内存级别的关系型数据库SAP HANA
数据在磁盘和内存的体积不一样(贵)
2个基础设施(无法解决速度慢)
1、冯诺依曼体系的硬件
2、以太网 tcp/ip的网络设备
解决办法
缓存(memcached,redis)
三、数据库引擎介绍
四、redis简单介绍
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)。
五、redis安装实操
1. 下载Redis
wget http://download.redis.io/releases/redis-6.0.6.tar.gz
2. 解压压缩包
tar xf redis-6.0.6.tar.gz
3. 进入解压目录
cd redis-6.0.6
安装详细说明请看README.md
4. 开始编译
编译前依次执行以下命令
yum -y install centos-release-scl
yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
scl enable devtoolset-9 bash
echo "source /opt/rh/devtoolset-9/enable" >> /etc/profile
然后查看gcc版本gcc -v
确保gcc版本是9.x
编译Redis
make
5. 运行Redis
cd src
./redis-server
6. 将Redis安装成Service服务
在Redis目录下
6.1将编译后的文件安装到其他目录,与源码分开
make PREFIX=/opt/willis/redis6 install
6.2 配置系统环境
vim /etc/profile
在文件最后加入以下代码
export REDIS_HOME=/opt/willis/redis6
export PATH=$PATH:$REDIS_HOME/bin
- 更新文件
source /etc/profile
- 查看环境变量
echo $PATH
/opt/rh/devtoolset-9/root/usr/bin:/opt/rh/devtoolset-9/root/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/opt/willis/redis6/bin - 存在加粗的内容修改成功
在Redis目录下
cd utils
修改:vim install_server.sh
注释中间部分代码
#check for root user
if [ "$(id -u)" -ne 0 ] ; then
echo "You must run this script as root. Sorry!"
exit 1
fi
#bail if this system is managed by systemd
#_pid_1_exe="$(readlink -f /proc/1/exe)"
#if [ "${_pid_1_exe##*/}" = systemd ]
#then
# echo "This systems seems to use systemd."
# echo "Please take a look at the provided example service unit files in this directory, and adapt and install them. Sorry!"
# exit 1
#fi
unset _pid_1_exe
if ! echo $REDIS_PORT | egrep -q '^[0-9]+$' ; then
_MANUAL_EXECUTION=true
运行脚本:./install_server.sh
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 [/etc/redis/6379.conf] 配置文件及目录
Selected default - /etc/redis/6379.conf
Please select the redis log file name [/var/log/redis_6379.log] 日子文件及目录
Selected default - /var/log/redis_6379.log
Please select the data directory for this instance [/var/lib/redis/6379] 数据文件目录
Selected default - /var/lib/redis/6379
Please select the redis executable path [/opt/willis/redis6/bin/redis-server] 可执行文件
只有配置了环境变量才能自动获取到可执行文件,否则需要手动配置
安装到服务后,脚本已经自动启动服务
查看服务启动pid service redis_6379 status
查看运行的Redis ps -fe | grep redis
注意:再次执行./install_server.sh
只需要修改端口号就可以启动多个Redis服务
六、redis安装实操总结
cd ~
mkdir soft
cd soft
wget http://download.redis.io/releases/redis-6.0.6.tar.gz
tar xf redis....tar.gz
cd redis6.0.6
make
- yum -y install centos-release-scl
- yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
- scl enable devtoolset-9 bash
- echo “source /opt/rh/devtoolset-9/enable” >> /etc/profile
make
make PREFIX=/opt/willis/redis6 install
vim /etc/profile
- export REDIS_HOME=/opt/willis/redis6
- export PATH= P A T H : PATH: PATH:REDIS_HOME/bin
source /etc/profile
cd utils
./install_server.sh
(可以执行1-N次)- 一个物理机可以有多个Redis(进程),通过port区分
- 可执行文件就一份在目录,但是内存种可以有多个实例需要各自的配置文件,持久化目录等资源
- service redis_6379 start/stop/stauts > linux /etc/init.d/*****
- 脚本自动启动服务