一、Redis 安装配置入门

44 篇文章 0 订阅
6 篇文章 0 订阅

目录

1.Redis简介

2.Redis安装

3.Redis启动和停止

4.测试_redis客户端的使用

5.Redis配置

优化配置

6.Redis开机启动设置

7.测试代码



1.Redis简介

redis是一种支持Key-Value等多种数据结构的存储系统。可用于缓存,事件发布或订阅,高速队列等场景。该数据库使用ANSI C语言编写,支持网络,提供字符串,哈希,列表,队列,集合结构直接存取,基于内存,可持久化。

2.Redis安装

Window 下安装,下载地址:https://github.com/MSOpenTech/redis/releases    解压即可。

Linux 下安装,下载地址(官网):http://redis.io/download

安装:

$ wget http://download.redis.io/releases/redis-x.x.x.tar.gz
$ tar xzf redis-x.x.x.tar.gz
$ cd redis-x.x.x
$ make MALLOC=libc # (或者直接make,不用./configure,我这里直接用make报错了,所以..) 
$ make test
$ make install     # (安装到指定目录:make PREFIX=/usr/local/redis install,不指定的话默认安装到/usr/local/bin目录下,也可以执行该步骤,也就是安装)

# 不安装的话命令执行文件路径是:/usr/local/src/redis-5.0.4/src
# 配置文件:/usr/local/src/redis-5.0.4/redis.conf

make完后 redis-x.x.x/src目录下会出现编译后的可执行文件:redis服务程序redis-server,还有用于测试的客户端程序redis-cli,程序位于安装目录 src 目录下

$ find . -type f -executable
./redis-benchmark # 用于进行redis性能测试的工具
./redis-check-dump # 用于修复出问题的dump.rdb文件
./redis-cli # redis的客户端
./redis-server # redis的服务端
./redis-check-aof # 用于修复出问题的AOF文件
./redis-sentinel # 用于集群管理

==============
扩展:
/usr/local 层级以某种方式复制了根目录,
你可以
在 /usr/local/bin 这里找到可执行程序,
在 /usr/local/lib 中找到库,
在 /usr/local/share 中找到架构无关的文件,

==============
问题1:
zmalloc.h:50:31: 致命错误:jemalloc/jemalloc.h:没有那个文件或目录
解决方案:
执行命令:make MALLOC=libc

问题2:
You need tcl 8.5 or newer in order to run the Redis test
解决方案:
安装一下tcl:yum install -y tcl

3.Redis启动和停止

(1)默认方式(前端启动)启动redis服务(默认redis服务端口是6379):

$ cd src
$ ./redis-server

(2)指定配置文件启动redis服务(windows下需要指定redis.windows.conf): 

$ cd src
$ ./redis-server ../redis.conf

 (3)--port 来启动指定端口的redis服务:

redis-server --port 6380 &
redis-server --port 6381 &
redis-server --port 6382 &

(4)后台运行

$ cd redis-5.0.4
$ nohup src/redis-server redis.conf > /home/redis.log 2>&1 &查看运行的redus:ps -ef | grep redis

(5)Redis5 关闭服务

# 1.第一种关闭方式
# 正常关闭,数据保存
redis-cli shutdown # 关闭redis服务,通过客户端进行shutdown

# 如果redis设置了密码,则需要先用客户端登录,然后再进行shutdown
redis-cli -a password
127.0.0.1:6379> shutdown

# 2.第二种关闭方式
# 断电,非正常关闭,容易导致数据丢失
ps -ef | grep redis
kill -9 pid

 

4.测试_redis客户端的使用

使用测试客户端程序redis-cli和redis服务交互:

本地连接,默认无密码直接连接:# ./src/redis-cli

$ cd src
$ ./redis-cli    # 打开终端,有时候会有中文乱码。要在 redis-cli 后面加上 --raw
127.0.0.1:6379> ping # 通过ping测试连接是否存活
PONG  # 表示存活

127.0.0.1:6379> set foo bar # 127.0.0.1 是本机 IP ,6379 是 redis 服务端口,s设置一个key-value
OK
redis> get foo
"bar"

127.0.0.1:6379> select index # index 是数据库索引号,用数字值指定,默认为0到15

127.0.0.1:6379> quit # 退出客户端

127.0.0.1:6379> shutdown # 通过客户端关闭redis,注:shutdown有两个可选的修饰符,nosave会阻止数据库执行保存操作,save会强制让数据库执行保存操作。
127.0.0.1:6379>

密码连接,一般用于远程连接:# redis-cli -h host -p port -a password

$ redis-cli -h 192.168.246.154 -p 6379 -a password # 注:-h:指定Redis服务所在主机IP,-p:指定Redis服务端口,-a:指redis服务密码

5.Redis配置

Redis 的配置文件位于 Redis 安装目录下,文件名为 redis.conf。

