Trans2Json.cs 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. using System;
  2. using System.IO;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. //using CSharpUtil;
  8. using StackExchange.Redis;
  9. using Newtonsoft.Json;
  10. using Newtonsoft.Json.Linq;
  11. namespace RedisTransfer
  12. {
  13. internal class Trans2Json : ITransfer
  14. {
  15. public void Trans(int db = 0)
  16. {
  17. var redis = Redis.Rdb(db);
  18. Console.WriteLine("{");
  19. var s = File.ReadAllLines("keys.txt");
  20. s.ToList().ForEach(x =>
  21. {
  22. var t = redis.KeyType(x);
  23. switch (t)
  24. {
  25. case RedisType.String:
  26. Console.WriteLine(new JProperty(x, (string)redis.StringGet(x)).ToString() + ",");
  27. break;
  28. case RedisType.Hash:
  29. {
  30. var jo = new JObject();
  31. redis.HashGetAll(x).ToList().ForEach(x => jo.Add(x.Name, x.Value.ToString()));
  32. Console.WriteLine(new JProperty(x, jo).ToString() + ",");
  33. break;
  34. }
  35. case RedisType.List:
  36. {
  37. var ja = new JArray();
  38. foreach (var r in redis.ListRange(x, 0, -1))
  39. {
  40. ja.Add(r.ToString());
  41. }
  42. Console.WriteLine(new JProperty(x, ja).ToString() + ",");
  43. break;
  44. }
  45. case RedisType.Set:
  46. {
  47. var ja = new JArray();
  48. foreach (var r in redis.SetMembers(x))
  49. {
  50. ja.Add(r.ToString());
  51. }
  52. Console.WriteLine(new JProperty(x, ja).ToString() + ",");
  53. break;
  54. }
  55. case RedisType.SortedSet:
  56. {
  57. var ja = new JArray();
  58. foreach (var r in redis.SortedSetRangeByScoreWithScores(x))
  59. {
  60. ja.Add(r.ToString());
  61. }
  62. Console.WriteLine(new JProperty(x, ja).ToString()+",");
  63. break;
  64. }
  65. default:
  66. Console.WriteLine("不支持的redis数据类型");
  67. break;
  68. }
  69. });
  70. Console.WriteLine("}");
  71. }
  72. }
  73. }