[Redis笔记]作为缓存时的一些使用经验+线程模型

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/yjclsx/article/details/86758349
      redis作为NoSQL数据库,经常用作缓存,所以推荐将那些经常查询的数据存入redis中方便下次快速获取。但redis没有像关系型数据库那样拥有结构化的查询语言,如果缓存了很多数据,想从中获取满足某些条件的数据时,该如何做呢?

      如果把这些海量数据从redis里拿出来,逐个遍历筛选出满足条件的数据,这肯定不可行!

      可以通过在把这些海量数据存入redis时,把满足各种条件的数据的key同时也存入redis的set类型中就可以方便下次根据这些条件查询了。

      比如user表的数据经常被以年龄为25并且性别为男的条件来进行查询,而且user表的数据很多比如有500W条,那么我们通常会把所有user表的数据存入到redis的hash类型中,该hash类型数据的集合名称为user表的表名比如"SYS_USER_TABLE",里面每条数据的key是该条数据的id值,value是该条数据的json字符串。同时我们将满足年龄为25的数据的id存入key为"SYS_USER_AGE_25"的set类型中,把满足性别为男的数据的id存入key为"SYS_USER_SEX_M"的set类型中。这样当要查询年龄为25并且性别为男的user时,可以通过将SYS_USER_AGE_25和SYS_USER_SEX_M这两个set集合取交集,再从SYS_USER_TABLE中获取key在这个交集中的数据即可。

      取交集就是"与"关系,取并集就是"或"关系,利用这两点可以满足类似关系型数据库中根据where条件进行简单查询的场景。当然redis毕竟是NoSQL,太复杂的查询肯定做不了,也不推荐做,所以尽量在redis中存的数据就是你想要的数据,换句话说这些数据本身就是满足这些条件的查询结果。

 
 

redis线程模型:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值