REDIS与MYSQL实现标签的对比_MySQL
这里来演示下REDIS和MYSQL之间的数据转换问题,REDIS 是典型的KEY -VALUE型NOSQL数据库,并且提供了额外丰富的数据类型。这里简单列举了标签类型的应用问题。
比如在MySQL里面,对内容的标签有以下简单的几张表,我这里只列出来拆分过后的表结构
第一,MySQL部分,内容表: CREATE TABLE `content` ( `id` int(10) unsigned NOT NULL, -- 内容ID,唯一。 `name` varchar(60) DEFAULT NULL, -- 内容的名字 `created_timestamp` timestamp NULL DEFAULT NULL, -- 内容的加入时间 PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 标签表: CREATE TABLE `tag` ( `tag_name` varchar(60) NOT NULL, -- 标签名字,唯一 `visit_count` int(10) unsigned NOT NULL DEFAULT '0', -- 标签的访问次数 PRIMARY KEY (`tag_name`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 内容与标签的关系,多对多。 CREATE TABLE `content_tag_relation` ( `content_id` int(10) unsigned NOT NULL, -- 内容ID `tag_name` varchar(60) NOT NULL -- 标签名字 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
假设我们有以下的需求:
1. 得到标签对应的文章名字,
SELECT a.name FROM content AS a,content_tag_relation AS b WHERE a.id = b.content_id AND b.tag_name = 'mysql'
2. 按照访问量显示前三的标签,
SELECT tag_name FROM tag WHERE 1 ORDER BY visit_count DESC LIMIT 3;
下来我们在REDIS里面存储这部分数据。
第二,redis部分,
1. a,内容,我们用STRING类型来做,值用JSON来存储,
t_girl:6379> set string:content_id:4 '{"name":"test48601","created_timestamp":"2012-01-01 05:41:01"}' OK t_girl:6379> get string:content_id:4 "{\"name\":\"test48601\",\"created_timestamp\":\"2012-01-01 05:41:01\"}"
但是如果想得到内容对应的名字和创建时间,REDIS方面获取困难,就得交给程序来做了。
b,或者也可以用HASH类型来存储,
t_girl:6379> hset 'hset:content_id:4' name 'test48601' (integer) 1 t_girl:6379> hset 'hset:content_id:4' created_timestamp '2012-01-01 05:41:01' (integer) 1
那这时想获取对应的名字以及时间非常容易
t_girl:6379> hget hset:content_id:4 name "test48601" t_girl:6379> hget hset:content_id:4 created_timestamp "2012-01-01 05:41:01" t_girl:6379>
2. 标签,我们用有序集合来做,这么做的好处是可以用REDIS对应的有序来做访问量的排序。
t_girl:6379> zadd zset:tag 680 database 469 db2 (integer) 2
比如我们想要得到访问前三的标签名字?
t_girl:6379> zrevrangebyscore zset:tag +inf 0 limit 0 3 1) "mongodb" 2) "sql" 3) "postgresql"
3. 标签与内容的关系,我们用集合来做,
t_girl:6379> sadd set:content_id:4 role mongodb role database (integer) 3
那么也很容易得到指定内容对应的标签
t_girl:6379> smembers set:content_id:4 1) "database" 2) "role" 3) "mongodb"
4. a, 如果用上面的设计我们实现稍微复杂些的需求:比如得到标签对应的文章名字。这样的需求貌似没有可以直接拿来用的方法,比如下面我写的一段PYTHON代码来获取:
import redis content_id_keys = r.keys('set*') content_id_keys_len = len(content_id_keys) i = 0 j = 0 content_name_list = [] while i < content_id_keys_len: if r.sismember(content_id_keys[i],'mysql') == 1: content_name_list.append(eval(r.get(content_id_keys[i].replace('set','string')))['name']) print('Content name is :' + content_name_list[j]) j += 1 i += 1
b.那其实我们可以在REDIS里面做一份冗余的集合来存储,这样就可以直接把信息拿出来。
t_girl:6379> sadd tag:mysql test123 test133 test144 test155 (integer) 4 t_girl:6379> smembers tag:mysql 1) "test133" 2) "test155" 3) "test123" 4) "test144"

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

