Redis7.0 简介及安装
1、简介
Redis是一个开源(BSD许可)内存数据结构存储,用作数据库、缓存、消息代理和流引擎。Redis提供键值对数据结构,如字符串strings
,哈希hashes
,列表lists
,集合sets
,有序集合sortedsets
与位图bitmaps
、统计hyperloglogs
和地理空间索引查询geospatialindex
和流steams
。可以对这些类型进行原子操作,比如增添字符串;递增散列中的值;将元素推送到列表中;计算集交集、并集和差集;或者获得排序集合中排名最高的成员等。
Redis内置了复制replication
,LUA脚本Luascripting
,LRU驱动事件LRUeviction
,事务transactions
和不同级别的磁盘持久化persistence
,并通过Redis哨兵Sentinel
和自动分区Cluster
提供高可用性highavailability
。
Redis可以通过定期将数据集转储到磁盘或将每个命令追加到基于磁盘的日志来完成数据持久化,也可以禁用持久性。Redis支持异步复制,具有快速的非阻塞同步和自动重新连接,并在网络拆分时进行部分重新同步。
Redis从发布至今,已经有十余年的时光了,一直遵循着自己的命名规则:版本号第二位如果是奇数,则为非稳定版本 如2.7;版本号第二位如果是偶数,则为稳定版本 如2.6。当前奇数版本就是下一个稳定版本的开发版本,如2.9版本是3.0版本的开发版本。
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>4.3.0</version>
</dependency>
2、安装
2.1 前置设置
# 查询系统CPU一次处理的二进制位数
[lighthouse@lightrain ~]$ getconf LONG_BIT
64
#安装并检查gcc版本>=4.8.5
[lighthouse@lightrain ~]$ yum install gcc-c++
[lighthouse@lightrain ~]$ 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...
gcc version 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC)
#下载安装包 并解压
[root@lightrain package]#
wget https://codeload.github.com/redis/redis/tar.gz/refs/tags/7.0.10 -O redis-7.0.10.tar.gz
[root@lightrain software]# tar -zxvf redis-7.0.10.tar.gz -C /opt/software
2.2 安装
2.2.1 编译安装
- 编译和安装:
#编译和安装,在解压的文件夹中执行
#默认安装到了/usr/local/bin/目录
[root@lightrain redis-7.0.10]# make && make install
Hint: It's a good idea to run 'make test' ;)
#自定义安装路径
[root@lightrain redis-7.0.10]# make PREFIX=/opt/software/redis-7.0.10 install
cd src && make install
make[1]: Entering directory `/opt/package/redis-7.0.10/src'
Hint: It's a good idea to run 'make test' ;)
INSTALL redis-server
INSTALL redis-benchmark
INSTALL redis-cli
make[1]: Leaving directory `/opt/package/redis-7.0.10/src'
**报错问题:**编译安装redis时出现报错
zmalloc.h
,解决方法:make MALLOC=libc
zmalloc.h:50:31: error: jemalloc/jemalloc.h: No such file or directory
zmalloc.h:55:2: error: #error "Newer version of jemalloc required"
make[1]: *** [adlist.o] Error 1
#说关于分配器allocator, 如果有MALLOC环境变量, 会有用这个环境变量的去建立Redis。
#而且libc 并不是默认的, 默认的是 jemalloc, 因为 jemalloc 被证明有更少的 fragmentation problems 比libc。
#但是如果没有jemalloc 而只有 libc 当然 make 出错。 所以加这么一个参数
- 安装文件介绍
[root@lightrain bin]# pwd
/opt/software/redis-7.0.10/bin
[root@lightrain bin]# ll
#性能测试工具,服务启动后,可以用于测试,比如进行pipe管道测试
-rwxr-xr-x 1 root root 5197816 Mar 27 16:05 redis-benchmark
#修复有问题的AOF文件
lrwxrwxrwx 1 root root 12 Mar 27 16:05 redis-check-aof -> redis-server
#修复有问题的RDB文件
lrwxrwxrwx 1 root root 12 Mar 27 16:05 redis-check-rdb -> redis-server
#客户端连接入口
-rwxr-xr-x 1 root root 5415248 Mar 27 16:05 redis-cli
#redis集群
lrwxrwxrwx 1 root root 12 Mar 27 16:05 redis-sentinel -> redis-server
#服务启动命令
-rwxr-xr-x 1 root root 11430312 Mar 27 16:05 redis-server
2.2.2 添加环境变量
#添加环境变量,通过在/etc/profile.d/中设置一个以.sh结尾的脚本文件(myenv.sh)
touch myenv.sh
chmod 644 myenv.sh
#set java environment
JAVA_HOME=/opt/software/jdk1.8.0_333
JRE_HOME=$JAVA_HOME/jre
....
#redis
REDIS=/opt/software/redis-7.0.10
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$REDIS/bin
export JAVA_HOME JRE_HOME CATALINA_BASE PATH
#生效配置
[root@lightrain profile.d]# source /etc/profile
[root@lightrain profile.d]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/opt/software/jdk1.8.0_333/bin:/opt/software/jdk1.8.0_333/jre/bin:/opt/software/tomcat-9.0.64/bin:/opt/software/maven-3.8.6/bin:/opt/software/redis-7.0.10/bin:/root/bin
可以通过include /path/to/local.conf
(需要放在文件头部)引入Redis的标准模板,然后再配置自定义设置,可使用*
通过符指定多个文件(include /path/to/fragments/*.conf
)。
2.2.3 修改配置文件
默认配置文件在解压包中redis.conf
,一般不修改这里的配置文件,而是复制一份到安装目录,主要修改一下默认配置:
#设置后台启动,如果不是后台启动,每次推出redis就关闭了
daemonize yes
#开启密码保护,注释则不需要密码
requirepass abc123
#配置日志文件
logfile "/var/log/redis7.0.10.log"
#设置端口号,默认端口6379
port 6388
#允许访问的ip,改为0.0.0.0就是所有ip均可
bind 127.0.0.1 -::1
bind 0.0.0.0
#通过客户端修改密码
redis > CONFIG SET requirepass "abc123"
OK
2.2.4 启动和停止
[root@lightrain redis-7.0.10]# redis-server ./redis.conf
# redis-cli -h 110.184.59.105 -p 6388
#需要先登录 先后关闭
[root@lightrain redis-7.0.10]# redis-cli -p 6388
redis> auth abc123
OK
redis> shutdown
not connected>
2.2.5 设置开机自启
- 创建启动配置文件:
#进入到系统的/usr/lib/systemd/system(用户级别是user)目录下
#system是需要开机没有登陆情况下就能运行的程序,user是用户登录后才能运行的程序。
#创建启动文件
touch redis.service
vi redis.service
chmod 754 redis.service
- 配置文件内容:
[Unit]
Description=redis-server
After=network.target
[Service]
Type=forking
ExecStart=/opt/software/redis-7.0.10/bin/redis-server /opt/software/redis-7.0.10/redis.conf
PrivateTmp=true
[Install]
#表明当系统以多用户方式(默认的运行级别)启动时,这个服务需要被自动运行。
WantedBy=multi-user.target
- 开启自启:
#重载系统服务
systemctl daemon-reload
#设置开机自启
systemctl enable redis.service
#取消开机自启
systemctl disable redis.service
#启动服务
systemctl start redis.service
#停止服务
systemctl stop redis.service
#查看服务状态
systemctl status redis.service
2.3 卸载
#停止服务
[root@lightrain redis-7.0.10]# redis-cli -p 6388 -a abc123 shutdown
[root@lightrain redis-7.0.10]# ps -ef | grep redis
#删除安装文件
[root@lightrain package]# rm -rf /usr/local/bin/redis-*