redis.js 5.6 KB

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