本教學向您展示如何在Windows的Chrome或Edge中找到所有開啟的標籤頁上的特定文字或短語。有沒有辦法在Chrome中所有開啟的標籤頁上進行文字搜尋?是的,您可以使用Chrome中的免費外部Web擴充功能在所有開啟的標籤上執行文字搜索,而無需手動切換標籤。一些擴充功能如TabSearch和Ctrl-FPlus可以幫助您輕鬆實現這項功能。如何在GoogleChrome的所有選項卡中搜尋文字? Ctrl-FPlus是一個免費的擴展,它方便用戶在瀏覽器視窗的所有標籤中搜尋特定的單字、短語或文字。這個擴

在瀏覽抖音作品時,我們常常可以看到標籤後面有時鐘圖示。那麼,這個時鐘到底是什麼呢?本文將圍繞著「抖音標籤後面的時鐘是什麼」展開討論,希望為您的抖音使用提供一些有益的參考。一、抖音標籤後面的時鐘是什麼?抖音會推出一些熱門話題挑戰,用戶參與時會在標籤後看到一個時鐘圖標,這代表作品正在參與話題挑戰,並顯示挑戰的剩餘時間。對於一些具有時效性的內容,如假日、特殊活動等,抖音會在標籤後面附上時鐘圖標,提醒使用者該內容的有效期限。 3.熱門標籤:當某個標籤變得熱門時,抖音會在標籤後面加上時鐘圖標,表示這個標籤正

抖音作為一款備受歡迎的短影片社群平台,擁有龐大的使用者群體。對於抖音創作者來說,標籤引流是一種有效提升內容曝光度和吸引關注的方法。那麼,抖音怎麼帶標籤引流呢?本文將為您詳細解答這個問題,並介紹相關技巧。一、抖音怎麼帶標籤引流?發布影片時,請確保選擇與內容相關的標籤。這些標籤應涵蓋影片的主題和關鍵字,以便讓用戶透過標籤更容易找到您的影片。利用流行標籤是增加影片曝光的有效方法。研究當前熱門標籤和趨勢,將其巧妙地融入影片描述和標籤中。這些熱門標籤通常具有更高的曝光度,能夠吸引更多觀眾的注意。 3.標籤

HTML中video影片標籤詳解HTML5中的video標籤是一種用於在網頁上播放影片的標籤。它可以使用不同的格式來呈現視頻,例如MP4、WebM、Ogg等等。在本篇文章中,我們將詳細介紹video標籤的使用方法,並提供具體的程式碼範例。基本結構下面是video標籤的基本結構:

區別:1、head標籤用於定義文檔頭部,它是所有頭部元素的容器,而header標籤用於定義文檔的頁眉(介紹資訊);2、瀏覽器都支援head標籤,而舊版本瀏覽器皆不支援header標籤,需要IE9+以上瀏覽器才能支援header標籤。

釘釘app外部聯絡人標籤怎麼刪除?釘釘中是可以刪除外部聯絡人標籤的功能,但是多數小夥伴不知道釘釘外部聯絡人標籤如何的刪除,接下來就是小編為用戶帶來的釘釘app外部聯絡人標籤刪除方法圖文教學,有興趣的用戶快來一起看看吧!釘釘app外部聯絡人標籤怎麼刪除1、先開啟釘釘APP,主頁中點選如下圖所示的【管理】功能;2、然後進入到企業管理的介面,找到其中的【外部聯絡人】; 3.接著在外部聯絡人設定功能頁,選擇【標籤管理】服務;4、之後在聯絡人標籤主頁,選擇你需要刪除的標籤組類型;5、最後點選標籤組紅色

如何使用HTML和CSS實現一個具有固定導航選單的佈局在現代網頁設計中,固定導航選單是常見的佈局之一。它可以使導航選單始終保持在頁面頂部或側邊,使用戶可以輕鬆瀏覽網頁內容。本文將介紹如何使用HTML和CSS實作一個具有固定導航選單的佈局,並提供具體的程式碼範例。首先,需要建立一個HTML結構來呈現網頁的內容和導覽選單。以下是一個簡單的範例

隨著Web應用的發展,標籤的輸入框越來越受歡迎。這種輸入框可以讓使用者更方便輸入數據,同時也方便使用者對已輸入的數據進行管理和搜尋。 Vue是一款非常強大的JavaScript框架,它可以幫助我們快速實現帶有標籤的輸入框。本文將介紹如何使用Vue實作標籤的輸入框。第一步:建立Vue實例首先,我們需要在頁面上建立Vue實例,程式碼如下:&l