redis.conf常用配置说明

  • bind:允许访问该redis的主机

  • protected-mode:保护模式,默认开启。若设置外部网络连接redis服务,设置方式如下:

    1、关闭protected-mode模式,此时外部网络可以直接访问

    2、开启protected-mode保护模式,需配置bind ip或者设置访问密码,或者bind ip和密码都设置

  • requirepass:设置密码

  • databases:Redis默认有16个数据库,寻址角标从0开始。默认连接db0。客户端使用select命令,切换数据库

  • port :指定redis的服务端口,默认6379.

  • daemonize:Redis默认关闭后台进程模式,改成yes,redis服务在后台启动。

  • loglevel :日志等级

  • logfile:Redis日志输出目录,默认不输出日志到文件。

  • dbfilename:指定数据持久化的文件名

  • dir :指定数据持久化的文件存放目录,也是集群node.con文件存放目录

  • cluster-enabled:是否启用集群

  • cluster-config-file:集群文件

修改配置文件方式一:直接修改配置文件。

# 1.复制redis配置文件,将redis目录的redis.conf复制到/etc/redis目录下,以备使用
cp /usr/local/redis-x.x.x/redis.conf /etc/redis/redis.conf

# 2.修改默认端口6379,编辑/etc/redis/redis.conf配置文件,找到port 6379这一行,修改端口为6380或注释掉添加一行port 6380
port 6380

# 3.同时修改pidfile,将其改为pidfile /var/run/redis_6380.pid,修改目的是为了文件名上的端口和实际端口保持一致,方便通过服务方式启动、停止,如后面设置开机启动
pidfile /var/run/redis_6379.pid

# 4.设置redis服务后台运行,编辑/etc/redis/redis.conf配置文件,将daemonize设置为yes
daemonize yes

# 5.设置访问密码,编辑/etc/redis/redis.conf配置文件,去掉requirepass行的注释或添加一行
requirepass 123456

# 6.启动redis并指定配置文件为我们刚才修改的/etc/redis/redis.conf配置文件,服务启动后就不像前面那样输出redis图形信息的内容了。
[root@localhost redis]# redis-server /etc/redis/redis.conf 
14737:C 07 Apr 2020 12:32:40.025 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
14737:C 07 Apr 2020 12:32:40.025 # Redis version=5.0.8, bits=64, commit=00000000, modified=0, pid=14737, just started
14737:C 07 Apr 2020 12:32:40.025 # Configuration loaded

注意:由于redis性能非常好,为防止暴力破解,密码需要配置的一大长串足够复杂的字符串,不考虑人是否能记住

# 再次测试
 
[root@localhost redis]# redis-cli
Could not connect to Redis at 127.0.0.1:6379: Connection refused
not connected> exit
[root@localhost redis]# redis-cli -p 6380
127.0.0.1:6380>
127.0.0.1:6380> ping
(error) NOAUTH Authentication required.
127.0.0.1:6380> auth 123456
OK
127.0.0.1:6380> ping
PONG
127.0.0.1:6380>


# redis-cli -p 6380   ## -p 指定端口
# auth 123456         ## auth 进行密码验证

修改配置文件方式二:使用Config命令配置:

Get获取配置项命令格式:

127.0.0.1:6379> CONFIG GET CONFIG_SETTING_NAME

实例:

127.0.0.1:6379> CONFIG GET loglevel

1) "loglevel"
2) "notice"


127.0.0.1:6379> CONFIG GET *  # 使用 * 号可获取所有配置项

Set编辑配置项命令格式

127.0.0.1:6379> CONFIG SET CONFIG_SETTING_NAME NEW_CONFIG_VALUE

实例:

127.0.0.1:6379> CONFIG SET loglevel "notice"
OK
127.0.0.1:6379> CONFIG GET loglevel

1) "loglevel"
2) "notice"

=========================================================================

优化配置

# 优化配置,使用root账号操作
# vim /etc/sysctl.conf
vm.overcommit_memory = 1
net.core.somaxconn = 2048
# sysctl -p

# echo never > /sys/kernel/mm/transparent_hugepage/enabled
# vim /etc/rc.d/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

# vim /etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535

6.Redis开机启动设置

(1)复制开机启动脚本,在redis目录的utils包下,有一个redis_init_script文件,我们复制到/etc/init.d/目录下,并将文件名改为redis 

[root@localhost redis]# cp /usr/local/redis-5.0.5/utils/redis_init_script /etc/init.d/redis

(2) (非必须)修改/etc/redis/redis.conf文件名为/etc/redis/6379.conf,此修改非必须,不修改的话可以在步骤3指定配置文件路径,默认端口是6379,如何修改默认端口参考下文

[root@localhost ~]# mv /etc/redis/redis.conf /etc/redis/6379.conf

 (3)编辑/etc/init.d/redis启动脚本,脚本说明如下:

