redis入门基础教程,redis简单入门和实例

首页 > 经验 > 作者:YD1662022-10-31 23:03:36

3-17{534}

{-:-}图3-17 在百度中设置个人爱好

之所以特意提到这个在实践中的差别是想说明对于Redis存储方式的选择并没有绝对的规则,比如3.4节介绍过使用列表类型存储访客评论,但是在一些特定的场合下散列类型甚至字符串类型可能更适合。

2.通过标签搜索文章

有时我们还需要列出某个标签下的所有文章,甚至需要获得同时属于某几个标签的文章列表,这种需求在传统关系数据库中实现起来比较复杂,下面举一个例子。

现有3张表,即posts、tags和posts_tags,分别存储文章数据、标签、文章与标签的对应关系。结构分别如表3-5、表3-6、表3-7所示。

表3-5 posts表结构

字 段 名说  明
post_id文章ID
post_title文章标题

表3-6 tags表结构

字 段 名说  明
tag_id标签ID
tag_name标签名称

表3-7 posts_tags表结构

字 段 名说  明
post_id对应的文章ID
tag_id对应的标签ID

为了找到同时属于“Java”、“MySQL”和“Redis”这3个标签的文章,需要使用如下的SQL语句:

SELECT p.post_title FROM posts_tags pt,    posts p,    tags t WHERE pt.tag_id = t.tag_id  AND (t.tag_name IN ('Java', 'MySQL', 'Redis'))  AND p.post_id = pt.post_id GROUP BY p.post_id HAVING COUNT(p.post_id)=3;

可以很明显看到这样的 SQL 语句不仅效率相对较低,而且不易阅读和维护。而使用Redis可以很简单直接地实现这一需求。

具体做法是为每个标签使用一个名为tag:标签名称:posts的集合类型键存储标有该标签的文章ID列表。假设现在有3篇文章,ID分别为1、2、3,其中ID为1的文章标签是“Java”,ID为2的文章标签是“Java”、“MySQL”,ID为3的文章标签是“Java”、 “MySQL”和“Redis”,则有关标签部分的存储结构如图3-18所示{![集合类型键中元素是无序的,图3-18中为了便于读者阅读将元素按照大小顺序进行了排列。]}。

redis入门基础教程,redis简单入门和实例(17)

..\0318.tif{442}

图3-18 和标签有关部分的存储结构

最简单的,当需要获取标记“MySQL”标签的文章时只需要使用命令 SMEMBERS tag:MySQL:posts即可。如果要实现找到同时属于Java、MySQL和Redis 3个标签的文章,只需要将tag:Java:posts、tag:MySQL:posts和tag:Redis:posts这3个键取交集,借助SINTER命令即可轻松完成。

本文摘自《Redis入门指南》(第2版)

redis入门基础教程,redis简单入门和实例(18)

《Redis入门指南》(第2版)

本书是一本Redis的入门指导书籍,以通俗易懂的方式介绍了Redis基础与实践方面的知识,包括历史与特性、在开发和生产环境中部署运行Redis、数据类型与命令、使用Redis实现队列、事务、复制、管道、持久化、优化Redis存储空间等内容,并采用任务驱动的方式介绍了PHP、Ruby、Python和Node.js这4种语言的Redis客户端库的使用方法。

本书的目标读者不仅包括Redis的新手,还包括那些已经掌握Redis使用方法的人。对于新手而言,本书的内容由浅入深且紧贴实践,旨在让读者真正能够即学即用;对于已经了解Redis的读者,通过本书的大量实例以及细节介绍,也能发现很多新的技巧。

,
上一页12345末页

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.