redis_db.js 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. var Redis = require('ioredis'); //导入 安装好的 redis. npm i ioredis --save
  2. var { db_config } = require('../../config/config.js') // 导入位置文件
  3. const logger = require('../logger')
  4. const utils = require('../utils')
  5. //redis 服务启动 /usr/local/bin/redis-server /usr/local/etc/redis.conf
  6. var port = db_config.redis.PORT
  7. var host = db_config.redis.HOST
  8. var username = db_config.redis.USERNAME
  9. var password = db_config.redis.PASSWORD
  10. var REDIS_INSTANCE;
  11. // username: username,
  12. // password: password,
  13. // logger.log('host , post', host, port, process.env.NODE_ENV)
  14. var opts;
  15. if (process.env.NODE_ENV == 'test') {
  16. opts = {
  17. port: port,
  18. host: host,
  19. connectTimeout: 10000,
  20. }
  21. REDIS_INSTANCE = new Redis.Cluster([opts]);
  22. } else if (process.env.NODE_ENV == 'dev') {
  23. opts = {
  24. port: port,
  25. host: host,
  26. // password: passwordd
  27. }
  28. // var new_opts = "redis://"+password+"@"+host+":"+port+"/0"
  29. // "redis://:authpassword@127.0.0.1:6380/4"
  30. // REDIS_INSTANCE = new Redis(opts);
  31. REDIS_INSTANCE = new Redis.Cluster([opts]);
  32. // REDIS_INSTANCE=new Redis.Cluster([opts]);
  33. } else if (process.env.NODE_ENV == 'prd') {
  34. opts = {
  35. port: port,
  36. host: host,
  37. connectTimeout: 10000,
  38. }
  39. REDIS_INSTANCE = new Redis.Cluster([opts]);
  40. }
  41. REDIS_INSTANCE.on('connect', () => {
  42. logger.log('connected to redis')
  43. })
  44. REDIS_INSTANCE.on('error', function (err) {
  45. logger.log('redis Error ', err);
  46. });
  47. function redis_set(key, value) {
  48. logger.log("redis set=", key, value);
  49. try {
  50. REDIS_INSTANCE.set(key, value);
  51. } catch (error) {
  52. logger.error('redis_set error:', key, value, error)
  53. return null;
  54. }
  55. }
  56. function redis_push(key, value) {
  57. logger.log("redis_push=", key, value);
  58. try {
  59. REDIS_INSTANCE.rpush(key, value);
  60. } catch (error) {
  61. logger.error('redis_push error:', key, value, error)
  62. return null;
  63. }
  64. }
  65. function redis_pop(key) {
  66. logger.log("redis_pop=", key);
  67. try {
  68. return REDIS_INSTANCE.lpop(key);
  69. } catch (error) {
  70. logger.error('redis_pop error:', key, error)
  71. return null;
  72. }
  73. }
  74. async function redis_get(key) {
  75. logger.log("redis get=", key);
  76. try {
  77. return await REDIS_INSTANCE.get(key);
  78. } catch (error) {
  79. logger.error('redis_get error:', key, error)
  80. return null;
  81. }
  82. }
  83. function formatRedisKey(key, chain, append) {
  84. logger.info('formatRedisKey', key, chain, append)
  85. var newKey = key + append
  86. if (append == null) {
  87. newKey = key
  88. }
  89. if (chain != null) {
  90. var chainKey = utils.getRedisKeyFromChain(chain)
  91. if (chainKey != null) {
  92. switch (key) {
  93. case 'TOKENPRICE':
  94. case 'TOKENPRICE_TEST':
  95. newKey = key + chainKey
  96. break
  97. case 'LAST_BNB_PRICE':
  98. case 'LAST_TOKEN_PRICE':
  99. newKey = key + chainKey
  100. break
  101. case 'REDIS_ERC20_CONTRACT_DECIMALS':
  102. if (append != null) {
  103. newKey = key + chainKey + '_'+append
  104. // newKey = key + '_' + append
  105. }
  106. break
  107. }
  108. }
  109. }
  110. return newKey
  111. }
  112. async function readAppendRedis(key, chain, append) {
  113. var newKey = formatRedisKey(key, chain, append)
  114. return await readRedis(newKey)
  115. }
  116. async function writeAppendRedis(key, chain, append, value) {
  117. var newKey = formatRedisKey(key, chain, append)
  118. return await redis_set(newKey, value)
  119. }
  120. /**
  121. * 同步
  122. *
  123. * @param {*} key
  124. * @returns
  125. */
  126. async function readRedis(key) {
  127. return new Promise((resolve) => {
  128. // REDIS_INSTANCE.get(key)
  129. redis_get(key)
  130. .then(result => {
  131. console.log("redis_get=", result); // Prints "value"
  132. resolve(result);
  133. }).catch(e => {
  134. console.log("readRedis key error=", key, e); // Prints "error"
  135. });
  136. })
  137. }
  138. module.exports = {
  139. redis_set,
  140. redis_push,
  141. redis_pop,
  142. redis_get,
  143. readRedis,
  144. readAppendRedis,
  145. writeAppendRedis,
  146. }