123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162 |
- var Redis = require('ioredis'); //导入 安装好的 redis. npm i ioredis --save
- var { db_config } = require('../../config/config.js') // 导入位置文件
- const logger = require('../logger')
- const utils = require('../utils')
- //redis 服务启动 /usr/local/bin/redis-server /usr/local/etc/redis.conf
- var port = db_config.redis.PORT
- var host = db_config.redis.HOST
- var username = db_config.redis.USERNAME
- var password = db_config.redis.PASSWORD
- var REDIS_INSTANCE;
- // username: username,
- // password: password,
- // logger.log('host , post', host, port, process.env.NODE_ENV)
- var opts;
- if (process.env.NODE_ENV == 'test') {
- opts = {
- port: port,
- host: host,
- connectTimeout: 10000,
- }
- REDIS_INSTANCE = new Redis.Cluster([opts]);
- } else if (process.env.NODE_ENV == 'dev') {
- opts = {
- port: port,
- host: host,
- // password: passwordd
- }
- // var new_opts = "redis://"+password+"@"+host+":"+port+"/0"
- // "redis://:authpassword@127.0.0.1:6380/4"
- // REDIS_INSTANCE = new Redis(opts);
- REDIS_INSTANCE = new Redis.Cluster([opts]);
- // REDIS_INSTANCE=new Redis.Cluster([opts]);
- } else if (process.env.NODE_ENV == 'prd') {
- opts = {
- port: port,
- host: host,
- connectTimeout: 10000,
- }
- REDIS_INSTANCE = new Redis.Cluster([opts]);
- }
- REDIS_INSTANCE.on('connect', () => {
- logger.log('connected to redis')
- })
- REDIS_INSTANCE.on('error', function (err) {
- logger.log('redis Error ', err);
- });
- function redis_set(key, value) {
- logger.log("redis set=", key, value);
- try {
- REDIS_INSTANCE.set(key, value);
- } catch (error) {
- logger.error('redis_set error:', key, value, error)
- return null;
- }
- }
- function redis_push(key, value) {
- logger.log("redis_push=", key, value);
- try {
- REDIS_INSTANCE.rpush(key, value);
- } catch (error) {
- logger.error('redis_push error:', key, value, error)
- return null;
- }
- }
- function redis_pop(key) {
- logger.log("redis_pop=", key);
- try {
- return REDIS_INSTANCE.lpop(key);
- } catch (error) {
- logger.error('redis_pop error:', key, error)
- return null;
- }
- }
- async function redis_get(key) {
- logger.log("redis get=", key);
- try {
- return await REDIS_INSTANCE.get(key);
- } catch (error) {
- logger.error('redis_get error:', key, error)
- return null;
- }
- }
- function formatRedisKey(key, chain, append) {
- logger.info('formatRedisKey', key, chain, append)
- var newKey = key + append
- if (append == null) {
- newKey = key
- }
- if (chain != null) {
- var chainKey = utils.getRedisKeyFromChain(chain)
- if (chainKey != null) {
- switch (key) {
- case 'TOKENPRICE':
- case 'TOKENPRICE_TEST':
- newKey = key + chainKey
- break
- case 'LAST_BNB_PRICE':
- case 'LAST_TOKEN_PRICE':
- newKey = key + chainKey
- break
- case 'REDIS_ERC20_CONTRACT_DECIMALS':
- if (append != null) {
- newKey = key + chainKey + '_'+append
- // newKey = key + '_' + append
- }
- break
- }
- }
- }
- return newKey
- }
- async function readAppendRedis(key, chain, append) {
- var newKey = formatRedisKey(key, chain, append)
- return await readRedis(newKey)
- }
- async function writeAppendRedis(key, chain, append, value) {
- var newKey = formatRedisKey(key, chain, append)
- return await redis_set(newKey, value)
- }
- /**
- * 同步
- *
- * @param {*} key
- * @returns
- */
- async function readRedis(key) {
- return new Promise((resolve) => {
- // REDIS_INSTANCE.get(key)
- redis_get(key)
- .then(result => {
- // console.log("redis_get=", result); // Prints "value"
- resolve(result);
- }).catch(e => {
- console.log("readRedis key error=", key, e); // Prints "error"
- resolve(null);
- });
- })
- }
- module.exports = {
- redis_set,
- redis_push,
- redis_pop,
- redis_get,
- readRedis,
- readAppendRedis,
- writeAppendRedis,
- formatRedisKey,
- }
|