redis.js 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219
  1. /**
  2. * Created by chen on 2017/8/21.
  3. */
  4. let Redis = require('ioredis'),
  5. config=require('./config'),
  6. redis = new Redis({
  7. port: config.redis_qa.port, // Redis port
  8. host: config.redis_qa.server, // Redis host
  9. family: 4, // 4 (IPv4) or 6 (IPv6)
  10. password:config.redis_qa.pwd,
  11. db: 0
  12. });
  13. let client={};
  14. redis.on('ready',function(res){
  15. console.log('ready');
  16. });
  17. redis.on("error", function (err) {
  18. console.log("Error " + err);
  19. });
  20. client.redis = redis;
  21. //redis.hmset('测试',{12525:55,'a':'aaaa',b:"bbbbb"});
  22. //var stream = redis.scanStream({ match: '测*'});
  23. /*redis.hmset('RATION',{12525:55,'a':'aaaa',b:"bbbbb"});
  24. redis.hgetall("RATION",function (err,result) {
  25. console.log(result);
  26. })*/
  27. client.scan = function(options,callback){
  28. var stream = null;
  29. if(options){
  30. stream = redis.scanStream(options);
  31. }else {
  32. stream = redis.scanStream();
  33. }
  34. var keys = [];
  35. stream.on('data', function (resultKeys) {
  36. // `resultKeys` is an array of strings representing key names
  37. for (var i = 0; i < resultKeys.length; i++) {
  38. keys.push(resultKeys[i]);
  39. }
  40. });
  41. stream.on('end', function () {
  42. console.log('done with the keys: ', keys);
  43. callback(keys);
  44. });
  45. }
  46. client.set = function(key, value, expire, callback){
  47. return redis.set(key, value, function(err, result){
  48. if (err) {
  49. console.log(err);
  50. callback(err,null);
  51. return;
  52. }
  53. if (!isNaN(expire) && expire > 0) {
  54. redis.expire(key, parseInt(expire));
  55. }
  56. if(callback){
  57. callback(null,result);
  58. }
  59. })
  60. }
  61. client.get = function(key, callback){
  62. return redis.get(key, function(err,result){
  63. if (err) {
  64. console.log(err);
  65. callback(err,null);
  66. return;
  67. }
  68. if(callback){
  69. callback(null,result);
  70. }
  71. });
  72. }
  73. client.hmset = function(key, value, expire, callback){
  74. return redis.hmset(key, value, function(err, result){
  75. if (err) {
  76. console.log(err);
  77. callback(err,null);
  78. return;
  79. }
  80. if (!isNaN(expire) && expire > 0) {
  81. redis.expire(key, parseInt(expire));
  82. }
  83. if(callback){
  84. callback(null,result);
  85. }
  86. })
  87. }
  88. client.hmget = function (key,fields,callback) {
  89. return redis.hmget(key,fields,function(err,result){
  90. if (err) {
  91. console.log(err);
  92. callback(err,null)
  93. return;
  94. }
  95. if(callback){
  96. callback(null,result);
  97. }
  98. })
  99. }
  100. client.hgetall = function (key,callback) {
  101. return redis.hgetall(key,function (err,result) {
  102. if (err) {
  103. console.log(err);
  104. callback(err,null)
  105. return;
  106. }
  107. callback(null,result);
  108. })
  109. }
  110. client.hscan = function (key,options) {
  111. var stream = null;
  112. if(options){
  113. stream = redis.hscanStream(key,options);
  114. }else {
  115. stream = redis.hscanStream(key);
  116. }
  117. var fields = [];
  118. stream.on('data', function (resultFields) {
  119. // `resultKeys` is an array of strings representing key names
  120. for (var i = 0; i < resultFields.length; i++) {
  121. fields.push(resultFields[i]);
  122. }
  123. });
  124. stream.on('end', function () {
  125. console.log('done with the keys: ', fields);
  126. callback(fields);
  127. });
  128. }
  129. client.rpush = function(key,value,expire, callback){
  130. return redis.rpush(key, value, function(err, result){
  131. if (err) {
  132. console.log(err);
  133. callback(err,null);
  134. return;
  135. }
  136. if (!isNaN(expire) && expire > 0) {
  137. redis.expire(key, parseInt(expire));
  138. }
  139. if(callback){
  140. callback(null,result);
  141. }
  142. })
  143. }
  144. client.lrange= function (key,start,end,callback) {
  145. return redis.lrange(key,start,end,callback);//获取列表在给定范围上的所有值 array lrange('key', 0, -1) (返回所有值)
  146. }
  147. client.lindex =function (key,index,callback) {
  148. return redis.lindex(key,index,callback);//获取列表在给定位置上的单个元素 lindex('key', 1)
  149. }
  150. client.lpop = function (key,callback) {
  151. return redis.lpop(key,callback);//从列表左端弹出一个值,并返回被弹出的值lpop('key')
  152. }
  153. client.rpop = function (key,callback) {
  154. return redis.rpop(key,callback);//从列表右端弹出一个值,并返回被弹出的值rpop('key')
  155. }
  156. client.ltrim = function (key,start,end,callback) {
  157. return redis.ltrim(key,start,end,callback);//将列表按指定的index范围裁减 ltrim('key', 'start', 'end')
  158. }
  159. client.del = function (keys,callback) {
  160. return redis.del(keys,callback);// 删除一个(或多个)keys return 被删除的keys的数量 del('key1'[, 'key2', ...])
  161. }
  162. client.exists = function (key,callback) {
  163. return redis.exists(key,callback);// 查询一个key是否存在 1/0 exists('key')
  164. }
  165. client.multi = function () {
  166. return redis.multi();//用于开启一个事务,它总是返回 OK 。
  167. }
  168. client.exec =function () {
  169. return redis.exec();//执行所有事务块内的命令
  170. }
  171. client.application_init = function () {
  172. redis.flushdb();//清空所有keys
  173. // load datas -- to do
  174. /*data=[{
  175. method:'hmset',
  176. key:'ration:25555',
  177. value:{
  178. name:'aaa',
  179. quantily:255
  180. },
  181. expire:2000,//options
  182. callback:function, //option
  183. }]
  184. for(let data of datas){
  185. client[data.method](data.key,data.value,data.expire,data.callback);
  186. }
  187. */
  188. }
  189. module.exports = client