zoukankan      html  css  js  c++  java
  • 在centos7中安装redis,并通过node.js操作redis

    引言

    最近在学习node.js 连接redis的模块,所以尝试了一下在虚拟机中安装cent OS7,并安装redis,并使用node.js 操作redis。所以顺便做个笔记。

    如有不对的地方,欢迎大家指正!

    1、cent OS7 下使用redis

    1.1、配置编译环境:

    sudo yum install gcc-c++

     

    1.2、下载源码:

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

     

    1.3、解压源码:

    tar -zxvf redis-4.0.11.tar.gz

     

    1.4、进入到解压目录:

    cd redis-4.0.11

     

    1.5、进入到解压目录: 执行make编译Redis:

    make MALLOC=libc

      make命令执行完成编译后,会在src目录下生成6个可执行文件,分别是

    1. redis-server、
    2. redis-cli、
    3. redis-benchmark、
    4. redis-check-aof、
    5. redis-check-rdb、
    6. redis-sentinel

     

    1.6、安装Redis:

    make install 

     

    1.7、配置Redis能随系统启动:

    ./utils/install_server.sh

     

    1.8、关闭防火墙

    systemctl stop firewalld.service #停止firewall
    systemctl disable firewalld.service #禁止firewall开机启动
    firewall-cmd --state #查看默认防火墙状态(关闭后显示notrunning,开启后显示running)

     

    2、redis配置 

      如果redis客户端和服务器在同一台机子中,可以不配置,如果redis服务器在虚拟机中,客户端在本地系统中,则需要进行配置,否则可能会连接失败

    • 关闭保护模式     

      如果不关闭,通过node.js连接时,会连接失败

     config set protected-mode no
    • 设置密码
    // 获取密码
    config get requirepass
        
    // 设置密码 
    config set requirepass yourpassword

     

    2.1 、redis.conf 的配置信息

      redis.conf 是redis的的配置文件,修改配置文件后,需要重启redis才会生效

    1、daemonize 如果需要在后台运行,把该项改为yes
    
    2、pidfile 配置多个pid的地址 默认在/var/run/redis.pid
    
    3、bind 绑定ip,设置后只接受来自该ip的请求
    
    4、port 监听端口,默认是6379
    
    5、loglevel 分为4个等级:debug verbose notice warning
    
    6、logfile 用于配置log文件地址
    
    7、databases 设置数据库个数,默认使用的数据库为0
    
    8、save 设置redis进行数据库镜像的频率。
    
    9、rdbcompression 在进行镜像备份时,是否进行压缩
    
    10、dbfilename 镜像备份文件的文件名
    
    11、Dir 数据库镜像备份的文件放置路径
    
    12、Slaveof 设置数据库为其他数据库的从数据库
    
    13、Masterauth 主数据库连接需要的密码验证
    
    14、Requriepass 设置 登陆时需要使用密码
    
    15、Maxclients 限制同时使用的客户数量
    
    16、Maxmemory 设置redis能够使用的最大内存
    
    17、Appendonly 开启append only模式
    
    18、Appendfsync 设置对appendonly.aof文件同步的频率(对数据进行备份的第二种方式)
    
    19、vm-enabled 是否开启虚拟内存支持 (vm开头的参数都是配置虚拟内存的)
    
    20、vm-swap-file 设置虚拟内存的交换文件路径
    
    21、vm-max-memory 设置redis使用的最大物理内存大小
    
    22、vm-page-size 设置虚拟内存的页大小
    
    23、vm-pages 设置交换文件的总的page数量
    
    24、vm-max-threads 设置VM IO同时使用的线程数量
    
    25、Glueoutputbuf 把小的输出缓存存放在一起
    
    26、hash-max-zipmap-entries 设置hash的临界值
    
    27、Activerehashing 重新hash

      

    3、nodejs中操作redis

    3.1、  安装redis

    // github https://github.com/NodeRedis/node_redis
    npm install redis --save

     

    3.2、  简单使用

    //引入redis
    var redis = require('redis')
    // 连接redis服务器
    // 连接redis数据库,createClient(port,host,options);
    // 如果REDIS在本机,端口又是默认,直接写createClient()即可
    client = redis.createClient(6379, '192.168.73.128', {
        password: 'lentoo'
    });
    
    //错误监听?
    client.on("error", function (err) {
        console.log(err);
    });
    client.set('key','value')
    client.get('key')

     

    3.3、常用API

    • redis.print

        通过redis的打印api回显

    • set

        像redis中存入一个键值对

    client.set('key','value')
    // 设置过期时间 10s后过期
    client.set('key','value','EX',10)
    • get

        获取在redis中存入的值

      client.get('key') // value
    • hset

        通过hash key 存值

    client.hset('hash key','key','value', redis.print)
    • hget

        通过hash key 获取值

    client.hget('hash key','key', redis.print)
    • hkeys

        所有的"hash key"

    // 遍历哈希表"hash key"
    client.hkeys("hash key", function (err, replies) {
        console.log(replies.length + " replies:");
        replies.forEach(function (reply, i) {
            console.log("    " + i + ": " + reply);
        });
        client.quit();
    });
    • hmset 

        可同时设置多个key,value

    client.hmset('hash 1', 'key', 'value111', 'key2', 'value222', 'key3', 'value3', redis.print)
    • hmget

        可同时获取多个key

    client.hmget('hash 1', 'key', 'key2', 'key3', redis.print)
    • publish/subscribe

        发布/订阅

    const sub = redis.createClient() // 订阅者
    const pub = redis.createClient() // 发布者
    var msg_count = 0;
    
    sub.on("subscribe", function (channel, count) {
        client.publish("a nice channel", "I am sending a message.");
        client.publish("a nice channel", "I am sending a second message.");
        client.publish("a nice channel", "I am sending my last message.");
    });
    
    sub.on("message", function (channel, message) {
        console.log("sub channel " + channel + ": " + message);
        msg_count += 1;
        if (msg_count === 3) {
            sub.unsubscribe();
            sub.quit();
            client.quit();
        }
    });
    • ready

        redis客户端连接准备好后触发,在此前所有发送给redis服务器的命令会以队列的形式进行排队,会在ready事件触发后发送给redis服务器

    client.on('ready',function(){
        console.log('ready');
    })
    • connct       

        客户端在连接到服务器后触发 

    client.on('connect',function(){
        console.log('connect');
    })
    • reconnecting   

        客户端在连接断开后重新连接服务器时触发

    client.on('reconnecting ', function (resc) {
        console.log('reconnecting',resc);
    })
    • error

        错误监听

    client.on("error", function (err) { console.log(err); });
    • end

        连接断开时触发

    client.on('end',function(){
      console.log('end')
    })
    • createClient

        创建一个链接

    redis.createClient([options])
    redis.createClient(unix_socket[, options])
    redis.createClient(redis_url[, options])
    redis.createClient(port[, host][, options])

     

    3.4 options 对象属性

    属性 默认值 描述
    host  127.0.0.1 redis服务器地址
    port 6379 端口号
    connect_timeout 3600000 连接超时时间 以ms为单位
    password null 密码
  • 相关阅读:
    扩展域并查集经典题
    2010提高组-C]关押罪犯(扩展域并查集
    [2015普及组-D]推销员 思维que
    The 2019 Asia Nanchang First Round Online Programming Contest C(cf原题,线段树维护矩阵)
    Fire-Fighting Hero(多源最短路和单源最短路)
    The Preliminary Contest for ICPC Asia Xuzhou 2019
    Cow Routing(最短路spfa)
    hdu6582
    ACM_题目这么难,来局愉快的昆特牌吧
    ACM_水题你信吗
  • 原文地址:https://www.cnblogs.com/lentoo/p/9441267.html
Copyright © 2011-2022 走看看