zoukankan      html  css  js  c++  java
  • 使用nodeJs操作redis

    配置文件:RedisOptions.js
    const options = {
      host: '208.167.233.104',
      port: 15001,
      password: '123456',
      detect_buffers: true // 传入buffer 返回也是buffer 否则会转换成String
    }
     
    module.exports = options
     
    封装redis操作:RedisConfig.js 需要安装redis的npm包 (3.0.2)
    const redis = require('redis')
    const redisOptions = require('./RedisOptions')
     
    const options = {
      host: redisOptions.host,
      port: redisOptions.port,
      password: redisOptions.password,
      detect_buffers: redisOptions.detect_buffers, // 传入buffer 返回也是buffer 否则会转换成String
      retry_strategy: function (options) {
        // 重连机制
        if (options.error && options.error.code === "ECONNREFUSED") {
          // End reconnecting on a specific error and flush all commands with
          // a individual error
          return new Error("The server refused the connection");
        }
        if (options.total_retry_time > 1000 * 60 * 60) {
          // End reconnecting after a specific timeout and flush all commands
          // with a individual error
          return new Error("Retry time exhausted");
        }
        if (options.attempt > 10) {
          // End reconnecting with built in error
          return undefined;
        }
        // reconnect after
        return Math.min(options.attempt * 100, 3000);
      }
    }
     
    // 生成redis的client
    const client = redis.createClient(options)
     
    // 存储值
    const setValue = (key, value) => {
      if (typeof value === 'string') {
        client.set(key, value)
      } else if (typeof value === 'object') {
        for (let item in value) {
          client.hmset(key, item, value[item],redis.print)
        }
      }
    }
     
    // 获取string
    const getValue = (key) => {
      return new Promise((resolve, reject) => {
        client.get(key, (err, res) => {
          if (err) {
            reject(err)
          }else{
            resolve(res)
          }
        })
      })
    }
     
    // 获取hash
    const getHValue = (key) => {
      return new Promise((resolve, reject) => {
        client.hgetall(key, function (err, value) {
          if (err) {
            reject(err)
          } else {
            resolve(value)
          }
        })
      })
    }
     
    // 导出
    module.exports = {
      setValue,
      getValue,
      getHValue
    } 
     
    使用:test.js
    const redis = require('./RedisConfig')
     
    redis.setValue('student', {
      name: 'xiaoming',
      age: 18,
      sex: 1
    })
     
    redis.setValue('book', 'yuwen')
     
    redis.getValue('book').then(res => {
      console.log(res)
    }).catch(err => {
      throw new Error(err)
    })
     
    redis.getHValue('student').then(res => {
      console.log(res)
    }).catch(err => {
      throw new Error(err)
    })
  • 相关阅读:
    Sqli Labs Less-21-31
    sqli labs Less-11-20
    基础知识补充及sqli-labs Less 5-10
    sqli-labs Less 2-4
    Sql简单的搜索语句及sqli-labs的less-1
    Sqli labs相关环境的下载与安装
    行内元素没有宽高,块级元素有宽高
    Webview上传文件的那些坑
    [Android开发] 代码code设置9.png/9-patch 图片背景后,此view中的TextView等控件显示不正常(常见于listview中)
    AndroidSupportDesign之TabLayout使用详解
  • 原文地址:https://www.cnblogs.com/likewpp/p/12652221.html
Copyright © 2011-2022 走看看