最近两天在研究数据字典,存入redis缓存的功能。
先简单介绍一下,数据字典主要包含两张表数据(主表:字典名称,子表:字典元素内容)
刚开始关于数据存储的格式想的很简单,用每条数据的唯一标识作为redis的key.但是到最后获取所有数据字典的时候就出问题了,导致无法获取。直白的说,不能根据目录进行获取。至此已实现的存储方式只能放弃。
最后存储的方式如下图所示:
放入缓存实现方法:
redisHelper.SortedSetAdd("CodeMain", cMain.CodeName, System.Convert.ToDouble(cMain.Sort.ToString()), "Main");//主表数据放入缓存
redisHelper.StringSet(cMain.CodeName, redisItems, "Items", null);//子表数据放入缓存获取缓存数据:
IEnumerable<RedisValue> mainRedis =await redisHelper.SortedSetRangeByRankAsync("CodeMain", "Main");//主表元素
if (mainRedis.Count() > 0) { foreach (var mItems in mainRedis) { var cItems = await redisHelper.StringGetAsync<List<RedisCodeItemDto>>(mItems.ToString(), "Items", null);//子表元素获取
注:redisHelper为辅助类。需要可私聊!