linux下Redis的安装与配置(4.0.9)

Redis 的安装与配置

Redis是一个开源(BSD许可),内存数据结构存储,用作数据库,缓存和消息代理。它支持数据结构,如字符串,散列,列表,集合,具有范围查询的排序集,位图,超级日志和具有半径查询的地理空间索引。 Redis具有内置复制,Lua脚本,LRU驱逐,事务和不同级别的磁盘持久性,并通过Redis Sentinel提供高可用性,并通过Redis群集实现自动分区。

一、Redis的安装

先将安装需要的环境配置好比如gcc,我们通过YUM包管理工具来进行安装。

[root@VM_186_206_centos ~]# yum install gcc

然后通过wget对redis的源码压缩归档文件进行下载(在这下载的是Redis4.0.9的稳定版, 在Redis3.2中有一个较大的漏洞,核客会通过你启动的redis-server获取电脑控制权,安装挖矿病毒)

Redis官网

Redis-4.0.9的下载地址

http://download.redis.io/releases/redis-4.0.9.tar.gz

通过wget下载源码资源

[root@VM_186_206_centos ~]# wget http://download.redis.io/releases/redis-4.0.9.tar.gz

然后对下载的文件进行解压解归档

[root@VM_186_206_centos ~]# tar -zxvf redis-4.0.9.tar.gz 

将解压解归档的文件夹放入你希望的目录

[root@VM_186_206_centos ~]# mv redis-4.0.9 /usr/local/redis-4.0.9

对源码进编译

[root@VM_186_206_centos ~]# cd /usr/local/redis-4.0.9
[root@VM_186_206_centos redis-4.0.9]# make

编译的过程中可能会出错,最重要的是你的linux中是否已经安装gcc的编译环境

在编译的过程中可能会报下面的错误

In file included from adlist.c:34:0:
zmalloc.h:50:31: fatal error: jemalloc/jemalloc.h: No such file or directory
 #include <jemalloc/jemalloc.h>

错误的解决方法为在make后加上参数MALLOC=libc

[root@VM_186_206_centos redis-4.0.9]# make MALLOC=libc

编译完成后可以对编译进行检查是否有错误

[root@VM_186_206_centos redis-4.0.9]# make test
...
\o/ All tests passed without errors!

Cleanup: may take some time... OK

源码编译完成后就可以进行使用了,但是在使用之前需要将redis加入环境变量中方便以后使用

先进入用户家目录,然后编写.bash_profile文件,将redis的路径添加到PATH中

[root@VM_186_206_centos redis-4.0.9]# cd ~
[root@VM_186_206_centos ~]# vim .bash_profile
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

REDIS_HOME=/usr/local/redis-4.0.9
PATH=$PATH:$HOME/bin:$REDIS_HOME/src

export PATH

这样安装就完成了

二、Redis-server的配置

对redis的配置我们需要在Redis的目录中复制一份配置文件,不在原来的配置文件上进行修改,避免修改错误无法找到原文件。

[root@VM_186_206_centos ~]# cp /usr/local/redis-4.0.9/redis.conf ./redisConfig/redis.conf
[root@VM_186_206_centos ~]# cd redisConfig
[root@VM_186_206_centos redisConfig]# vim redis.conf 

Redis的配置文件非常的长,在这就不全部贴出,以行号作为标识,进行讲解如何配置

首先配置redis绑定哪个IP地址

这里绑定的IP地址一定得是ifconfig中的网卡地址,不然会出错启动失败

[root@VM_186_206_centos ~]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
       inet xxx.xxx.xxx.xxx  netmask 255.255.224.0  broadcast xxx.xxx.xxx.255
       ether XX:XX:XX:XX:XX:XX  txqueuelen 1000  (Ethernet)
       RX packets 29994  bytes 4629635 (4.4 MiB)
       RX errors 0  dropped 0  overruns 0  frame 0
       TX packets 28531  bytes 4220669 (4.0 MiB)
       TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
       inet 127.0.0.1  netmask 255.0.0.0
       loop  txqueuelen 1  (Local Loopback)
       RX packets 4632659  bytes 1237206796 (1.1 GiB)
       RX errors 0  dropped 0  overruns 0  frame 0
       TX packets 4632659  bytes 1237206796 (1.1 GiB)
       TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

如果绑定127.0.0.1网络回环地址着只有本机可以使用,外部无法访问,所以这我们需要绑定外部IP地址(如果使用云服务,这里绑定你的内网地址即可)

