1. 程式人生 > >五十二、Redis 資料庫 2:set型別、zset型別、hash型別

五十二、Redis 資料庫 2:set型別、zset型別、hash型別

一、set集合型別(無序集合型別)

redis裡面的set集合型別是string型別的無序集合,被稱為無序集合型別

set元素最大可以包含(2的32次方-1)個元素。

1、集合滿足三個特點:

無序性:集合裡面的資料是沒有順序之分。

唯一性:集合裡面的資料彼此是不能重複。

確定性:集合裡面的資料的個數是確定的。

2、該型別應用場合:qq好友推薦

3、sadd向集合裡面新增元素: sadd 集合名 數值

4、smembers獲取集合裡面的元素

5、srem移除集合裡面指定的某個元素,成功返回1

6、spop隨機的彈出集合裡面的某個元素

7、sismember 集合名 元素

: 判斷 元素 是否在集合中

8、scard 集合名:返回set的元素個數

9、smove p1 p2 元素:從p1對應集合中移除給定元素,並將指定的元素新增到p2中,成功返回1

二、集合的一個實際使用場景

1、一般redis裡面的集合被用在社交型別的網站裡面做好友關係展示。例如:實現好友的推薦,共同好友......

2、設定4個使用者(一個集合)

3、設計好友的集合(另寫一個集合

① 使用者id為3的使用者好友集合裡面有1和2:代表的含義是3號使用者有兩個好友。

王五的好友是:張三和李四。

Set是個集合名,格式可自己一級一級寫(起名有意義,可自己定義鍵值名)

② 使用者id為45的使用者好友集合裡面的資料是2:代表的含義是45號使用者有一個好友。

趙六的好友是:李四。

4、求交集、並集、差集

① 獲取3號和45號的共同好友(求交集)  sinter

② 獲取3號和45號的全部好友(求並集)sunion

③ 讓3號使用者給45號使用者推薦好友(求差集) sdiff(以前一個為準,求前面的差集,如果前:1,2,後2,後-前 差集為空)

三、Redis 資料庫 --zset型別

(1)zset(sorted set)型別(有序集合

和set一樣sorted set也是string型別元素的集合,不同的是每個元素都會關聯一個權。

通過權值可以有序的獲取集合中的元素。

redis裡面的zset型別被稱為有序集合,意味著有序集合裡面的元素是排好序的,也滿足唯一性和確定性。

1、有序集合概圖:

2、zadd新增元素到集合,元素在集合中存在則更新,不存在新增

zadd  key 權重 元素

下面的1 / 5 / 15 / 45就是權重:

如果元素本已存在,新增不同權重的重複元素不會生成新元素,會更新值:

3、zrange key start end:返回指定區間的元素,返回的是按權重升序

4、zrange key start end withscores 獲取集合內容的時候,顯示權重資訊

(2)案例:利用sort set實現獲取最熱門的前5貼子資訊。

1、新增元素:

按照帖子回覆量排序:102是權重,11是元素

2、zrevrange key start end:返回指定區間的元素,返回的是按權重(也就是貼子的回覆量)降序

3、zremrangebyrank key min max:刪除集合中排名在給定區間的元素(權值從小到大排序)索引從0開始

4、增加一個新元素,就刪除一箇舊元素(回覆量最低的)

zremrangebyrank  key 0 0 (權值從小到大排序,索引從0開始)

5、zrank key 元素:返回指定元素在集合中的排名(下標),集合中元素是按升序

6、zrevrank key 元素:返回指定元素在集合中的排名(下標),集合中元素是按降序

7、zcard key:返回集合中元素個數

8、zscore key 元素:返回給定元素對應的權重

9、zincrby key 增長的值 指定元素:使指定元素的權重增加對應的值,並返回增加後的值

10、zrem key  指定元素:刪除指定元素,1表示成功,元素不存在返回0

四、Redis 資料庫 --hash型別

1、hset設定單個值:(重複設定相同的則更新)

2、hget獲取值:

3、hmset設定多個值:

4、hgetall獲取hash全部的值:

5、hset:設定雜湊值(帶:號形式的)

6、hget:獲取雜湊值

7、hmget:獲取多對雜湊值

8、hmset:設定多對雜湊值

9、hkeys:返回所有keys

10、hvals:返回所有Values

11、hlen:返回雜湊包含域(field)的數量

12、hdel:刪除雜湊指定的域(field)(刪除值

13、hexists:判斷是否存在,返回1存在,返回0不存在

14、hincrby:將指定的hash filed加上給定值

相關推薦

Redis 資料庫 2set型別zset型別hash型別

一、set集合型別(無序集合型別) redis裡面的set集合型別是string型別的無序集合,被稱為無序集合型別。 set元素最大可以包含(2的32次方-1)個元素。 1、集合滿足三個特點:

MongoDB資料庫2Python操作MongoDB資料庫

一、安裝pymongo庫 pymongo是操作MongoDB的python模組 Python2的安裝方法:python2 -m pip install pymongo Python3的安裝方法:p

mysql資料庫7Mysql與python的互動引數化(重點python與mysql互動傳參)

一、使用python命令連線資料庫流程 二、python3 安裝pymysql包 建立py檔案,進行插入資料:通過python檔案來連線資料庫實現互動(前提需要安裝pymysql包) 1、Li

java操作redis資料庫set集合

package com.redis; import java.util.Set; import redis.clients.jedis.Jedis; public class set_redis {Jedis jedis;set_redis(){jedis=new Demo

設置更改root密碼連接MySQLMYSQL常用命令

設置更改root密碼 連接MySQL MySQL常用命令 五十二、設置更改root密碼、連接MySQL、MYSQL常用命令一、設置更改root密碼 root用戶是MySQL的超級管理員用戶,這個root和系統的root並不是一個用戶,需要區分開,也可以創建普通用戶來連接MySQL。

前端()—— JavaScript基礎操作if語句for循環while循環for...infor...of異常處理函數事件JS選擇器JS操作頁面樣式

結束 建議 prop map、set -c 表單元素 tle form collect JavaScript基礎操作 一、分支結構 1、if語句 if 基礎語法 if (條件表達式) { 代碼塊; } // 當條件表達式結果為true,會執行代碼塊;反之不執行

opencv學習筆記基於Haar或LBP級聯分類器的實時人臉人眼檢測

#include<opencv2\opencv.hpp> using namespace cv; using namespace std; int main(int arc, char** argv) { namedWindow("output",

“全棧2019”Java第繼承與初始化詳解

難度 初級 學習時間 10分鐘 適合人群 零基礎 開發語言 Java 開發環境 JDK v11 IntelliJ IDEA v2018.3 文章原文連結 “全棧2019”Java第五十二章:繼承與初始化詳解 下一章 “全棧2019”Java第五十三章:向上轉型和向下轉型

Redis叢集JedisCluster資料庫詳解

(1)redis在單機模式下redis.conf配置檔案中預設的資料庫數量是16個, # Set the number of databases. The default database is

FastDFS分散式檔案系統

資料下載 大綱     FastDFS架構包括Tracker server 和 Storage server 。客戶端請求Tracker server 進行檔案上傳、下載,通過Ttacker server 排程,最總

孤荷凌寒自學python第天初次嘗試使用python讀取Firebase資料庫中記錄

孤荷凌寒自學python第五十二天初次嘗試使用python讀取Firebase資料庫中記錄   (完整學習過程螢幕記錄視訊地址在文末)   今天繼續研究Firebase資料庫,利用google免費提供的這個資料庫服務,今天主要嘗試使用firebase_admin模組來連線fireb

hihor 學習日記hiho一下 第週 (割邊與割點)

http://hihocoder.com/contest/hiho52/problem/1 題意: 這道題就是求割邊與割點, 割邊與割點 思路: 大致就是用DFS樹來得到low,與dfn比較來判斷當前點的子樹上的點是否與當前點的父點相連,如果不聯,那麼去掉當前點

SpringBoot配置Filter以及註解配置CAS客戶端過濾器

spring boot 配置Filter過濾器 參考: CAS單點登入詳解  CAS單點登入疑問解答  Filter過濾器,Interceptor攔截器,ControllerAdvice,Aspect切片 1、通過 @WebFilter 註解來配置

問題怎麼用C++實現矩陣運算

C++程式碼如下: bool matrix_4_4_multiply_4_4(const float matrix1[4][4], const float matrix2[4][4], float (&result)[4][4]) { //求兩個4*4矩陣的乘積 for (int

linux 編程——網絡介紹

占用 src 網絡會議 地址解析 進行 ip 地址 簡單 操作 transfer 52.1 網絡介紹 使用遠程資源 共享信息、程序和數據 分布處理 52.1.1 協議的概念 計算機網絡中實現通信必須有一些約定,如對速率、傳輸代碼、代碼結構、傳輸控制步驟和出錯控制等約定

MongoDB資料庫1MongoDB的增

一、連線資料庫 如果只在windows下使用:進入資料庫命令:mongo 如果windows要連線虛擬機器(伺服器),命令:mongo  伺服器IP地址:27017 Mongodb ‘無狀態模式’

多線程學習-基礎()生產者消費者模型wait(),sleep(),notify()實現

都是 exce 生產 runnable 下午 util 庫存 jason 最大 一、多線程模型一:生產者消費者模型 (1)模型圖:(從網上找的圖,清晰明了) (2)生產者消費者模型原理說明:   這個模型核心是圍繞著一個“倉庫”的概念,生產者消費者都是圍繞著:“倉庫”

學習

linux學習14.4 exportfs命令14.5 NFS客戶端問題15.1 FTP介紹15.2/15.3 使用vsftpd搭建ftp exportfs命令 常用選項-a 全部掛載或者全部卸載-r 重新掛載-u 卸載某一個目錄-v 顯示共享目錄以下操作在服務端上vim /etc/exports //增加/t

Linux學習總結()keepalived 配置高可用

keepalived 高可用 nginx 一 集群介紹 根據功能劃分為兩大類:高可用和負載均衡 高可用集群通常為兩臺服務器,一臺工作,另外一臺作為冗余,當提供服務的機器宕機,冗余將接替 繼續提供服務 實現高可用的開源軟件有:heartbeat、keepalived 負載均衡集群,需要有一臺服

C 語言異常處理(

異常處理 C 中的異常處理 if...else... setjmp() longjmp() 我們今天來看下異常處理,在看 C++ 的異常處理之前,先來看看 C 語言中的異常處理。那麽什麽是異常呢?在程序運行過程中可能會產生異常,異常(Exception)與 Bug 的區別是