using System; using System.IO; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; //using CSharpUtil; using StackExchange.Redis; using Newtonsoft.Json; using Newtonsoft.Json.Linq; namespace RedisTransfer { internal class Trans2Json : ITransfer { public void Trans(int db = 0) { var redis = Redis.Rdb(db); Console.WriteLine("{"); var s = File.ReadAllLines("keys.txt"); s.ToList().ForEach(x => { var t = redis.KeyType(x); switch (t) { case RedisType.String: Console.WriteLine(new JProperty(x, (string)redis.StringGet(x)).ToString() + ","); break; case RedisType.Hash: { var jo = new JObject(); redis.HashGetAll(x).ToList().ForEach(x => jo.Add(x.Name, x.Value.ToString())); Console.WriteLine(new JProperty(x, jo).ToString() + ","); break; } case RedisType.List: { var ja = new JArray(); foreach (var r in redis.ListRange(x, 0, -1)) { ja.Add(r.ToString()); } Console.WriteLine(new JProperty(x, ja).ToString() + ","); break; } case RedisType.Set: { var ja = new JArray(); foreach (var r in redis.SetMembers(x)) { ja.Add(r.ToString()); } Console.WriteLine(new JProperty(x, ja).ToString() + ","); break; } case RedisType.SortedSet: { var ja = new JArray(); foreach (var r in redis.SortedSetRangeByScoreWithScores(x)) { ja.Add(r.ToString()); } Console.WriteLine(new JProperty(x, ja).ToString()+","); break; } default: Console.WriteLine("不支持的redis数据类型"); break; } }); Console.WriteLine("}"); } } }