#!/bin/sh
#
# Simple Redis init.d script conceived to work on Linux systems
# as it does use of the /proc filesystem.

### BEGIN INIT INFO
# Provides:     redis_6379
# Default-Start:        2 3 4 5
# Default-Stop:         0 1 6
# Short-Description:    Redis data structure server
# Description:          Redis data structure server. See https://redis.io
### END INIT INFO

REDISPORT=6379                      #redis的默认端口, 要和下文中的redis.conf中一致
EXEC=/usr/local/bin/redis-server    #redis-server路径,redis服务端的命令
CLIEXEC=/usr/local/bin/redis-cli    #redis-cli路径,redis客户端的命令
PIDFILE=/var/run/redis_${REDISPORT}.pid #redis的配置文件所在的目录
CONF="/etc/redis/${REDISPORT}.conf"     #redis的配置文件所在的目录
# redis配置文件路径,默认/etc/redis/端口号.conf,所以我们步骤2修改了配置文件的名字,不要步骤2可以直接修改这里路径
AUTH="123456"                           #密码验证,下文添加此-a参数,如果没设置密码,这句没什么用可以不要

case "$1" in
    start)
        if [ -f $PIDFILE ]
        then
                echo "$PIDFILE exists, process is already running or crashed"
        else
                echo "Starting Redis server..."
                $EXEC $CONF
        fi
        ;;
    stop)
        if [ ! -f $PIDFILE ]
        then
                echo "$PIDFILE does not exist, process is not running"
        else
                PID=$(cat $PIDFILE)
                echo "Stopping ..."
                # 因为设置了密码,所以此处增加 -a 密码
                $CLIEXEC -p $REDISPORT -a $AUTH shutdown
                while [ -x /proc/${PID} ]
                do
                    echo "Waiting for Redis to shutdown ..."
                    sleep 1
                done
                echo "Redis stopped"
        fi
        ;;
    *)
        echo "Please use start or stop as first argument"
        ;;
esac

修改文件的权限为  可执行的   chmod 775 /etc/init.d/redis
测试一下redis 的启动
/etc/init.d/redis start

打开redis命令:service redis start
关闭redis命令:service redis stop
设为开机启动:chkconfig redis on
设为开机关闭:chkconfig redis off

centos7或RedHat7:

启动服务:systemctl start redis
停止服务:systemctl stop redis

设为开机启动:chkconfig --add redis

方法二:(centos7推荐)

1.在系统服务目录里创建redis.service文件

vim /etc/systemd/system/redis.service

写入如下配置,如果是yum安装则自动生成此文件

[Unit]
Description=redis-server
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/bin/redis.conf
PrivateTmp=true

[Install]
WantedBy=multi-user.target

注意:ExecStart配置成自己的路径 

配置描述: 

  Description:描述服务 
  After:描述服务类别 
  [Service]服务运行参数的设置 
  Type=forking是后台运行的形式 
  ExecStart为服务的具体运行命令 
  ExecReload为重启命令 
  ExecStop为停止命令 
  PrivateTmp=True表示给服务分配独立的临时空间 
  注意:[Service]的启动、重启、停止命令全部要求使用绝对路径 
  [Install]运行级别下服务安装的相关设置,可设置为多用户,即系统运行级别为3

重载系统服务:systemctl daemon-reload

2. 测试并加入开机自启 

  先关闭redis-server 
  systemctl stop redis.service

  开启redis-server 
  systemctl start redis.service #如果服务是开启状态,使用此命令会启动失败。

3. 开启成功,将服务加入开机自启 
  systemctl enable redis.service #注意后面不能跟空格 

4.  reboot #重启

5.  查看服务运行状态:systemctl status redis.service 

6. 全部命令

  systemctl start redis.service #启动redis服务 
  systemctl enable redis.service #设置开机自启动 
  systemctl disable redis.service #停止开机自启动 
  systemctl status redis.service #查看服务当前状态 
  systemctl restart redis.service  #重新启动服务 
  systemctl list-units --type=service #查看所有已启动的服务 

7.测试代码

1.导入jar:jedis-2.7.2.jar

2.代码:

public class JedisTest {

    @Test
    public void testJedisSingle() {
        //创建一个jedis的对象。
        Jedis jedis = new Jedis("172.20.10.7", 6379);
        //调用jedis对象的方法,方法名称和redis的命令一致。
        jedis.set("key1", "jedis test");
        String str = jedis.get("key1");
        System.out.println(str);
        //关闭jedis。
        jedis.close();
    }
    
    /**
     * 使用连接池
     */
    @Test
    public void testJedisPool() {
        //创建jedis连接池
        JedisPool pool = new JedisPool("172.20.10.7", 6379);
        //从连接池中获得Jedis对象
        Jedis jedis = pool.getResource();
        String str = jedis.get("key1");
        System.out.println(str);
        //关闭jedis对象
        jedis.close();
        pool.close();
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值