Linux下安装和部署单机版redis数据库
Linux下安装和部署单机版redis数据库
第一次接触redis数据库,先从安装和部署开始学习。本次试验是参考网上各种搭建过程,最终在linux下安装和部署好redis缓存数据库。
redis简要介绍(参考菜鸟教程)
REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统。
Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。Redis 是一个完全开源免费的,是一个高性能的key-value数据库,就是传统意义上能存储键值对的数据库。
它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Hash), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。
redis的特点
Redis 与其他 key - value 缓存产品有以下三个特点:
-
Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
-
Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
-
Redis支持数据的备份,即master-slave模式的数据备份
redis的安装
-
进入官方网站下载安装包,下载地址为:https://redis.io/download
-
将下载下来的源码包上传至linux服务器
sftp> lcd e:/ sftp> put redis-6.0.8.tar.gz [root@oracle1 ~]# tar -zxvf redis-6.0.8.tar.gz //解压安装包 [root@oracle1 ~]# mkdir -p /usr/local/redis //创建安装目录 [root@oracle1 ~]# mv /root/redis-6.0.8/ /usr/local/redis/ //移动解压后的文件至安装目录 [root@oracle1 ~]# cd /usr/local/redis/redis-6.0.8 //进入安装目录 [root@oracle1 redis-6.0.8]# make //编译 .........................安装过程会报以下错误 server.c: In function 鈥1mhasActiveChildProcess鈥[01mserver.c:1480:1: warning: control reaches end of non-void function [-Wreturn-type] } ^ server.c: In function 鈥1mallPersistenceDisabled鈥[01mserver.c:1486:1: warning: control reaches end of non-void function [-Wreturn-type] } ^ server.c: In function 鈥1mwriteCommandsDeniedByDiskError鈥[01mserver.c:3897:1: warning: control reaches end of non-void function [-Wreturn-type] } ^ server.c: In function 鈥1miAmMaster鈥[01mserver.c:5094:1: warning: control reaches end of non-void function [-Wreturn-type] } ^ make[1]: *** [server.o] Error 1 make[1]: Leaving directory `/usr/local/redis/redis-6.0.8/src' make: *** [all] Error 2
-
安装高版本GCC编译
gcc等环境都已经安装,清除编译信息后重新编译、删除解压后的文件重新解压编译的方式都试过了没有改善,后来查到与gcc的版本有关。
[root@oracle1 redis-6.0.8]# gcc -v //查看GCC的版本 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-39) (GCC)
centos7默认版本为4.8.5,而redis6.0+需要的gcc版本为5.3及以上,所以升级gcc即可。下载最新版GCC ,下载地址为:http://ftp.gnu.org/gnu/gcc/gcc-10.2.0/gcc-10.2.0.tar.gz
sftp> lcd e:/ sftp> put gcc-10.2.0.tar.gz //上传GCC Uploading gcc-10.2.0.tar.gz to /root/gcc-10.2.0.tar.gz 100% 126156KB 63078KB/s 00:00:02 e:\gcc-10.2.0.tar.gz: 129184377 bytes transferred in 2 seconds (63078 KB/s) [root@oracle1 ~]# tar -zxvf gcc-10.2.0.tar.gz //解压安装包 [root@yueapp ~]# cd gcc-10.2.0/ //进入解压文件 [root@yueapp gcc-10.2.0]# ./contrib/download_prerequisites // 下载依赖库 2020-09-23 11:17:42 URL:http://gcc.gnu.org/pub/gcc/infrastructure/gmp-6.1.0.tar.bz2 [2383840/2383840] -> "./gmp-6.1.0.tar.bz2" [1] 2020-09-23 11:17:44 URL:http://gcc.gnu.org/pub/gcc/infrastructure/mpfr-3.1.4.tar.bz2 [1279284/1279284] -> "./mpfr-3.1.4.tar.bz2" [1] 2020-09-23 11:17:45 URL:http://gcc.gnu.org/pub/gcc/infrastructure/mpc-1.0.3.tar.gz [669925/669925] -> "./mpc-1.0.3.tar.gz" [1] 2020-09-23 11:17:47 URL:http://gcc.gnu.org/pub/gcc/infrastructure/isl-0.18.tar.bz2 [1658291/1658291] -> "./isl-0.18.tar.bz2" [1] gmp-6.1.0.tar.bz2: OK mpfr-3.1.4.tar.bz2: OK mpc-1.0.3.tar.gz: OK isl-0.18.tar.bz2: OK All prerequisites downloaded successfully. [root@yueapp gcc-10.2.0]# mkdir gcc-temp // 建立编译输出目录 [root@yueapp gcc-10.2.0]# ./configure --enable-checking=release --enable-languages=c,c++ --disable-multilib // 生成makefile文件 [root@yueapp gcc-10.2.0]# make -j4 // 编译(j为核心数,速度会更快,这步极为耗时,建议睡前操作) [root@yueapp gcc-10.2.0]# make install //安装
至此安装成功,一般程序安装在/usr/local/bin/目录下。
[root@yueapp gcc-10.2.0]# mv /usr/bin/gcc /usr/bin/gcc.bak // 将原本的gcc重命名(删除亦可) [root@yueapp gcc-10.2.0]# update-alternatives --install /usr/bin/gcc gcc /usr/local/bin/x86_64-pc-linux-gnu-gcc 40 // 倒数第三个是名字,倒数第二个参数为新GCC路径,最后一个参数40为优先级 [root@yueapp gcc-10.2.0]# ln -s /usr/local/bin/x86_64-pc-linux-gnu-gcc /usr/bin/gcc //设置软连接,其实有了上一步可以忽略这步操作 [root@yueapp gcc-10.2.0]# gcc -v //查看安装好的版本 安装成功 Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/x86_64-pc-linux-gnu/10.2.0/lto-wrapper Target: x86_64-pc-linux-gnu Configured with: ./configure --enable-checking=release --enable-languages=c,c++ --disable-multilib Thread model: posix Supported LTO compression algorithms: zlib gcc version 10.2.0 (GCC)
-
重新安装redis
[root@yueapp redis-6.0.8]# cd /usr/local/redis/redis-6.0.8 [root@yueapp redis-6.0.8]# make //编译 ------------------省略过程----------------- CC geohash_helper.o CC childinfo.o CC defrag.o CC siphash.o CC rax.o CC t_stream.o CC listpack.o CC localtime.o CC lolwut.o CC lolwut5.o CC lolwut6.o CC acl.o CC gopher.o CC tracking.o CC connection.o CC tls.o CC sha256.o CC timeout.o CC setcpuaffinity.o LINK redis-server INSTALL redis-sentinel CC redis-cli.o LINK redis-cli CC redis-benchmark.o LINK redis-benchmark INSTALL redis-check-rdb INSTALL redis-check-aof Hint: It's a good idea to run 'make test' ;) [root@yueapp redis-6.0.8]# make PREFIX=/usr/local/redis install //安装 cd src && make install make[1]: Entering directory `/usr/local/redis/redis-6.0.8/src' CC Makefile.dep make[1]: Leaving directory `/usr/local/redis/redis-6.0.8/src' make[1]: Entering directory `/usr/local/redis/redis-6.0.8/src' Hint: It's a good idea to run 'make test' ;) INSTALL install INSTALL install INSTALL install INSTALL install INSTALL install make[1]: Leaving directory `/usr/local/redis/redis-6.0.8/src'
这里多了一个关键字 PREFIX= 这个关键字的作用是编译的时候用于指定程序存放的路径。比如我们现在就是指定了redis必须存放在/usr/local/redis目录。假设不添加该关键字Linux会将可执行文件存放在/usr/local/bin目录,库文件会存放在/usr/local/lib目录。配置文件会存放在/usr/local/etc目录。其他的资源文件会存放在usr/local/share目录。这里指定号目录也方便后续的卸载,后续直接rm -rf /usr/local/redis 即可删除redis。
-
启动redis
根据上面的操作已经将redis安装完成了。在目录/usr/local/redis 输入下面命令启动redis
[root@yueapp ~]# cd /usr/local/redis/ [root@yueapp redis]# ./bin/redis-server& ./redis-6.0.8/redis.conf
上面的启动方式是采取后台进程方式,下面是采取显示启动方式(如在配置文件设置了daemonize属性为yes则跟后台进程方式启动其实一样)。
[root@yueapp redis]# ./bin/redis-server ./redis-6.0.8/redis.conf
两种方式区别无非是有无带符号&的区别。 redis-server 后面是配置文件,目的是根据该配置文件的配置启动redis服务。redis.conf配置文件允许自定义多个配置文件,通过启动时指定读取哪个即可。
[root@yueapp redis]# ./bin/redis-server ./redis-6.0.8/redis.conf //启动过程如下,启动后不能关闭命令行 13902:C 23 Sep 2020 16:18:55.115 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo 13902:C 23 Sep 2020 16:18:55.115 # Redis version=6.0.8, bits=64, commit=00000000, modified=0, pid=13902, just started 13902:C 23 Sep 2020 16:18:55.115 # Configuration loaded 13902:M 23 Sep 2020 16:18:55.116 * Increased maximum number of open files to 10032 (it was originally set to 1024). _._ _.-``__ ''-._ _.-`` `. `_. ''-._ Redis 6.0.8 (00000000/0) 64 bit .-`` .-```. ```\/ _.,_ ''-._ ( ' , .-` | `, ) Running in standalone mode |`-._`-...-` __...-.``-._|'` _.-'| Port: 6379 | `-._ `._ / _.-' | PID: 13902 `-._ `-._ `-./ _.-' _.-' |`-._`-._ `-.__.-' _.-'_.-'| | `-._`-._ _.-'_.-' | http://redis.io `-._ `-._`-.__.-'_.-' _.-' |`-._`-._ `-.__.-' _.-'_.-'| | `-._`-._ _.-'_.-' | `-._ `-._`-.__.-'_.-' _.-' `-._ `-.__.-' _.-' `-._ _.-' `-.__.-' 13902:M 23 Sep 2020 16:18:55.116 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128. 13902:M 23 Sep 2020 16:18:55.116 # Server initialized 13902:M 23 Sep 2020 16:18:55.116 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect. 13902:M 23 Sep 2020 16:18:55.116 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo madvise > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled (set to 'madvise' or 'never'). 13902:M 23 Sep 2020 16:18:55.117 * Ready to accept connections
-
redis.conf配置文件
在目录/usr/local/redis下有一个redis.conf的配置文件。我们上面启动方式就是执行了该配置文件的配置运行的。我么可以通过cat、vim、less等Linux内置的读取命令读取该文件。
也可以通过redis-cli命令进入redis控制台后通过CONFIG GET * 的方式读取所有配置项。 如下:
[root@yueapp bin]# ./redis-cli 127.0.0.1:6379> CONFIG GET * 1) "rdbchecksum" 2) "yes" 3) "daemonize" 4) "no" 5) "io-threads-do-reads" 6) "no" 7) "lua-replicate-commands" 8) "yes" 9) "always-show-logo" 10) "yes" 11) "protected-mode" 12) "yes" 13) "rdbcompression" 14) "yes" 15) "rdb-del-sync-files" 16) "no" 17) "activerehashing" --------中间省略---------------------- 250) "0" 251) "dir" 252) "/usr/local/redis" 253) "save" 254) "900 1 300 10 60 10000" 255) "client-output-buffer-limit" 256) "normal 0 0 0 slave 268435456 67108864 60 pubsub 33554432 8388608 60" 257) "unixsocketperm" 258) "0" 259) "slaveof" 260) "" 261) "notify-keyspace-events" 262) "" 263) "bind" 264) "127.0.0.1" 265) "requirepass" 266) "" 267) "oom-score-adj-values" 268) "0 200 800"
其中重要的配置项会在之后的文章中单独总结。
结尾
至此,简单版的redis数据库单机环境在linux下的安装就完成了。目前这种单机版的redis只能通过本地登录。
[root@yueapp bin]# ./redis-cli //使用本地客户端登录
127.0.0.1:6379>
另外一个是配置完成后从其他服务器登录,Redis的可视化客户端目前较流行的有两个:Redis Desktop Manager 、 Redis Client 。
-
Redis Desktop Manager
一款基于Qt5的跨平台Redis桌面管理软件支持: Windows 7+, Mac OS X 10.10+, Ubuntu 14+特点: C++ 编写,响应迅速,性能好。但不支持数据库备份与恢复。下载地址:http://docs.redisdesktop.com/en/latest/install/#windows 安装客户端,连接本地redis服务。
-
Redis Client
项目简介: 使用Java编写,功能丰富,缺点是性能稍差,网络不好时,会不时断线。下载地址:https://github.com/caoxinyu/RedisClient/tree/windows/release
RedisClient的安装及基本使用RedisClient是Redis客户端的GUI工具,使用Java swt和jedis编写,可以方便开发者浏览Redis数据库。该软件支持简体中文,非常适合国内用户使用,不需要汉化就可以直接使用。
Redis客户端工具(RedisClient)功能如下:
RedisClient将redis数据以资源管理器的界面风格呈现给用户,可以帮助redis开发人员和维护人员方便的建立,修改,删除,查询redis数据,完全不需要了解redis命令。可以让用户方便的编辑数据,可以剪切,拷贝,粘贴redis数据,可以导入,导出redis数据,可以对redis数据排序。- 使用服务器管理,支持服务器密码认证
- 根据喜好管理redis数据
- 管理redis数据,包括:新的redis数据:字符串String,列表List,哈希hash,集合set,有序集合Sorted set。下载后直接解压,无需安装。
解压后的安装包:
登录后的界面: