一、关于Redis

Redis最为一款开源的key-value存储系统,自推出到现在一直受到编程人员的喜爱。它支持存储多种value类型,String 、List 、Set 、Zset 、Hash。这些数据类型都支持push/pop、add/remove 及取交集、并集、差集等操作,这些操作都是原子性的,而且Redis还有各种不同的排序方式。

Redis 的数据都是缓存在内存中,这样做是为了保证效率,而且也支持数据的磁盘持久化,目前Redis 不仅可以部署Linux 而且Windows 同样可以进行部署。

二、下载和安装

Redis的下载地址:http://download.redis.io/releases/   版本很多,请自己下载想要安装的版本,这里 介绍 3.2.8的安装过程:

$ wget http://download.redis.io/releases/redis-3.2.8.tar.gz
$ tar xzf redis-3.2.8.tar.gz
$ cd redis-3.2.8
$ make
$ make install

三、启动

安装完成之后,进入src文件夹,你会发现脚本文件很多,为了操作方便我们将我们一会要使用到的脚本文件拷贝到一个目录同一进行管理:

# 1. 创建两个文件夹 bin 、etc

$ mkdir -p /usr/local/redis/bin
$ mkdir -p /usr/local/redis/ect # 2. copy 脚本和配置文件

$ mv /lamp/redis-3.2.8/redis.conf /usr/local/redis/etc
$ cd /lamp/redis-3.2.8/src
$ mv mkreleasehdr.sh redis-benchmark redis-check-aof redis-check-dump redis-cli redis-server /usr/local/redis/bin #3. 启动Redis $ cd /usr/local/redis/bin
$ ./redis-server

下面是启动后的截图(redis 默认端口 6379):

三、问题分析

如上图所示,redis已经成功启动,但是这里有三个WARNING 警告项,请不要忽略,下面介绍一下解决方法:

1)第一个错误大概是说somaxconn的值128设置过小,从/proc/sys/net/core/somaxconn这个路径也可大概知道这个值的设置是关于网络连接中某个最大值的限定设置,此值表示网络连接的队列大小,在配置文件redis.conf中的“tcp-backlog 511”就配置在高并发环境下的最大队列大小,此值受限于系统的somaxconn与tcp_max_syn_backlog这两个值,所以应该把这两个内核参数值调大,具体解决方法如下:

$ vim /etc/sysctl.conf
$ net.core.somaxconn = 20480 #最大队列长度,应付突发的大并发连接请求,默认为128
$ net.ipv4.tcp_max_syn_backlog = 20480 #半连接队列长度,此值受限于内存大小,默认为1024
$ sysctl -p #使参数生效

2)报错解释

警告:过量使用内存设置为0!在低内存环境下,后台保存可能失败。为了修正这个问题,
请在/etc/sysctl.conf 添加一项 'vm.overcommit_memory = 1' ,
然后重启(或者运行命令'sysctl vm.overcommit_memory=1' )使其生效。 vm.overcommit_memory不同的值说明: 0 表示检查是否有足够的内存可用,如果是,允许分配;如果内存不够,拒绝该请求,并返回一个错误给应用程序。
1 允许分配超出物理内存加上交换内存的请求
2 内核总是返回true
redis的数据回写机制分为两种 同步回写即SAVE命令。redis主进程直接写数据到磁盘。当数据量大时,这个命令将阻塞,响应时间长
异步回写即BGSAVE命令。redis 主进程fork一个子进程,复制主进程的内存并通过子进程回写数据到磁盘。
由于RDB文件写的时候fork一个子进程。相当于复制了一个内存镜像。当时系统的内存是4G,而redis占用了
近3G的内存,因此肯定会报内存无法分配。如果 「vm.overcommit_memory」设置为0,在可用内存不足的情况
下,就无法分配新的内存。如果 「vm.overcommit_memory」设置为1。 那么redis将使用交换内存。

解决方法:

$ vim /etc/sysctl.conf
$ vm.overcommit_memory = 1 #末尾追加
$ sysctl -p #参数生效
注:使用交换内存并不是一个完美的方案。最好的办法是扩大物理内存。

3)关闭THP透明内存

`Transparent Huge Pages (THP)`告警,这是一个关于透明内存巨页的话题。简单来说内存可管理的最小
单位是page,一个page通常是4kb,那1M内存就会有256个page,CPU通过内置的内存管理单元管理page表
记录。Huge Pages就是表示page的大小已超过4kb了,一般是2M到1G,它的出现主要是为了管理超大内存。
个人理解上TB的内存。而THP就是管理Huge Pages的一个抽象层次,根据一些资料显示THP会导致内存锁
影响性能,所以一般建议关闭此功能。
“/sys/kernel/mm/transparent_hugepage/enabled”有三个值,如下:
$ cat /sys/kernel/mm/transparent_hugepage/enabled always [madvise] never
####
# always 尽量使用透明内存,扫描内存,有512个 4k页面可以整合,就整合成一个2M的页面
# never 关闭,不使用透明内存
# madvise 避免改变内存占用

解决方法:

# 临时解决

$ echo never > /sys/kernel/mm/transparent_hugepage/enabled

