Redis之安装配置

1.  Redis的介绍

    基于key-value键值对的持久化数据库存储系统。

    它与memcache服务很像,但是支持更多的数据类型。string,list,set,zset。

    redis还会周期性的往硬盘里写入数据,持久化数据。

    redis还可以做主从复制。

2.  Redis的优点

    速度快:支持每秒10万的读写频率,采用C语言实现的,使用单线程结构,避免多线程带来的竞争问题

    丰富的数据类型:strings,lists,hash,set,ordered sets

    原子性:redis的所有操作都是原子性的

    丰富的特性:支持publish/subscribe,通知,key过期等特性

    简单稳定

    redis支持异机主从复制

    客户端语言多

    持久化

    高可用和分布式

3.  Redis的应用场景

    1.  全部数据都in-memory

    2.  Redis更多是memcache的替代品

    3.  需要更多数据类型的时候,更适合使用Redis

    4.  排行榜系统

    5.  计数器应用

    6.  社交网络 

    7.  消息队列系统  

4.  Redis的安装

    1.  安装redis4.0版本

        1.  准备工作:

            rpm -qa gcc

            yum install gcc -y

        2.  下载redis,去官网,下载redis-4.0.11.

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

            tar -zxvf redis-4.0.11.tar.gz

            mv redis-4.0.11 /application

            ln -s /application/redis-4.0.11 /application/redis

        3.  在安装目录下,执行命令make

            报错:

In file included from adlist.c:34:0:
zmalloc.h:50:31: 致命错误:jemalloc/jemalloc.h:没有那个文件或目录
#include <jemalloc/jemalloc.h>
^
编译中断。

              解决方法:

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

        4.  安装完成后,检查一下安装是否正确。

             make test

             报错:

[root@redis-master redis]# make test
cd src && make test
make[1]: 进入目录“/application/redis-4.0.11/src”
    CC Makefile.dep
make[1]: 离开目录“/application/redis-4.0.11/src”
make[1]: 进入目录“/application/redis-4.0.11/src”
You need tcl 8.5 or newer in order to run the Redis test
make[1]: *** [test] 错误 1
make[1]: 离开目录“/application/redis-4.0.11/src”
make: *** [test] 错误 2

             解决方法:

#下载一个高于8.5的版本

wget http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gz

#将安装包解压到指定目录中

sudo tar xzvf tcl8.6.1-src.tar.gz -C /usr/local/

#回到解压后的路径下

cd /usr/local/tcl8.6.1/unix/

#执行配置

sudo ./configure

#编译

sudo make

#安装

sudo make install

        5.  再执行make test   

\o/ All tests passed without errors!

Cleanup: may take some time... OK

        6.  redis加入环境变量

               进入用户的环境变量文件.bashrc,在其中添加内容:

REDIS_HOME=/application/redis
PATH=$PATH:$HOME/bin:$REDIS_HOME/src

export PATH

执行.  .bashrc文件。使环境变量生效。

    补充:redis的可执行文件说明

可执行文件 作用
redis-server 启动redis
redis-cli redis命令行客户端
redis-benchmark redis基准测试工具
redis-check-aof redis AOF持久化文件检测和修复工具
redis-check-dump redis RDB持久化文件检测和修复工具
redis-sentinel 启动redis sentinel

    2.  安装redis3.0.6

        1.  tcl安装

对于编译文件需要安装测试,需要tcl工具包,

下载:wget http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gz 

安装:sudo tar xzvf tcl8.6.1-src.tar.gz  -C /usr/local/ 

  cd  /usr/local/tcl8.6.1/unix/ 

  sudo ./configure 

  sudo make 

  sudo make install

        2.  redis安装

安装以上几个redis依赖的包后,就可以安装redis了。

1:下载

首先从官方网站下载redis,我下载的是redis-3.0.6.tar.gz

下载地址:http://download.redis.io/releases/redis-3.0.6.tar.gz

2:解压编译

tar xzf redis-3.0.6.tar.gz

mv redis-3.0.6 /usr/local/redis

cd /usr/local/redis

make

cd src & make test(检查,必须安装tcl)

make install

        3.  创建一个普通用户

    useradd redisuser

    chown -R redisuser.redisuser /usr/local/redis

        4.  修改redis.conf的一些配置   

daemonize yes
port 37379
bind 本机的Ip地址 logfile "/usr/local/redis/logs/redis.log" dir /usr/local/redis/dump/ cluster-enabled yes

        5.  创建对应的目录

           mkdir -p /usr/local/redis/{dump,logs}

        6.  启动redis

    redis-server /usr/local/redis/redis.conf &

        7.  查看redis.log日志文件是否有报错

12291:M 23 Aug 18:04:35.293 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
12291:M 23 Aug 18:04:35.293 # Server started, Redis version 3.0.6
12291:M 23 Aug 18:04:35.293 # 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.
12291:M 23 Aug 18:04:35.293 # 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.

            1.  在/etc/sysctl.conf文件添加内容:     

vm.overcommit_memory=1
net.core.somaxconn = 20000

                 执行命令:sysctl -p,让内容生效。

            2.  执行命令echo never > /sys/kernel/mm/transparent_hugepage/enabled

               永久生效:在/etc/rc.local中添加内容:       

if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi

                chmod +x /etc/rc.d/rc.local

            3.  You requested maxclients of 10000 requiring at least 10032 max file descriptors     

                修改open files的最大值

        临时生效: ulimit -n 65535

        永久生效:    修改/etc/security/limits.conf,添加内容:       

* soft nofile 65536
* hard nofile 65536 

5.  Redis的配置

    1.  备份配置文件。

        cp redis.conf  redis.conf.bak

    2.  配置文件一些主要的参数。

69行bind 172.16.20.15
接着是监听的端口号

92行port 6379

最大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服务

    3.  启动redis服务.

        redis-server redis.conf

    4.  登录一下redis.

        redis-cli -h 172.16.20.15 -p 6379

172.16.20.15:6379> auth Cmr2018
OK
172.16.20.15:6379> get name
"yangjianbo"
172.16.20.15:6379> ping
PONG

    5.  关闭redis服务.

       redis-cli -h 172.16.20.16 -p 6379 -a Cmr2018 shutdown

    6.  登录redis查看信息

       info命令

6.  Redis常用命令

    1.  redis帮助命令

        redis-server -h

        redis-cli help

        redis内部帮助命令  help command  

        redis内部帮助命令  help @group

    2.  redis启动命令

        redis-server /application/redis/conf/redis.conf &

    3.  redis关闭命令

        redis-cli shutdown

    4.  redis设置key-value

        进入redis中,set yang 123

    5.  redis获取key的值

        进入redis中,get yang

    6.  redis删除key

         进入redis中,del yang

    7.  redis查看key是否存在

        进入redis中,exists yang

        存在返回1,不存在返回0.

    8.  redis取出所有的key

        进入redis中,keys *  这个命令要慎用,因为key太多

    9.  info查看当前redis的一些状态

        进入redis中,info

    10.  config在线修改参数

        congfig set appendonly no  设置appendonly为no

        config get *  查看所有参数,不需要查看配置文件

    11.  monitor

    12.  redis-benchmark -h localhost -p 6379  -c -n 100000

    13.  查看key的类型

        type key_name

        返回的类型名称      

7.  Redis默认有16个库

    1.  在redis的配置文件中,可以看到redis有16个库,从0-15。

    2.  redis切换库,select 1  select 0

8.  连接redis的方式

    1.  交互式  需要登录到redis中

    2.  非交互式  直接使用redis-cli get yang

    3.  telnet  通过telnet连接到redis,然后其他就跟交互式的方式一样了

posted @ 2022-01-19 17:34  奋斗史  阅读(577)  评论(0)    收藏  举报