国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Redis系列學(xué)習(xí)文章分享---第一篇(Redis快速入門之初始Redis--NoSql+安裝redis+客戶端+常用命令)

這篇具有很好參考價值的文章主要介紹了Redis系列學(xué)習(xí)文章分享---第一篇(Redis快速入門之初始Redis--NoSql+安裝redis+客戶端+常用命令)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

今天開始進(jìn)入Redis系列學(xué)習(xí)分享

歡迎小伙伴交流學(xué)習(xí),這是第一篇(Redis快速入門之初始Redis–NoSql+安裝redis+客戶端+常用命令),后續(xù)持續(xù)更新

1.初識Redis

Redis是一種鍵值型的NoSql數(shù)據(jù)庫,這里有兩個關(guān)鍵字:

  • 鍵值型

  • NoSql

其中鍵值型,是指Redis中存儲的數(shù)據(jù)都是以key、value對的形式存儲,而value的形式多種多樣,可以是字符串、數(shù)值、甚至json:

Redis系列學(xué)習(xí)文章分享---第一篇(Redis快速入門之初始Redis--NoSql+安裝redis+客戶端+常用命令),Redis系列,redis,nosql,數(shù)據(jù)庫

而NoSql則是相對于傳統(tǒng)關(guān)系型數(shù)據(jù)庫而言,有很大差異的一種數(shù)據(jù)庫。

1.1.認(rèn)識NoSQL

NoSql可以翻譯做Not Only Sql(不僅僅是SQL),或者是No Sql(非Sql的)數(shù)據(jù)庫。是相對于傳統(tǒng)關(guān)系型數(shù)據(jù)庫而言,有很大差異的一種特殊的數(shù)據(jù)庫,因此也稱之為非關(guān)系型數(shù)據(jù)庫。

1.1.1.結(jié)構(gòu)化與非結(jié)構(gòu)化

傳統(tǒng)關(guān)系型數(shù)據(jù)庫是結(jié)構(gòu)化數(shù)據(jù),每一張表都有嚴(yán)格的約束信息:字段名、字段數(shù)據(jù)類型、字段約束等等信息,插入的數(shù)據(jù)必須遵守這些約束:
Redis系列學(xué)習(xí)文章分享---第一篇(Redis快速入門之初始Redis--NoSql+安裝redis+客戶端+常用命令),Redis系列,redis,nosql,數(shù)據(jù)庫

而NoSql則對數(shù)據(jù)庫格式?jīng)]有嚴(yán)格約束,往往形式松散,自由。

可以是鍵值型:
Redis系列學(xué)習(xí)文章分享---第一篇(Redis快速入門之初始Redis--NoSql+安裝redis+客戶端+常用命令),Redis系列,redis,nosql,數(shù)據(jù)庫

也可以是文檔型:
Redis系列學(xué)習(xí)文章分享---第一篇(Redis快速入門之初始Redis--NoSql+安裝redis+客戶端+常用命令),Redis系列,redis,nosql,數(shù)據(jù)庫

甚至可以是圖格式:
Redis系列學(xué)習(xí)文章分享---第一篇(Redis快速入門之初始Redis--NoSql+安裝redis+客戶端+常用命令),Redis系列,redis,nosql,數(shù)據(jù)庫

1.1.2.關(guān)聯(lián)和非關(guān)聯(lián)

傳統(tǒng)數(shù)據(jù)庫的表與表之間往往存在關(guān)聯(lián),例如外鍵:
Redis系列學(xué)習(xí)文章分享---第一篇(Redis快速入門之初始Redis--NoSql+安裝redis+客戶端+常用命令),Redis系列,redis,nosql,數(shù)據(jù)庫

而非關(guān)系型數(shù)據(jù)庫不存在關(guān)聯(lián)關(guān)系,要維護(hù)關(guān)系要么靠代碼中的業(yè)務(wù)邏輯,要么靠數(shù)據(jù)之間的耦合:

{
  id: 1,
  name: "張三",
  orders: [
    {
       id: 1,
       item: {
	 id: 10, title: "榮耀6", price: 4999
       }
    },
    {
       id: 2,
       item: {
	 id: 20, title: "小米11", price: 3999
       }
    }
  ]
}

此處要維護(hù)“張三”的訂單與商品“榮耀”和“小米11”的關(guān)系,不得不冗余的將這兩個商品保存在張三的訂單文檔中,不夠優(yōu)雅。還是建議用業(yè)務(wù)來維護(hù)關(guān)聯(lián)關(guān)系。

1.1.3.查詢方式

傳統(tǒng)關(guān)系型數(shù)據(jù)庫會基于Sql語句做查詢,語法有統(tǒng)一標(biāo)準(zhǔn);

而不同的非關(guān)系數(shù)據(jù)庫查詢語法差異極大,五花八門各種各樣。

Redis系列學(xué)習(xí)文章分享---第一篇(Redis快速入門之初始Redis--NoSql+安裝redis+客戶端+常用命令),Redis系列,redis,nosql,數(shù)據(jù)庫

1.1.4.事務(wù)

傳統(tǒng)關(guān)系型數(shù)據(jù)庫能滿足事務(wù)ACID的原則。

Redis系列學(xué)習(xí)文章分享---第一篇(Redis快速入門之初始Redis--NoSql+安裝redis+客戶端+常用命令),Redis系列,redis,nosql,數(shù)據(jù)庫

而非關(guān)系型數(shù)據(jù)庫往往不支持事務(wù),或者不能嚴(yán)格保證ACID的特性,只能實現(xiàn)基本的一致性。

1.1.5.總結(jié)

除了上述四點以外,在存儲方式、擴(kuò)展性、查詢性能上關(guān)系型與非關(guān)系型也都有著顯著差異,總結(jié)如下:
Redis系列學(xué)習(xí)文章分享---第一篇(Redis快速入門之初始Redis--NoSql+安裝redis+客戶端+常用命令),Redis系列,redis,nosql,數(shù)據(jù)庫

  • 存儲方式
    • 關(guān)系型數(shù)據(jù)庫基于磁盤進(jìn)行存儲,會有大量的磁盤IO,對性能有一定影響
    • 非關(guān)系型數(shù)據(jù)庫,他們的操作更多的是依賴于內(nèi)存來操作,內(nèi)存的讀寫速度會非???,性能自然會好一些
  • 擴(kuò)展性
    • 關(guān)系型數(shù)據(jù)庫集群模式一般是主從,主從數(shù)據(jù)一致,起到數(shù)據(jù)備份的作用,稱為垂直擴(kuò)展。
    • 非關(guān)系型數(shù)據(jù)庫可以將數(shù)據(jù)拆分,存儲在不同機(jī)器上,可以保存海量數(shù)據(jù),解決內(nèi)存大小有限的問題。稱為水平擴(kuò)展。
    • 關(guān)系型數(shù)據(jù)庫因為表之間存在關(guān)聯(lián)關(guān)系,如果做水平擴(kuò)展會給數(shù)據(jù)查詢帶來很多麻煩

1.2.認(rèn)識Redis

Redis誕生于2009年全稱是Remote Dictionary Server 遠(yuǎn)程詞典服務(wù)器,是一個基于內(nèi)存的鍵值型NoSQL數(shù)據(jù)庫。

特征:

  • 鍵值(key-value)型,value支持多種不同數(shù)據(jù)結(jié)構(gòu),功能豐富
  • 單線程,每個命令具備原子性
  • 低延遲,速度快(基于內(nèi)存、IO多路復(fù)用、良好的編碼)。
  • 支持?jǐn)?shù)據(jù)持久化
  • 支持主從集群、分片集群
  • 支持多語言客戶端
    Redis的官方網(wǎng)站地址:https://redis.io/

1.3.安裝Redis

大多數(shù)企業(yè)都是基于Linux服務(wù)器來部署項目,而且Redis官方也沒有提供Windows版本的安裝包。因此我基于Linux系統(tǒng)來安裝Redis.
此處選擇的Linux版本為CentOS 7.

1.3.1.依賴庫

Redis是基于C語言編寫的,因此首先需要安裝Redis所需要的gcc依賴:

yum install -y gcc tcl

1.3.2.上傳安裝包并解壓

然后將Redis安裝包上傳到虛擬機(jī)的任意目錄:

例如,我放到了/usr/local/src 目錄:
解壓縮:

tar -xzf redis-6.2.6.tar.gz

解壓后:

進(jìn)入redis目錄:

cd redis-6.2.6

運行編譯命令:

make && make install

Redis系列學(xué)習(xí)文章分享---第一篇(Redis快速入門之初始Redis--NoSql+安裝redis+客戶端+常用命令),Redis系列,redis,nosql,數(shù)據(jù)庫

如果沒有出錯,應(yīng)該就安裝成功了。

默認(rèn)的安裝路徑是在 /usr/local/bin目錄下:

Redis系列學(xué)習(xí)文章分享---第一篇(Redis快速入門之初始Redis--NoSql+安裝redis+客戶端+常用命令),Redis系列,redis,nosql,數(shù)據(jù)庫
該目錄已經(jīng)默認(rèn)配置到環(huán)境變量,因此可以在任意目錄下運行這些命令。其中:

  • redis-cli:是redis提供的命令行客戶端
  • redis-server:是redis的服務(wù)端啟動腳本
  • redis-sentinel:是redis的哨兵啟動腳本

1.3.3.啟動

redis的啟動方式有很多種,例如:

  • 默認(rèn)啟動
  • 指定配置啟動
  • 開機(jī)自啟

1.3.4.默認(rèn)啟動

安裝完成后,在任意目錄輸入redis-server命令即可啟動Redis:

redis-server

如圖:
Redis系列學(xué)習(xí)文章分享---第一篇(Redis快速入門之初始Redis--NoSql+安裝redis+客戶端+常用命令),Redis系列,redis,nosql,數(shù)據(jù)庫

這種啟動屬于前臺啟動,會阻塞整個會話窗口,窗口關(guān)閉或者按下CTRL + C則Redis停止。不推薦使用。

1.3.5.指定配置啟動

如果要讓Redis以后臺方式啟動,則必須修改Redis配置文件,就在我們之前解壓的redis安裝包下(/usr/local/src/redis-6.2.6),名字叫redis.conf:
Redis系列學(xué)習(xí)文章分享---第一篇(Redis快速入門之初始Redis--NoSql+安裝redis+客戶端+常用命令),Redis系列,redis,nosql,數(shù)據(jù)庫
我們先將這個配置文件備份一份:

cp redis.conf redis.conf.bck

然后修改redis.conf文件中的一些配置:

# 允許訪問的地址,默認(rèn)是127.0.0.1,會導(dǎo)致只能在本地訪問。修改為0.0.0.0則可以在任意IP訪問,生產(chǎn)環(huán)境不要設(shè)置為0.0.0.0
bind 0.0.0.0
# 守護(hù)進(jìn)程,修改為yes后即可后臺運行
daemonize yes 
# 密碼,設(shè)置后訪問Redis必須輸入密碼
requirepass 123321

Redis的其它常見配置:

# 監(jiān)聽的端口
port 6379
# 工作目錄,默認(rèn)是當(dāng)前目錄,也就是運行redis-server時的命令,日志、持久化等文件會保存在這個目錄
dir .
# 數(shù)據(jù)庫數(shù)量,設(shè)置為1,代表只使用1個庫,默認(rèn)有16個庫,編號0~15
databases 1
# 設(shè)置redis能夠使用的最大內(nèi)存
maxmemory 512mb
# 日志文件,默認(rèn)為空,不記錄日志,可以指定日志文件名
logfile "redis.log"

啟動Redis:

# 進(jìn)入redis安裝目錄 
cd /usr/local/src/redis-6.2.6
# 啟動
redis-server redis.conf

停止服務(wù):

# 利用redis-cli來執(zhí)行 shutdown 命令,即可停止 Redis 服務(wù),
# 因為之前配置了密碼,因此需要通過 -u 來指定密碼
redis-cli -u 123321 shutdown

1.3.6.開機(jī)自啟

我們也可以通過配置來實現(xiàn)開機(jī)自啟。

首先,新建一個系統(tǒng)服務(wù)文件:

vi /etc/systemd/system/redis.service

內(nèi)容如下:

[Unit]
Description=redis-server
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/bin/redis-server /usr/local/src/redis-6.2.6/redis.conf
PrivateTmp=true

[Install]
WantedBy=multi-user.target

然后重載系統(tǒng)服務(wù):

systemctl daemon-reload

現(xiàn)在,我們可以用下面這組命令來操作redis了:

# 啟動
systemctl start redis
# 停止
systemctl stop redis
# 重啟
systemctl restart redis
# 查看狀態(tài)
systemctl status redis

執(zhí)行下面的命令,可以讓redis開機(jī)自啟:

systemctl enable redis

1.4.Redis桌面客戶端

安裝完成Redis,我們就可以操作Redis,實現(xiàn)數(shù)據(jù)的CRUD了。這需要用到Redis客戶端,包括:

  • 命令行客戶端
  • 圖形化桌面客戶端
  • 編程客戶端

1.4.1.Redis命令行客戶端

Redis安裝完成后就自帶了命令行客戶端:redis-cli,使用方式如下:

redis-cli [options] [commonds]

其中常見的options有:

  • -h 127.0.0.1:指定要連接的redis節(jié)點的IP地址,默認(rèn)是127.0.0.1
  • -p 6379:指定要連接的redis節(jié)點的端口,默認(rèn)是6379
  • -a 123321:指定redis的訪問密碼

其中的commonds就是Redis的操作命令,例如:

  • ping:與redis服務(wù)端做心跳測試,服務(wù)端正常會返回pong

不指定commond時,會進(jìn)入redis-cli的交互控制臺:
Redis系列學(xué)習(xí)文章分享---第一篇(Redis快速入門之初始Redis--NoSql+安裝redis+客戶端+常用命令),Redis系列,redis,nosql,數(shù)據(jù)庫

1.4.2.圖形化桌面客戶端

GitHub上的大神編寫了Redis的圖形化桌面客戶端,地址:https://github.com/uglide/RedisDesktopManager

不過該倉庫提供的是RedisDesktopManager的源碼,并未提供windows安裝包。

在下面這個倉庫可以找到安裝包:https://github.com/lework/RedisDesktopManager-Windows/releases

1.4.3.安裝

找到Redis的圖形化桌面客戶端(沒有的伙伴可以私聊我):
解壓縮后,運行安裝程序即可安裝:

安裝完成后,在安裝目錄下找到rdm.exe文件:

雙擊即可運行:

1.4.4.建立連接

點擊左上角的連接到Redis服務(wù)器按鈕:
Redis系列學(xué)習(xí)文章分享---第一篇(Redis快速入門之初始Redis--NoSql+安裝redis+客戶端+常用命令),Redis系列,redis,nosql,數(shù)據(jù)庫

在彈出的窗口中填寫Redis服務(wù)信息:
Redis系列學(xué)習(xí)文章分享---第一篇(Redis快速入門之初始Redis--NoSql+安裝redis+客戶端+常用命令),Redis系列,redis,nosql,數(shù)據(jù)庫

點擊確定后,在左側(cè)菜單會出現(xiàn)這個鏈接:
Redis系列學(xué)習(xí)文章分享---第一篇(Redis快速入門之初始Redis--NoSql+安裝redis+客戶端+常用命令),Redis系列,redis,nosql,數(shù)據(jù)庫

點擊即可建立連接了。
Redis系列學(xué)習(xí)文章分享---第一篇(Redis快速入門之初始Redis--NoSql+安裝redis+客戶端+常用命令),Redis系列,redis,nosql,數(shù)據(jù)庫

Redis默認(rèn)有16個倉庫,編號從0至15. 通過配置文件可以設(shè)置倉庫數(shù)量,但是不超過16,并且不能自定義倉庫名稱。

如果是基于redis-cli連接Redis服務(wù),可以通過select命令來選擇數(shù)據(jù)庫:

# 選擇 0號庫
select 0

2.Redis常見命令

Redis是典型的key-value數(shù)據(jù)庫,key一般是字符串,而value包含很多不同的數(shù)據(jù)類型:
Redis系列學(xué)習(xí)文章分享---第一篇(Redis快速入門之初始Redis--NoSql+安裝redis+客戶端+常用命令),Redis系列,redis,nosql,數(shù)據(jù)庫

Redis為了方便我們學(xué)習(xí),將操作不同數(shù)據(jù)類型的命令也做了分組,在官網(wǎng)( https://redis.io/commands )可以查看到不同的命令:
Redis系列學(xué)習(xí)文章分享---第一篇(Redis快速入門之初始Redis--NoSql+安裝redis+客戶端+常用命令),Redis系列,redis,nosql,數(shù)據(jù)庫

不同類型的命令稱為一個group,我們也可以通過help命令來查看各種不同group的命令:
Redis系列學(xué)習(xí)文章分享---第一篇(Redis快速入門之初始Redis--NoSql+安裝redis+客戶端+常用命令),Redis系列,redis,nosql,數(shù)據(jù)庫

接下來,我們就學(xué)習(xí)常見的五種基本數(shù)據(jù)類型的相關(guān)命令。

2.1.Redis通用命令

通用指令是部分?jǐn)?shù)據(jù)類型的,都可以使用的指令,常見的有:

  • KEYS:查看符合模板的所有key
  • DEL:刪除一個指定的key
  • EXISTS:判斷key是否存在
  • EXPIRE:給一個key設(shè)置有效期,有效期到期時該key會被自動刪除
  • TTL:查看一個KEY的剩余有效期

通過help [command] 可以查看一個命令的具體用法,例如:

# 查看keys命令的幫助信息:
127.0.0.1:6379> help keys

KEYS pattern
summary: Find all keys matching the given pattern
since: 1.0.0
group: generic

2.2.String類型

String類型,也就是字符串類型,是Redis中最簡單的存儲類型。

其value是字符串,不過根據(jù)字符串的格式不同,又可以分為3類:

  • string:普通字符串
  • int:整數(shù)類型,可以做自增、自減操作
  • float:浮點類型,可以做自增、自減操作

不管是哪種格式,底層都是字節(jié)數(shù)組形式存儲,只不過是編碼方式不同。字符串類型的最大空間不能超過512m.
Redis系列學(xué)習(xí)文章分享---第一篇(Redis快速入門之初始Redis--NoSql+安裝redis+客戶端+常用命令),Redis系列,redis,nosql,數(shù)據(jù)庫

2.2.1.String的常見命令

String的常見命令有:

  • SET:添加或者修改已經(jīng)存在的一個String類型的鍵值對
  • GET:根據(jù)key獲取String類型的value
  • MSET:批量添加多個String類型的鍵值對
  • MGET:根據(jù)多個key獲取多個String類型的value
  • INCR:讓一個整型的key自增1
  • INCRBY:讓一個整型的key自增并指定步長,例如:incrby num 2 讓num值自增2
  • INCRBYFLOAT:讓一個浮點類型的數(shù)字自增并指定步長
  • SETNX:添加一個String類型的鍵值對,前提是這個key不存在,否則不執(zhí)行
  • SETEX:添加一個String類型的鍵值對,并且指定有效期

2.2.2.Key結(jié)構(gòu)

Redis沒有類似MySQL中的Table的概念,我們該如何區(qū)分不同類型的key呢?

例如,需要存儲用戶、商品信息到redis,有一個用戶id是1,有一個商品id恰好也是1,此時如果使用id作為key,那就會沖突了,該怎么辦?

我們可以通過給key添加前綴加以區(qū)分,不過這個前綴不是隨便加的,有一定的規(guī)范:

Redis的key允許有多個單詞形成層級結(jié)構(gòu),多個單詞之間用’:'隔開,格式如下:

	項目名:業(yè)務(wù)名:類型:id

這個格式并非固定,也可以根據(jù)自己的需求來刪除或添加詞條。這樣以來,我們就可以把不同類型的數(shù)據(jù)區(qū)分開了。從而避免了key的沖突問題。

例如我們的項目名稱叫 heima,有user和product兩種不同類型的數(shù)據(jù),我們可以這樣定義key:

  • user相關(guān)的key:heima:user:1

  • product相關(guān)的key:heima:product:1

如果Value是一個Java對象,例如一個User對象,則可以將對象序列化為JSON字符串后存儲:

KEY VALUE
heima:user:1 {“id”:1, “name”: “Jack”, “age”: 21}
heima:product:1 {“id”:1, “name”: “小米11”, “price”: 4999}

并且,在Redis的桌面客戶端中,還會以相同前綴作為層級結(jié)構(gòu),讓數(shù)據(jù)看起來層次分明,關(guān)系清晰:
Redis系列學(xué)習(xí)文章分享---第一篇(Redis快速入門之初始Redis--NoSql+安裝redis+客戶端+常用命令),Redis系列,redis,nosql,數(shù)據(jù)庫

2.3.Hash類型

Hash類型,也叫散列,其value是一個無序字典,類似于Java中的HashMap結(jié)構(gòu)。

String結(jié)構(gòu)是將對象序列化為JSON字符串后存儲,當(dāng)需要修改對象某個字段時很不方便:
Redis系列學(xué)習(xí)文章分享---第一篇(Redis快速入門之初始Redis--NoSql+安裝redis+客戶端+常用命令),Redis系列,redis,nosql,數(shù)據(jù)庫
Hash結(jié)構(gòu)可以將對象中的每個字段獨立存儲,可以針對單個字段做CRUD:
Redis系列學(xué)習(xí)文章分享---第一篇(Redis快速入門之初始Redis--NoSql+安裝redis+客戶端+常用命令),Redis系列,redis,nosql,數(shù)據(jù)庫

Hash的常見命令有:

  • HSET key field value:添加或者修改hash類型key的field的值

  • HGET key field:獲取一個hash類型key的field的值

  • HMSET:批量添加多個hash類型key的field的值

  • HMGET:批量獲取多個hash類型key的field的值

  • HGETALL:獲取一個hash類型的key中的所有的field和value

  • HKEYS:獲取一個hash類型的key中的所有的field

  • HINCRBY:讓一個hash類型key的字段值自增并指定步長

  • HSETNX:添加一個hash類型的key的field值,前提是這個field不存在,否則不執(zhí)行

2.4.List類型

Redis中的List類型與Java中的LinkedList類似,可以看做是一個雙向鏈表結(jié)構(gòu)。既可以支持正向檢索和也可以支持反向檢索。

特征也與LinkedList類似:

  • 有序
  • 元素可以重復(fù)
  • 插入和刪除快
  • 查詢速度一般

常用來存儲一個有序數(shù)據(jù),例如:朋友圈點贊列表,評論列表等。

List的常見命令有:

  • LPUSH key element … :向列表左側(cè)插入一個或多個元素
  • LPOP key:移除并返回列表左側(cè)的第一個元素,沒有則返回nil
  • RPUSH key element … :向列表右側(cè)插入一個或多個元素
  • RPOP key:移除并返回列表右側(cè)的第一個元素
  • LRANGE key star end:返回一段角標(biāo)范圍內(nèi)的所有元素
  • BLPOP和BRPOP:與LPOP和RPOP類似,只不過在沒有元素時等待指定時間,而不是直接返回nil

2.5.Set類型

Redis的Set結(jié)構(gòu)與Java中的HashSet類似,可以看做是一個value為null的HashMap。因為也是一個hash表,因此具備與HashSet類似的特征:

  • 無序
  • 元素不可重復(fù)
  • 查找快
  • 支持交集、并集、差集等功能

Set的常見命令有:

  • SADD key member … :向set中添加一個或多個元素
  • SREM key member … : 移除set中的指定元素
  • SCARD key: 返回set中元素的個數(shù)
  • SISMEMBER key member:判斷一個元素是否存在于set中
  • SMEMBERS:獲取set中的所有元素
  • SINTER key1 key2 … :求key1與key2的交集

例如兩個集合:s1和s2:
Redis系列學(xué)習(xí)文章分享---第一篇(Redis快速入門之初始Redis--NoSql+安裝redis+客戶端+常用命令),Redis系列,redis,nosql,數(shù)據(jù)庫

求交集:SINTER s1 s2

求s1與s2的不同:SDIFF s1 s2
Redis系列學(xué)習(xí)文章分享---第一篇(Redis快速入門之初始Redis--NoSql+安裝redis+客戶端+常用命令),Redis系列,redis,nosql,數(shù)據(jù)庫

下面給一些練習(xí)(需要答案可以私聊哦):

  1. 將下列數(shù)據(jù)用Redis的Set集合來存儲:
  • 張三的好友有:李四、王五、趙六
  • 李四的好友有:王五、麻子、二狗
  1. 利用Set的命令實現(xiàn)下列功能:
  • 計算張三的好友有幾人
  • 計算張三和李四有哪些共同好友
  • 查詢哪些人是張三的好友卻不是李四的好友
  • 查詢張三和李四的好友總共有哪些人
  • 判斷李四是否是張三的好友
  • 判斷張三是否是李四的好友
  • 將李四從張三的好友列表中移除

2.6.SortedSet類型

Redis的SortedSet是一個可排序的set集合,與Java中的TreeSet有些類似,但底層數(shù)據(jù)結(jié)構(gòu)卻差別很大。SortedSet中的每一個元素都帶有一個score屬性,可以基于score屬性對元素排序,底層的實現(xiàn)是一個跳表(SkipList)加 hash表。

SortedSet具備下列特性:

  • 可排序
  • 元素不重復(fù)
  • 查詢速度快

因為SortedSet的可排序特性,經(jīng)常被用來實現(xiàn)排行榜這樣的功能。

SortedSet的常見命令有:

  • ZADD key score member:添加一個或多個元素到sorted set ,如果已經(jīng)存在則更新其score值
  • ZREM key member:刪除sorted set中的一個指定元素
  • ZSCORE key member : 獲取sorted set中的指定元素的score值
  • ZRANK key member:獲取sorted set 中的指定元素的排名
  • ZCARD key:獲取sorted set中的元素個數(shù)
  • ZCOUNT key min max:統(tǒng)計score值在給定范圍內(nèi)的所有元素的個數(shù)
  • ZINCRBY key increment member:讓sorted set中的指定元素自增,步長為指定的increment值
  • ZRANGE key min max:按照score排序后,獲取指定排名范圍內(nèi)的元素
  • ZRANGEBYSCORE key min max:按照score排序后,獲取指定score范圍內(nèi)的元素
  • ZDIFF、ZINTER、ZUNION:求差集、交集、并集

注意:所有的排名默認(rèn)都是升序,如果要降序則在命令的Z后面添加REV即可,例如:

  • 升序獲取sorted set 中的指定元素的排名:ZRANK key member

  • 降序獲取sorted set 中的指定元素的排名:ZREVRANK key memeber

練習(xí)題(需要答案可以私聊我哦):

將班級的下列學(xué)生得分存入Redis的SortedSet中:
Jack 85, Lucy 89, Rose 82, Tom 95, Jerry 78, Amy 92, Miles 76
并實現(xiàn)下列功能:

  • 刪除Tom同學(xué)
  • 獲取Amy同學(xué)的分?jǐn)?shù)
  • 獲取Rose同學(xué)的排名
  • 查詢80分以下有幾個學(xué)生
  • 給Amy同學(xué)加2分
  • 查出成績前3名的同學(xué)
  • 查出成績80分以下的所有同學(xué)

感謝閱讀

感謝您閱讀 Redis 學(xué)習(xí)系列的第一篇!在這篇文章中,我們探索了Redis的(快速入門之初始Redis–>了解NoSql+安裝redis+客戶端+常用命令)

下一篇文章即將發(fā)布! 在第二篇中,我們將深入研究–>Redis的Java客戶端等系列知識,為您分享我學(xué)習(xí)的Redis的收獲,請繼續(xù)關(guān)注我的系列。

謝謝您的陪伴! 如果您有任何問題、建議或想要了解的特定主題系列,請隨時在評論中告訴我。我期待與您共同探索java,共同提升我們的Java開發(fā)技能!

學(xué)習(xí)資料來源黑馬程序員Redis視頻學(xué)習(xí),如有侵權(quán)聯(lián)系我刪除文章來源地址http://www.zghlxwxcb.cn/news/detail-828987.html

到了這里,關(guān)于Redis系列學(xué)習(xí)文章分享---第一篇(Redis快速入門之初始Redis--NoSql+安裝redis+客戶端+常用命令)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Redis01——Redis入門這一篇就夠了(可學(xué)習(xí)、復(fù)習(xí)、面試,收藏備用)

    Redis01——Redis入門這一篇就夠了(可學(xué)習(xí)、復(fù)習(xí)、面試,收藏備用)

    前 言 ?? 作者簡介:半舊518,長跑型選手,立志堅持寫10年博客,專注于java后端 ?專欄簡介:深入、全面、系統(tǒng)的介紹redis知識 ?? 文章簡介:本文將深入、全面介紹Redis的入門,包括redis的介紹、歷史、安裝、特點、基本知識等,建議收藏備用,創(chuàng)作不易,敬請三連哦 Red

    2024年02月07日
    瀏覽(26)
  • 記錄第一篇被”華為開發(fā)者聯(lián)盟鴻蒙專區(qū) “收錄的文章

    記錄第一篇被”華為開發(fā)者聯(lián)盟鴻蒙專區(qū) “收錄的文章

    記錄第一篇被”華為開發(fā)者聯(lián)盟鴻蒙專區(qū)?“社區(qū)收錄的文章。 堅持寫作的動力是什么? 是記錄、分享,以及更好的思考?。 ?

    2024年02月14日
    瀏覽(24)
  • 【SpringBoot】第一篇:redis使用

    【SpringBoot】第一篇:redis使用

    背景: 本文是教初學(xué)者如何正確使用和接入redis。 ? ? 好了,到此處就已經(jīng)介紹完畢了! 如果有什么問題可以問博主的,可以在底下進(jìn)行留言,看到一定回復(fù)你們。

    2024年02月11日
    瀏覽(22)
  • Spring5系列學(xué)習(xí)文章分享---第三篇(AOP概念+原理+動態(tài)代理+術(shù)語+Aspect+操作案例(注解與配置方式))

    Spring5系列學(xué)習(xí)文章分享---第三篇(AOP概念+原理+動態(tài)代理+術(shù)語+Aspect+操作案例(注解與配置方式))

    開篇: 歡迎再次來到 Spring 5 學(xué)習(xí)系列!在這個博客中,我們將深入研究 Spring 框架的AOP概念+原理+動態(tài)代理+術(shù)語+Aspect+操作案例(注解與配置方式)。 概念 什么是AOP (1)面向切面編程(方面),利用 AOP 可以對業(yè)務(wù)邏輯的各個部分進(jìn)行隔離,從而使得 業(yè)務(wù)邏輯各部分之間的

    2024年01月24日
    瀏覽(28)
  • 【一文詳解】知識分享:(C#開發(fā)學(xué)習(xí)快速入門)

    【一文詳解】知識分享:(C#開發(fā)學(xué)習(xí)快速入門)

    c語言 是面向過程。 c++ 是面向過程+面向?qū)ο蟆?c# 是純粹的面向?qū)ο? 核心思想是以人的思維習(xí)慣來分析和解決問題。萬物皆對象 。 面向?qū)ο箝_發(fā)步驟: 分析對象 特征 行為 關(guān)系(對象關(guān)系/類關(guān)系) 寫代碼: 特征–成員變量 方法–成員方法 實例化–具體對象 Note(補(bǔ)充知識)

    2024年01月19日
    瀏覽(130)
  • 【Redis學(xué)習(xí)筆記01】快速入門(含安裝教程)

    【Redis學(xué)習(xí)筆記01】快速入門(含安裝教程)

    先來看門見山的給出 Redis 的概念: Redis:是一種基于內(nèi)存的高性能K-V鍵值型NoSQL數(shù)據(jù)庫 Redis官網(wǎng):https://redis.io/ 1.1 初識NoSQL 想必大家都對關(guān)系型數(shù)據(jù)庫更為熟悉!如MySQL、Oracle、SQL Server都是比較常見的關(guān)系型數(shù)據(jù)庫,所謂關(guān)系型數(shù)據(jù)庫主要以二維表作為數(shù)據(jù)結(jié)構(gòu)進(jìn)行存儲,但

    2024年01月22日
    瀏覽(55)
  • 架構(gòu)師成長之路Redis第一篇|Redis 安裝介紹以及內(nèi)存分配器jemalloc

    架構(gòu)師成長之路Redis第一篇|Redis 安裝介紹以及內(nèi)存分配器jemalloc

    Redis官網(wǎng):https://redis.io/download/ 下載安裝二進(jìn)制文件 可下載安裝最新版Redis7.2.0,或者可選版本6.x 我這里下載6.2.13和7.2最新版本,后面我們都是安裝6.2.13版本的信息進(jìn)行講解 二進(jìn)制文件安裝步驟 安裝前期準(zhǔn)備: 安裝gcc yum install gcc 壓縮文件 tar -xzf redis6.2.13.tar.gz 編譯 cd redis-x

    2024年02月11日
    瀏覽(26)
  • Vue入門簡介【第一篇】

    Vue入門簡介【第一篇】

    ? ? ? ? ??? 1.1? 什么是Vue ? ? ?vue是一個構(gòu)建用戶界面UI的 漸進(jìn)式j(luò)avascript框架 ,漸進(jìn)式的框架是指可以一步一步的由淺入深的去使用該框架。 ? ? ? vue官網(wǎng): https://cn.vuejs.org/ ? ? ? ? ??? 1.2 Vue的 優(yōu)點? ??? 1、體積小 ?? ?壓縮后33k左右,體積小意味著下載速度很快

    2024年02月03日
    瀏覽(25)
  • 數(shù)據(jù)結(jié)構(gòu)入門篇:第一篇

    數(shù)據(jù)結(jié)構(gòu)入門篇:第一篇

    ??首先,為什么要學(xué)數(shù)據(jù)結(jié)構(gòu)? 數(shù)據(jù)結(jié)構(gòu)的 概念 :在內(nèi)存中對數(shù)據(jù)進(jìn)行管理; 數(shù)據(jù)結(jié)構(gòu)的學(xué)習(xí)能讓我們在處理大量數(shù)據(jù)時提高處理效率,即讓我們在不同的場景下更快的處理大量數(shù)據(jù); ??算法和數(shù)據(jù)結(jié)構(gòu)有什么關(guān)系? 算法 就是處理數(shù)據(jù)的一種方法; 數(shù)據(jù)結(jié)構(gòu)是為算法服

    2023年04月18日
    瀏覽(26)
  • 深度學(xué)習(xí)快速入門系列---損失函數(shù)

    深度學(xué)習(xí)快速入門系列---損失函數(shù)

    在深度學(xué)習(xí)中,損失函數(shù)的作用是量化預(yù)測值和真實值之間的差異,使得網(wǎng)絡(luò)模型可以朝著真實值的方向預(yù)測,損失函數(shù)通過衡量模型預(yù)測結(jié)果與真實標(biāo)簽之間的差異,反映模型的性能。同時損失函數(shù)作為一個可優(yōu)化的目標(biāo)函數(shù),通過最小化損失函數(shù)來優(yōu)化模型參數(shù)。在本篇

    2024年02月12日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包