开发者社区> 问答> 正文

redis具体场景该如何样用?

接触redis一段时间了,5种类型都知道,但具体什么时候用哪种类型好像很混乱

展开
收起
爵霸 2016-03-09 13:26:00 2068 0
2 条回答
写回答
取消 提交回答
  • redis在互联网应用中非常普遍,譬如说缓存用户session,抢红包,游戏排行榜等等等等,几句话是说不完的,这一块,我可以给题主推荐一本书《redis in action》,中文翻译是《redis实战》。

    2019-07-17 18:55:54
    赞同 展开评论 打赏
  • redis是什么

    redis就是一个存储key-value键值对的仓库,如何使用redis在于如何理解你需要设计的系统的E-R的模型,然后合理的规划redis的数据库结构

    场景

    我举一个简单的消息系统的例子,业务需求:服务器端发送消息给用户
    E-R模型:

    1. 用户(uid,nickname,phone,mood)
    2. 消息(mid,title,content,ts)

    用户和消息之间是n:n的关系,一个消息可以发给多个用户,每个用户可以拥有多个消息

    redis数据库设计

    redis数据库设计的关键在于key的设计,我一般采用固定前缀+唯一后缀的方式,例如:

    1. 消息实体是两层结构,考虑用redis的hash数据结构进行存储(ps:用基本的string也是没问题的),key为msg_[$mid],mid类似于mysql表的主key,在当前redis数据库要保证全局唯一,可使用redis的incr原子操作实现,value可以是array('title' => '标题', 'content' => '内容', 'ts' => '发布时间戳').这样,每次服务器端产生消息,构造这样一个key-value的键值对即可表示消息本身的内容
    2. 用户实体,因为用户的信息需要更稳定的持久化存储,所以建议直接存储在mysql里,不需要进行迁移到redis中
    3. 用户-消息关系,可以考虑redis的sets数据结构。key为unread_mids_[$uid]和read_mids_[$uid],value为mid的集合。每次消息发送给指定的用户时,只需要将消息放到对应的集合里即可

    这样就能表示出消息系统对应的E-R模型了

    总结

    redis数据库如何使用,关键自于你如何设计和理解你要做系统的E-R模型,搞清楚实体之间的关系,在redis里设计相应的key-value键值对即可。至于那几种数据结构,对你设计redis数据库来说作用不大,只是起到更方便的效果,用memcache一样可以做到这些。

    2019-07-17 18:55:54
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
ApsaraDB for Redis——与创客同行 立即下载
微博的Redis定制之路 立即下载
云数据库Redis版的开源之路 立即下载