# 永久解决
$ vim /etc/rc.local
$ echo never > /sys/kernel/mm/transparent_hugepage/enabled #在开机脚本里追加此命令

四、Redis的启动和暂停

刚刚我们使用  ./redis-server 来启动了Redis ,但是Redis默认是前台启动的,后台启动Redis设置:

# 修改配置文件,将 daemonize 设置为 yes

$ cd /usr/local/redis/etc
$ vim redis.conf
$ daemonize yes # 调用启动脚本 $ cd /usr/local/redis/bin
$ ./redis-server /usr/local/redis/etc/redis.conf

停止Redis 两种方式:

$ cd /usr/local/redis/bin
$ ./redis-cli shutdown # 或者关闭端口为 6379 的 redis-server
$ ./redis-cli -p 6379 shutdown

到此我们对Redis有了初步的了解,后面我们将继续了解Redis的其他内容。

Redis学习——Linux环境下Redis的安装(一)的更多相关文章

  1. Redis学习——Windows环境下Redis的安装(二)

    一.说明 之前介绍了Linux环境下Redis的安装,这次介绍一下Windows环境下Redis的安装,首先要讲的是,Redis官方只支持Linux,还好 Microsoft Open Tech gr ...

  2. linux环境下redis安装

    本篇文章主要说明的是Linux环境下redis数据库的安装: 首先进入目标目录: 下载安装包,执行命令: wget http://download.redis.io/releases/redis-4. ...

  3. linux环境下redis安装(redis伪集群搭建)

    redis在linux环境下搭建 1.创建目录 [root@192 local]# mkdir /usr/local/redis 2.下载redis,并解压 [root@192 local]# wge ...

  4. Linux环境下Python的安装过程

    Linux环境下Python的安装过程 前言 一般情况下,Linux都会预装 Python了,但是这个预装的Python版本一般都非常低,很多 Python的新特性都没有,必须重新安装新一点的版本,从 ...

  5. Linux环境下NodeJS的安装配置(HelloWorld)

    Linux环境下NodeJS的安装配置(HelloWorld) 最简单的环境安装,测试helloworld.给初学者!! 安装脚本,请仔细阅读逐行执行: #!/bin/bash #检查是否已经安装 r ...

  6. Linux环境下使用yum安装zip和unzip

    Linux环境下使用yum安装zip和unzip. yum install zip yum install unzip

  7. PCL库在Linux环境下的编译安装

    PCL库在Linux环境下的编译安装 PCL库的源码库:https://github.com/PointCloudLibrary/pcl 下载完了之后解压下来 编译库的几个步骤 mkdir build ...

  8. 基础--Redis在Linux环境下的安装

    1. 安装redis服务 1.1 检查安装依赖程序 yum install gcc-c++yum install -y tclyum install wget 1.1.1 下载redis安装包 (或者 ...

  9. Redis在linux环境下的安装

    下载Redis安装包 wget http://download.redis.io/releases/redis-3.2.9.tar.gz 解压Redis安装包 tar -zxvf redis-3.2. ...

随机推荐

  1. LOJ#3043.【ZJOI2019】 线段树 线段树,概率期望

    原文链接www.cnblogs.com/zhouzhendong/p/ZJOI2019Day1T2.html 前言 在LOJ交了一下我的代码,发现它比选手机快将近 4 倍. 题解 对于线段树上每一个节 ...

  2. Linux文件名匹配和输出重定向--2019-4-24

    1.文件名匹配 例:rm *.bak;   删除结尾是.bak的文件 rm *4*.bak; 删除名称中有“4”的.bak文件 ls *.????; 查找结尾是“.”后有四个字母的文件 2.管道 先进 ...

  3. sql预编译&动态语句静态语句

    https://www.cnblogs.com/micrari/p/7112781.html https://www.cnblogs.com/MarsDing/p/9871703.html https ...

  4. PMP测试实践- 内附PMBOK中字与备考资料

    最近笔者考了PMP(Project Management Professional )项目管理专业人士认证考试,主要为了系统学习下项目管理的整个过程与方法,结合PMP的理论与工作实践去更好的完成项目工 ...

  5. C#代码总结04---通过创建临时表DataTable进行临时编辑删除

    <script type="text/javascript"> //删除 function Delete(hdGuid) { $("#hdGuid" ...

  6. input里面的submit鼠标按钮属性cursor

    属性cursor 属性值: pointer  小手 move  移动 help 帮助 wait 等待

  7. VS中自定义类模版

    以下为vs2017 专业版,安装目录在D盘 安装路径: D:\Program Files (x86)\Microsoft Visual Studio\\Professional\Common7\IDE ...

  8. window7环境下ZooKeeper的安装及运行

    简介 ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件.它是一个为分布式应用提供一致性服务的软件,提 ...

  9. TCPDF说明文档

    TCPDF说明文档 一.首先调用TCPDF文件 require_once('tcpdf.php'); 二.实例化TCPDF类 页面方向(P =肖像,L =景观).测量(mm).页面格式 $pdf = ...

  10. Springboot入门之分布式事务管理

    springboot默认集成事务,只主要在方法上加上@Transactional即可. 分布式事务一种情况是针对多数据源,解决方案这里使用springboot+jta+atomikos来解决 一.po ...