Redis的安装

发表时间:2017-07-19 21:47:09 浏览量( 28 ) 留言数( 0 )

学习目标:

1、了解Redis的window的安装

2、了解Redis的linux的安装


学习过程:

一、window的安装

    前面说过Redis 没有官方的Windows版本,但是微软开源技术团队(Microsoft Open Tech group)开发和维护着Window的版本。

    https://github.com/MicrosoftArchive/redis

   进入releases看一下释放的版本,可以自己根据需要下载:

    https://github.com/MicrosoftArchive/redis/releases

attcontent/3ce1fb19-9ac2-4acd-82fd-6d5b17d447a1.png

1、启动服务端

   解压到指定的目录下面后,使用cmd进入这个目录,然后执行命令


   redis-server.exe redis.windows.conf

   如下图:

    attcontent/20b8bc57-b20b-4f18-a329-9a38bd5a694a.png

2、启动客户端访问

   再启动一个cmd,输入一下命令:

   redis-cli.exe -h 127.0.0.1

   再执行一下简单的命令 

127.0.0.1:6379> set name liubao

OK

127.0.0.1:6379> get name

"liubao"

这样就安装成功了。


二、Linux的安装

http://download.redis.io/releases/

1、下载:wget http://download.redis.io/releases/redis-3.2.0.tar.gz

2、解压: tar -zxvf redis-3.2.0.tar.gz -C /usr/src

 make PREFIX=/opt/redis/ install 


3、修改配置文件

 cp redis.conf /etc/

vim  /etc/redis.conf

修改daemonize yes---目的使进程在后台运行

参数介绍:

daemonize:是否以后台daemon方式运行

pidfile:pid文件位置

port:监听的端口号

timeout:请求超时时间

loglevel:log信息级别

logfile:log文件位置

databases:开启数据库的数量

save * *:保存快照的频率,第一个*表示多长时间,第三个*表示执行多少次写操作。在一定时间内执行一定数量的写操作时,自动保存快照。可设置多个条件。

rdbcompression:是否使用压缩

dbfilename:数据快照文件名(只是文件名,不包括目录)

dir:数据快照的保存目录(这个是目录)

appendonly:是否开启appendonlylog,开启的话每次写操作会记一条log,这会提高数据抗风险能力,但影响效率。

appendfsync:appendonlylog如何同步到磁盘(三个选项,分别是每次写都强制调用fsync、每秒启用一次fsync、不调用fsync等待系统自己同步)


在redis3.2之后,redis增加了protected-mode ,在这个模式下,即使注释掉了bind 127.0.0.1 ,所以如果想要远程访问,要么把protected-mode设置为no,要么bind写上ip地址。


4、启动

cd /opt/redis/bin/

./redis-server /etc/redis.conf

查看是否安装启动了

ps -aux | grep redis

打开客户端

./redis-cli

设置值

取值

127.0.0.1:6379> set name liubao

OK

127.0.0.1:6379> get name

"liubao"

OK! 

sudo


5、可能的问题

  如果直接启动的时候,可能再前端报出这样的错误  

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.

redis有时background save db不成功,通过log也发现下面的告警,

[13223] 17 Mar 13:18:02.207 # 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


内核参数overcommit_memory 

它是 内存分配策略

可选值:0、1、2。

0, 表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。

1, 表示内核允许分配所有的物理内存,而不管当前的内存状态如何。

2, 表示内核允许分配超过所有物理内存和交换空间总和的内存

什么是Overcommit和OOM

    Linux对大部分申请内存的请求都回复"yes",以便能跑更多更大的程序。因为申请内存后,并不会马上使用内存。这种技术叫做Overcommit。当linux发现内存不足时,会发生OOM killer(OOM=out-of-memory)。它会选择杀死一些进程(用户态进程,不是内核线程),以便释放内存。

    当oom-killer发生时,linux会选择杀死哪些进程?选择进程的函数是oom_badness函数(在mm/oom_kill.c中),该函数会计算每个进程的点数(0~1000)。点数越高,这个进程越有可能被杀死。每个进程的点数跟oom_score_adj有关,而且oom_score_adj可以被设置(-1000最低,1000最高)。

解决方法:

     很简单,按提示的操作(将vm.overcommit_memory 设为1)即可:

     有三种方式修改内核参数,但要有root权限:

   (1)编辑/etc/sysctl.conf ,改vm.overcommit_memory=1,然后sysctl -p 使配置文件生效

   (2)sysctl vm.overcommit_memory=1

   (3)echo 1 > /proc/sys/vm/overcommit_memory


不管是linux还是window,为了方便操作,都可以配置环境变量,相信这对大家来说已经是很简单的了。这里就不罗嗦了。


三、window的客户端

使用rdm (redis desktop manager )软件连接Redis 。

https://redisdesktop.com/download

安装一个可视化的客户端,对开发还是很有帮助的。这个比较简单,直接安装即可。

attcontent/b7aae6a0-b352-4c8b-94a3-e974a6c45582.png