星空网 > 软件开发 > 数据库

Redis学习笔记~关于空间换时间的查询案例

回到目录

空间与时间

空间换时间是在数据库中经常出现的术语,简单说就是把查询需要的条件进行索引的存储,然后查询时为O(1)的时间复杂度来快速获取数据,从而达到了使用空间存储来换快速的时间响应!对于redis这个k/v存储系统来说,复杂的查询不是它所建议的,它的优势在于通过key快速定位数据,它定位数据的速度与数据多少没有直接关系,无论是1万还是1亿数据,它定位的时间复杂度都是O(1),而在实际使用中,可能不简单使用key定位数据就够了,可能还需要数据里的某个属性去定位数据,这种情况第一感觉不能用redis,或者说,不能用k/v存储系统了,但这不是我们应该说的,我们要的是解决方案,换个角度去思考,我们是否可以把那个属性拿出来当新的key,把原来的key当作它的value呢,答案是肯定的,这就是用空间到换时间,只需要两个查询就可以搞定了!

Redis学习笔记~关于空间换时间的查询案例

上面是一个100万的hash集合,key是用户id,value是一个用户实体,我们通过RedisClient.RedisManager.Instance.GetDatabase().HashGet("VoteList", id)很方便的可以拿到对应的用户实体!

我希望通过用户名拿到用户实体?

这种需求,我们不要直接解决,如果直接解决,那唯一的办法就是遍历所有数据,然后一一对比,时间复杂度就是O(N),太可怕了!

通过添加新的k/v,解决这个问题,这类似于关系数据库里的全表扫描+索引技术!

Redis学习笔记~关于空间换时间的查询案例

实现程序:先通过userName找到UserId,再通过UserId找到用户实体!

    [TestMethod]    public void FindBigData()    {      Stopwatch sw = new Stopwatch();      sw.Start();      var name = RedisClient.RedisManager.Instance.GetDatabase().HashGet("VoteList_UserName", "zzl15");//找到用户ID      if (name.HasValue)      {        var val = RedisClient.RedisManager.Instance.GetDatabase().HashGet("VoteList", name);//找到用户实体        Console.WriteLine("name={0},value={1}", name, val);      }      else      {        Console.WriteLine("没有发现这个Key");      }      sw.Stop();      Console.WriteLine("查询需要的时间:" + sw.ElapsedMilliseconds + "ms");    }

Redis学习笔记~关于空间换时间的查询案例

通过这个实例让我们知道,做成一件事,可能一步不行,但多几步一定可以实现!

回到目录




原标题:Redis学习笔记~关于空间换时间的查询案例

关键词:Redis

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

全球或迎“史上最热夏天”,中国消暑电器走红海外:https://www.ikjzd.com/articles/1665957882082127874
HaiMa海玛|盲盒是割韭菜?美国这家美妆盲盒通过海外社媒让年轻人太上头了!:https://www.ikjzd.com/articles/1665959647531790337
AR火苗越吹越旺,Nreal在海外如何营销为AR眼镜全球第一?:https://www.ikjzd.com/articles/1665964591894786049
TikTok 2023 趋势与更新!:https://www.ikjzd.com/articles/1665992127759982593
跨境电商出海不合规常见做法(二):https://www.ikjzd.com/articles/1665993187270533121
海外网红营销:揭秘KOL和KOC的本质区别与市场影响力:https://www.ikjzd.com/articles/1665997876356214786
恐怖游轮2002 恐怖游轮2022:https://www.vstour.cn/a/365178.html
时尚电商平台Meesho拟融资3亿美元!:https://www.kjdsnews.com/a/1836524.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流