Linux(CentOS7)安装Redis6.0.1

2021-04-27 14:22:09 浏览数 (1)

一、环境准备

Redis官网:https://redis.io/

历史版本:http://download.redis.io/releases/

1、安装依赖

代码语言:javascript复制
yum -y install gcc gcc-c   make cmake lrzsz 

2、解压redis

代码语言:javascript复制
tar zxvf redis-6.0.1.tar.gz

二、redis编译安装

1、编译redis

代码语言:javascript复制
cd redis-6.0.1 &&  make

redis6需要较高版本的gcc编译

如果make失败,需要手动升级gcc版本(redis5以下的不需要升级)

代码语言:javascript复制
yum -y install centos-release-scl
yum -y install devtoolset-9-gcc devtoolset-9-gcc-c   devtoolset-9-binutils
scl enable devtoolset-9 bash
echo "source /opt/rh/devtoolset-9/enable" >> /etc/profile  ## gcc版本永久生效

2、安装redis

代码语言:javascript复制
make install PREFIX=/usr/local/redis

3、拷贝redis.conf

代码语言:javascript复制
mkdir /usr/local/redis/etc
cp redis.conf /usr/local/redis/etc

4、启动redis

代码语言:javascript复制
nohup /usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf  2>&1 &

三、redis环境配置

1、配置环境变量 

代码语言:javascript复制
## 在 /etc/profile 后添加
REDIS_HOME=/usr/local/redis/
PATH=$PATH:$REDIS_HOME/bin

2、开机自启配置

代码语言:javascript复制
## 在 /etc/rc.local 下添加
echo never > /sys/kernel/mm/transparent_hugepage/enabled
/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf

3、其他配置

代码语言:javascript复制
# 注释掉绑定ip,允许远程连接
bind 127.0.0.1 # 注释掉这句
# 允许后台运行
daemonize yes
# 关闭保护模式,否则外部ip无法连接
protected-mode no
# 防火墙开启redis端口,默认6379
firewall-cmd --add-port=6379/tcp --permanent
firewall-cmd --reload
firewall-cmd --list-ports
# 内存设置
echo 8192 > /proc/sys/net/core/somaxconn ## 最大内存8G
sysctl vm.overcommit_memory=1  ## 内存超出时开辟内存 
/etc/sysctl.conf 文件添加
vm.overcommit_memory = 1
# 密码设置 redis.conf 文件下添加
requirepass 123456
# 不重启设置密码(永久有效),登录之后输入
config set requirepass 123456
# 查询密码
config get requirepass
# 验证密码
auth 123456
# 登录时,验证登录输入一下
auth 123456

4、redis关闭方法

代码语言:javascript复制
redis-cli shutdown
ps -ef | grep redis | grep -v grep | awk '{print $2}' | xargs kill -9
redis-cli -h 127.0.0.1 -p 6379 shutdown

四、redis系统服务

1、redis添加到系统服务

代码语言:javascript复制
vi /lib/systemd/system/redis.service
代码语言:javascript复制
[Unit]
Description=The redis-server Process Manager
Documentation=https://redis.io/
After=network.target
 
[Service]
Type=forking
ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf
ExecStop=/usr/local/redis/bin/redis-cli shutdown
 
[Install]
WantedBy=multi-user.target

2、redis系统服务命令 

代码语言:javascript复制
systemctl enable redis
systemctl start redis
systemctl stop redis
systemctl status redis

五、redis JavaAPI

1、Maven配置

代码语言:javascript复制
      redis.clients
      jedis
      3.1.0

2、java连接 redis

代码语言:javascript复制
import redis.clients.jedis.Jedis;

Jedis jedis = new Jedis("localhost");
jedis.auth("123456"); 
jedis.set("mmsi", "123456789");
//存储数据到列表中
 jedis.lpush("site-list", "Runoob");
 jedis.lpush("site-list", "Google");
 jedis.lpush("site-list", "Taobao");
// 获取存储的数据并输出
List list = jedis.lrange("site-list", 0 ,2);
for(int i=0; i keys = jedis.keys("*"); 
Iterator it=keys.iterator() ;   
while(it.hasNext()){   
   String key = it.next();   
   System.out.println(key);   
}

3、redis连接池

代码语言:javascript复制
package com.xtd.utils.redis;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

import java.util.Set;

public class RedisUtil {

    private static JedisPool jedisPool;

    private String ip = "127.0.0.1";

    private Integer port;
    private Integer maxIdle;
    private Long maxWait;

    public RedisUtil(Integer port) {
        this.port = port;
        this.maxIdle = 10;
        this.maxWait = -1L;
        initJedisPool();
    }

    public RedisUtil(String ip, Integer port) {
        this.ip = ip;
        this.port = port;
        this.maxIdle = 10;
        this.maxWait = -1L;
        initJedisPool();
    }

    public RedisUtil(String ip, Integer port, Integer maxIdle, Long maxWait) {
        this.ip = ip;
        this.port = port;
        this.maxIdle = maxIdle;
        this.maxWait = maxWait;
        initJedisPool();
    }

    public Jedis getJedis() {
        return jedisPool.getResource();
    }

    private void initJedisPool() {
        JedisPoolConfig config = new JedisPoolConfig();
        config.setMaxIdle(maxIdle);
        config.setMaxWaitMillis(maxWait);
        config.setMaxTotal(10000);
        jedisPool = new JedisPool(config, ip, port, 60000);
    }

    public static void main(String[] args) {
//        Jedis jedis = new RedisUtil("192.168.0.102", 6379).getJedis();
//        Jedis jedis = new RedisUtil("127.0.0.1", 6379).getJedis();
        Jedis jedis = new RedisUtil(6379).getJedis();
        jedis.select(0);
        Set set = jedis.keys("t_route_local-*");
        jedis.set("station_v1_01","station_v1_01;station,\`date\`,\`time\`,lat,long,visibility,air_temperature,wind_direction,wind_speed,air_pressure,precipitaion,sea_temperature,sea_salt,wave_period,wave_height;station_par,month_par");
        for (String s : set) {
//            jedis.del(s);
            System.out.println(s);
        }
        String value =  jedis.get("station_v1_01");
        System.out.println(value);
        System.out.println(set.size());
        jedis.close();
    }


}

0 人点赞