3、Redis的安装

学习目标:

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的安装

这里我们安装更新的4.0的版本

1、下载:

wget http://download.redis.io/releases/redis-4.0.13.tar.gz

2、解压:  tar -zxf redis-4.0.13.tar.gz 

cd redis-4.0.13/src/

如果报找不到CC命令可以先安装,需要把原来的解压后的文件删除,重写执行make install

[root@localhost redis-4.0.13]# yum -y install gcc automake autoconf libtool make

 [root@localhost redis-4.0.13]# make install PREFIX=/usr/local/redis

3、修改配置文件

[root@localhost src]# cd ..
[root@localhost redis-4.0.13]# cp redis.conf /etc/

[root@localhost redis-4.0.13]# vim /etc/redis.conf 

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

参数介绍:

requirepass 123456  密码,这里我也设置了

bind 127.0.0.1 绑定可以登陆的ip地址,如果要远程登陆,那么需要把这个注释了。不然远程无法登陆

protected-mode no保护模式

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

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

pidfile:pid文件位置

port:监听的端口号

timeout:请求超时时间

loglevel:log信息级别

logfile:log文件位置

databases:开启数据库的数量

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

rdbcompression:是否使用压缩

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

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

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

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

4、启动

[root@localhost redis]# cd /usr/local/redis/bin/
[root@localhost bin]# ./redis-server /etc/redis.conf

查看是否安装启动了

[root@localhost bin]# ps -aux | grep redis

打开客户端

./redis-cli

登陆 因为刚才设置了密码,所以登陆后需要使用auth才能登陆。
[root@localhost bin]# ./redis-cli 
127.0.0.1:6379> auth 123456
OK

设置值和取值

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,为了方便操作,都可以配置环境变量,相信这对大家来说已经是很简单的了。

[root@localhost ~]# vim /etc/profile

在最后添加,并保存退出

export PATH=/usr/local/redis/bin:$PATH

[root@localhost ~]# source /etc/profile

 

6、关于redis的密码问题:

redis没有实现访问控制这个功能,但是它提供了一个轻量级的认证方式,可以编辑redis.conf配置来启用认证。

   a、初始化Redis密码:

   在配置文件中有个参数: requirepass  这个就是配置redis访问密码的参数;

   比如 requirepass test123;

   (Ps:需重启Redis才能生效)

   redis的查询速度是非常快的,外部用户一秒内可以尝试多大150K个密码;所以密码要尽量长(对于DBA 没有必要必须记住密码);

   b、不重启Redis设置密码:

   在配置文件中配置requirepass的密码(当redis重启时密码依然有效)。

   redis 127.0.0.1:6379> config set requirepass test123

   查询密码:

   redis 127.0.0.1:6379> config get requirepass

   (error) ERR operation not permitted

   密码验证:

   redis 127.0.0.1:6379> auth test123

   OK

   再次查询:

   redis 127.0.0.1:6379> config get requirepass

   1) "requirepass"

   2) "test123"

   PS:如果配置文件中没添加密码 那么redis重启后,密码失效;

  c、登陆有密码的Redis:

   在登录的时候的时候输入密码:

   redis-cli -p 6379 -a test123

   先登陆后验证:

   redis-cli -p 6379

   redis 127.0.0.1:6379> auth test123

   OK

   AUTH命令跟其他redis命令一样,是没有加密的;阻止不了攻击者在网络上窃取你的密码;

   认证层的目标是提供多一层的保护。如果防火墙或者用来保护redis的系统防御外部攻击失败的话,外部用户如果没有通过密码认证还是无法访问redis的。

三、window的客户端

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

https://redisdesktop.com/download

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

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

四、开机启动

编写启动脚本

vim  /etc/init.d/redis

#!/bin/sh
# Comments to support chkconfig on RedHat Linux
# chkconfig: 2345 64 36
# description: Start and Stop redis .

# Comments to support LSB init script conventions
### BEGIN INIT INFO
# Provides: liubao
# Default-Start:  2 3 4 5
# Default-Stop: 0 1 6 
  
REDISPORT=6379  
REDIS_SERVER=/usr/local/redis/bin/redis-server   
REDIS_CLI=/usr/local/redis/bin/redis-cli   
 
CONF=/etc/redis.conf
PASS=123456

case "$1" in   
        start)   
                echo "Starting Redis server..."  
                $REDIS_SERVER $CONF   
                 
                if [ "$?"="0" ]   
                then   
                        echo "Redis is run..."  
                fi   
                ;;   
        stop)   
                echo "Stopping..."  
                $REDIS_CLI -p $REDISPORT -a $PASS  SHUTDOWN    
                echo "Waiting for Redis to shutdown..."  
                sleep 1  
                ;;   
        restart|force-reload)   
                ${0} stop   
                ${0} start   
                ;;   
        *)   
               echo "Usage: /etc/init.d/redis {start|stop|restart|force-reload}" >&2  
               exit 1  
esac

[root@localhost redis-4.0.13]# chmod 755 /etc/init.d/redis

测试命令

[root@localhost redis-4.0.13]# /etc/init.d/redis start

[root@localhost redis-4.0.13]# ps -ef | grep 'redis'

[root@localhost redis-4.0.13]# /etc/init.d/redis stop

 

配置开机启动

[root@localhost init.d]# cd /etc/init.d/

[root@localhost init.d]# chkconfig redis on

[root@localhost init.d]# chkconfig  --list

redis           0:关    1:关    2:开    3:开    4:开    5:开    6:关

可以使用reboot试一下

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值