69行bind xxx.xxx.xxx.xxx

接着是监听的端口号

92行port 8464

最大TCP连接数

101行 tcp-backlog 128(这里我改为和linux内核相同的值了,如果大型应用需要将内核的值修改到2048左右以应对更多的连接)

将Redis设置为守护进程(可选)

136行 daemonize yes

设置Redis日志路径

171行 logfile "./redis.log"

Redis的数据库个数(默认16个数据库)

186行 databases 16

在196行介绍的就是关于数据持久化的设置,这里简单解释下

save 900 1有一条数据发生了变化在 900秒(15分钟)后进行持久化

save 300 10 有十条数据发生了变化在 300秒(5分钟)后进行持久化

save 60 10000 有一万条数据发生了变化在60秒(1分钟)后进行持久化

设置RDB持久化保存的文件名,和路径

253行 dbfilename dump.rdb

263行 dir ./(当前配置文件的路径)

在265行进行设置的是Redis集群的读写分离(奴从模式)主人进行数据的写入, 奴隶进行数据的读取(后面详细介绍)

在487行是关于数据库安全的设置

500行 requirepass xxxx设置访问Redis的口令(尽量写复杂的口令)

在521行是关于最大客户端的连接数的设置

532行maxclients 10000

534行是关于内存的调度和限制的设置

在603行是关于懒释放的(这是在Redis4.0中新加的配置)

​ Redis重度使用患者应该都遇到过使用 DEL 命令删除体积较大的键, 又或者在使用 FLUSHDB 和 FLUSHALL 删除包含大量键的数据库时,造成Redis阻塞的情况;另外Redis在清理过期数据和淘汰内存超限的数据时,如果碰巧撞到了大体积的键也会造成服务器阻塞。
为了解决以上问题, Redis4.0 引入了Redis的机制,它可以将删除键或数据库的操作放在后台线程里执行, 从而尽可能地避免服务器阻塞。

在652行关于Append Only Mode的配置,改模式会记录下所有对数据库的添加操作(删除了某条数据会将添加的数据删除),是防止服务器意外宕机数据丢失是另外一种手段,所有当服务器意外宕机优先使用Append Only Mode进行数据恢复,如果AOM无法恢复再使用RDB进行数据恢复,这样数据丢失的概率较低。

672行 appedonly yes 启动Append Only Mode

676行 appendfilename "appendonly.aof" 该模式下文件保存的名称(路径默认与redis.conf在同一路径)

差不多就是这些配置了,后面的配置当需要的时候再来进行修改就可以了。

加载我们的配置启动Redis服务

[root@VM_186_206_centos redisConfig]# redis-server redis.conf 
[root@VM_186_206_centos redisConfig]# cat redis.log 
15119:C 02 Jun 11:29:14.658 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
15119:C 02 Jun 11:29:14.658 # Redis version=4.0.9, bits=64, commit=00000000, modified=0, pid=15119, just started
15119:C 02 Jun 11:29:14.658 # Configuration loaded
                _._                                                  
           _.-``__ ''-._                                             
      _.-``    `.  `_.  ''-._           Redis 4.0.9 (00000000/0) 64 bit
  .-`` .-```.  ```\/    _.,_ ''-._                                   
 (    '      ,       .-`  | `,    )     Running in standalone mode
 |`-._`-...-` __...-.``-._|'` _.-'|     Port: XXXX
 |    `-._   `._    /     _.-'    |     PID: 15120
  `-._    `-._  `-./  _.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |           http://redis.io        
  `-._    `-._`-.__.-'_.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |                                  
  `-._    `-._`-.__.-'_.-'    _.-'                                   
      `-._    `-.__.-'    _.-'                                       
          `-._        _.-'                                           
              `-.__.-'                                               

15120:M 02 Jun 11:29:14.660 # Server initialized
15120:M 02 Jun 11:29:14.661 # 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 never > /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.
15120:M 02 Jun 11:29:14.661 * Ready to accept connections

在redis.log中看见上面的内容说明你已经配置成功,并成功运行。

接下来我们通过redis-cli尝试连接下服务器

[root@VM_186_206_centos ~]# redis-cli -h xxx.xxx.xxx.xxx -p xxxx
xxx.xxx.xxx.xxx:xxxx> AUTH xxxx
OK
xxx.xxx.xxx.xxx:xxxx> PING
PONG
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342

推荐阅读更多精彩内容