redis_db.js 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. var Redis = require('ioredis'); //导入 安装好的 redis. npm i ioredis --save
  2. var { db_config } = require('../../config/config.js') // 导入位置文件
  3. const logger = require('../logger')
  4. //redis 服务启动 /usr/local/bin/redis-server /usr/local/etc/redis.conf
  5. var port = db_config.redis.PORT
  6. var host = db_config.redis.HOST
  7. var username = db_config.redis.USERNAME
  8. var password = db_config.redis.PASSWORD
  9. var REDIS_INSTANCE;
  10. // username: username,
  11. // password: password,
  12. // logger.log('host , post', host, port, process.env.NODE_ENV)
  13. var opts;
  14. if (process.env.NODE_ENV == 'test') {
  15. opts = {
  16. port: port,
  17. host: host,
  18. connectTimeout: 10000,
  19. }
  20. REDIS_INSTANCE = new Redis.Cluster([opts]);
  21. } else if (process.env.NODE_ENV == 'dev') {
  22. opts = {
  23. port: port,
  24. host: host,
  25. // password: passwordd
  26. }
  27. // var new_opts = "redis://"+password+"@"+host+":"+port+"/0"
  28. // "redis://:authpassword@127.0.0.1:6380/4"
  29. // REDIS_INSTANCE = new Redis(opts);
  30. REDIS_INSTANCE = new Redis.Cluster([opts]);
  31. // REDIS_INSTANCE=new Redis.Cluster([opts]);
  32. } else if (process.env.NODE_ENV == 'prd') {
  33. opts = {
  34. port: port,
  35. host: host,
  36. connectTimeout: 10000,
  37. }
  38. REDIS_INSTANCE = new Redis.Cluster([opts]);
  39. }
  40. REDIS_INSTANCE.on('connect', () => {
  41. logger.log('connected to redis')
  42. })
  43. REDIS_INSTANCE.on('error', function (err) {
  44. logger.log('redis Error ', err);
  45. });
  46. function redis_set(key, value) {
  47. logger.log("redis set=", key, value);
  48. try {
  49. REDIS_INSTANCE.set(key, value);
  50. } catch (error) {
  51. logger.error('redis_set error:', key, value, error)
  52. return null;
  53. }
  54. }
  55. function redis_push(key, value) {
  56. logger.log("redis_push=", key, value);
  57. try {
  58. REDIS_INSTANCE.rpush(key, value);
  59. } catch (error) {
  60. logger.error('redis_push error:', key, value, error)
  61. return null;
  62. }
  63. }
  64. function redis_pop(key) {
  65. logger.log("redis_pop=", key);
  66. try {
  67. return REDIS_INSTANCE.lpop(key);
  68. } catch (error) {
  69. logger.error('redis_pop error:', key, error)
  70. return null;
  71. }
  72. }
  73. async function redis_get(key) {
  74. logger.log("redis get=", key);
  75. try {
  76. return await REDIS_INSTANCE.get(key);
  77. } catch (error) {
  78. logger.error('redis_get error:', key, error)
  79. return null;
  80. }
  81. }
  82. /**
  83. * 同步
  84. *
  85. * @param {*} key
  86. * @returns
  87. */
  88. async function readRedis(key) {
  89. return new Promise((resolve) => {
  90. // REDIS_INSTANCE.get(key)
  91. redis_get(key)
  92. .then(result => {
  93. console.log("redis_get=", result); // Prints "value"
  94. resolve(result);
  95. }).catch(e => {
  96. console.log("readRedis key error=", key, e); // Prints "error"
  97. });
  98. })
  99. }
  100. module.exports = {
  101. redis_set,
  102. redis_push,
  103. redis_pop,
  104. redis_get,
  105. readRedis,
  106. }