145.《redis原生超詳細使用》

文章目錄

  • 什么是redis
  • redis 安裝啟動
  • redis數據類型
  • redis key操作
    • key 的增
    • key 的查
    • key 的改
    • key 的刪
    • key 是否存在
    • key 查看所有
    • key 「設置」過期時間
    • key 「查看」過期時間
    • key 「移除」過期時間
    • key 「查看」數據類型
    • key 「匹配」符合條件的key
    • key 「移動」到其他數據庫
  • redis數據類型操作
    • string(字符串)
      • 設置字符串
      • 獲取字符串
      • 字符串截取
      • 設置所有(一個或多個)給定 key 的值
      • 獲取一個或多個 key-value 對
      • key 不存在時設置 key 的值
      • 返回字符串值的長度
      • key 中儲存的數字值增一
      • key 的值加上給定的增量值
      • key 中儲存的數字值減一
      • key 所儲存的值減去給定的減量值
      • key 后追加新的字符串
    • list(列表)
      • 設置列表
      • 移出并獲取列表的第一個元素
      • 移出并獲取列表的最后一個元素
      • 通過索引獲取列表中的元素
      • 在列表的元素前或者后插入元素
      • 獲取列表長度
      • 移出并獲取列表的第一個元素
      • 將一個值插入到已存在的列表頭部
      • 將一個或多個值插入到列表頭部
      • 獲取列表指定范圍內的元素
      • 獲取全部元素
      • 移除列表元素
      • 通過索引設置列表元素的值
      • 查找指定區間內的元素
      • 移除列表的最后一個元素,并返回
      • 移除列表的最后一個元素,并將該元素添加到另一個列表并返回
      • 在列表中添加一個或多個值到列表尾部
      • 為已存在的列表添加值
    • hash(哈希)
      • 刪除一個或多個哈希表字段
      • 查看哈希表 key 中,指定的字段是否存在
      • 獲取存儲在哈希表中指定字段的值
      • 獲取在哈希表中指定 key 的所有字段和值
      • 為哈希表 key 中的指定字段的整數值加上增量 increment
      • 為哈希表 key 中的指定字段的浮點數值加上增量 increment
      • 獲取哈希表中的所有字段
      • 獲取哈希表中字段的數量
      • 獲取所有給定字段的值
      • 同時將多個 field-value (域-值)對設置到哈希表 key 中
      • 將哈希表 key 中的字段 field 的值設為 value
      • 只有在字段 field 不存在時,設置哈希表字段的值
      • 獲取哈希表中所有值
      • 迭代哈希表中的鍵值對
    • set(集合)
      • 向集合添加一個或多個成員
      • 獲取集合的成員數
      • 返回第一個集合與其他集合之間的差異
      • 返回給定所有集合的差集并存儲在 destination 中
      • 返回給定所有集合的交集
      • 返回給定所有集合的交集并存儲在 destination 中
      • 判斷 member 元素是否是集合 key 的成員
      • 返回集合中的所有成員
      • 將 member 元素從 source 集合移動到 destination 集合
      • 移除并返回集合中的一個隨機元素
      • 返回集合中一個或多個隨機數
      • 移除集合中一個或多個成員
      • 返回所有給定集合的并集
      • 所有給定集合的并集存儲在 destination 集合中
      • 迭代集合中的元素
    • zset(sorted set)
      • 向有序集合添加一個或多個成員,或者更新已存在成員的分數
      • 獲取有序集合的成員數
      • 計算在有序集合中指定區間分數的成員數
      • 有序集合中對指定成員的分數加上增量 increment
      • 計算給定的一個或多個有序集的交集并將結果集存儲在新的有序集合 destination 中
      • 在有序集合中計算指定字典區間內成員數量
      • 通過索引區間返回有序集合指定區間內的成員
      • 通過字典區間返回有序集合的成員
      • 通過分數返回有序集合指定區間內的成員
      • 返回有序集合中指定成員的索引
      • 移除有序集合中的一個或多個成員
      • 移除有序集合中給定的字典區間的所有成員
      • 移除有序集合中給定的排名區間的所有成員
      • 移除有序集合中給定的分數區間的所有成員
      • 返回有序集中指定區間內的成員,通過索引,分數從高到低
      • 返回有序集中指定分數區間內的成員,分數從高到低排序
      • 返回有序集合中指定成員的排名,有序集成員按分數值遞減(從大到小)排序
      • 返回有序集中,成員的分數值
      • 計算給定的一個或多個有序集的并集,并存儲在新的 key 中
      • 迭代有序集合中的元素(包括元素成員和元素分值)

什么是redis

REmote DIctionary Server(Redis) 是一個由 Salvatore Sanfilippo 寫的 key-value 存儲系統,是跨平臺的非關系型數據庫。

Redis 是一個開源的使用 ANSI C 語言編寫、遵守 BSD 協議、支持網絡、可基于內存、分布式、可選持久性的鍵值對(Key-Value)存儲數據庫,并提供多種語言的 API。

Redis 通常被稱為數據結構服務器,因為值(value)可以是字符串(String)、哈希(Hash)、列表(list)、集合(sets)和有序集合(sorted sets)等類型。

redis 安裝啟動

在 macOS 上安裝 Redis并啟動
在 window 上安裝 Redis并啟動

redis數據類型

Redis 主要支持以下幾種數據類型:
常用

  • string(字符串):基本的數據存儲單元,可以存儲字符串、整數或者浮點數。
  • hash(哈希):一個鍵值對集合,可以存儲多個字段。
  • list(列表):一個簡單的列表,可以存儲一系列的字符串元素。
  • set(集合):一個無序集合,可以存儲不重復的字符串元素。
  • zset(sorted set):有序集合): 類似于集合,但是每個元素都有一個分數(score)與之關聯。

不常用

  • 位圖(Bitmaps):基于字符串類型,可以對每個位進行操作。
  • 超日志(HyperLogLogs):用于基數統計,可以估算集合中的唯一元素數量。
  • 地理空間(Geospatial):用于存儲地理位置信息。
  • 發布/訂閱(Pub/Sub):一種消息通信模式,允許客戶端訂閱消息通道,并接收發布到該通道的消息。
  • 流(Streams):用于消息隊列和日志存儲,支持消息的持久化和時間排序。
  • 模塊(Modules):Redis 支持動態加載模塊,可以擴展 Redis 的功能。

redis key操作

Redis 鍵命令用于管理 redis 的鍵。

開始之前,先選擇操作的數據庫,redis的數據庫默認16個,操作之前先選擇數據庫

# 選擇了索引為0的數據庫
select 0

下面的所有的操作都在索引為0的數據庫里操作

key 的增

127.0.0.1:6379> set name lisi
OK

key 的查

127.0.0.1:6379> get name
"lisi"

key 的改

127.0.0.1:6379> rename name newName
OK
127.0.0.1:6379> get newName
"lisi"

key 的刪

127.0.0.1:6379> del newName
(integer) 1
127.0.0.1:6379> get newName
(nil)

key 是否存在

不存在

127.0.0.1:6379> exists newName
(integer) 0

存在

127.0.0.1:6379> exists name
(integer) 1

key 查看所有

127.0.0.1:6379> keys *
1) "runoob3"
2) "runoob1"
3) "name"
4) "runoob2"

key 「設置」過期時間

以秒計

127.0.0.1:6379> expire name 60
(integer) 1

以 UNIX 時間戳

127.0.0.1:6379> expireat runoobkey 1293840000
(integer) 1

以毫秒計

127.0.0.1:6379> pexpire name 1500
(integer) 1

key 「查看」過期時間

pttl
以毫秒為單位返回 key 的剩余的過期時間

127.0.0.1:6379> expire name 60
(integer) 1
127.0.0.1:6379> pttl name 
(integer) 53144

ttl
以秒為單位,返回給定 key 的剩余生存時間(TTL, time to live)。

127.0.0.1:6379> EXPIRE name 60
(integer) 1
127.0.0.1:6379> ttl name
(integer) 33

key 「移除」過期時間

移除 key 的過期時間,key 將持久保持

127.0.0.1:6379> expire name 60
(integer) 1
127.0.0.1:6379> get name
"lisi"
127.0.0.1:6379> PERSIST name
(integer) 1

key 「查看」數據類型

127.0.0.1:6379> type name
string

key 「匹配」符合條件的key

127.0.0.1:6379> keys runoob*
1) "runoob3"
2) "runoob1"
3) "runoob2"

key 「移動」到其他數據庫

127.0.0.1:6379> move name 2
(integer) 1

redis數據類型操作

string(字符串)

設置字符串

命令用于設置給定 key 的值。如果 key 已經存儲其他值, SET 就覆寫舊值,且無視類型。

SET key value
127.0.0.1:6379> set name lisi
OK

獲取字符串

命令用于獲取指定 key 的值。如果 key 不存在,返回 nil 。如果key 儲存的值不是字符串類型,返回一個錯誤。

GET key
127.0.0.1:6379> get name
"lisi"

字符串截取

命令用于獲取存儲在指定 key 中字符串的子字符串。字符串的截取范圍由 start 和 end 兩個偏移量決定(包括 start 和 end 在內)

GETRANGE key start end
127.0.0.1:6379> get name
"zhangsan nihao"
127.0.0.1:6379> getrange name 1 3
"han"

設置所有(一個或多個)給定 key 的值

命令返回所有(一個或多個)給定 key 的值。 如果給定的 key 里面,有某個 key 不存在,那么這個 key 返回特殊值 nil 。

 MGET KEY1 KEY2 .. KEYN
127.0.0.1:6379> mset name 'zhangsan' age 15
OK
127.0.0.1:6379> keys *
1) "name"
2) "age"

獲取一個或多個 key-value 對

命令返回所有(一個或多個)給定 key 的值。 如果給定的 key 里面,有某個 key 不存在,那么這個 key 返回特殊值 nil 。

MGET KEY1 KEY2 .. KEYN
127.0.0.1:6379> mget name age 
1) "zhangsan"
2) "15"

key 不存在時設置 key 的值

命令在指定的 key 不存在時,為 key 設置指定的值

SETNX KEY_NAME VALUE
127.0.0.1:6379> keys *
1) "name"
2) "age"
127.0.0.1:6379> setnx sex 'man'
(integer) 1
127.0.0.1:6379> keys *
1) "name"
2) "sex"
3) "age"

返回字符串值的長度

命令用于獲取指定 key 所儲存的字符串值的長度。當 key 儲存的不是字符串值時,返回一個錯誤。

STRLEN key
127.0.0.1:6379> strlen age 
(integer) 2
127.0.0.1:6379> strlen name
(integer) 8

key 中儲存的數字值增一

Incr 命令將 key 中儲存的數字值增一。
如果 key 不存在,那么 key 的值會先被初始化為 0 ,然后再執行 INCR 操作。
如果值包含錯誤的類型,或字符串類型的值不能表示為數字,那么返回一個錯誤。
本操作的值限制在 64 位(bit)有符號數字表示之內。

INCR KEY_NAME
127.0.0.1:6379> get age
"16"
127.0.0.1:6379> incr age
(integer) 17

key 的值加上給定的增量值

命令將 key 中儲存的數字加上指定的增量值。
如果 key 不存在,那么 key 的值會先被初始化為 0 ,然后再執行 INCRBY 命令。
如果值包含錯誤的類型,或字符串類型的值不能表示為數字,那么返回一個錯誤。
本操作的值限制在 64 位(bit)有符號數字表示之內。

INCRBY KEY_NAME INCR_AMOUNT
127.0.0.1:6379> get age
"17"
127.0.0.1:6379> incrby age
(integer) 19

key 中儲存的數字值減一

Decr 命令將 key 中儲存的數字值減一。
如果 key 不存在,那么 key 的值會先被初始化為 0 ,然后再執行 DECR 操作。
如果值包含錯誤的類型,或字符串類型的值不能表示為數字,那么返回一個錯誤。
本操作的值限制在 64 位(bit)有符號數字表示之內。

DECR KEY_NAME
127.0.0.1:6379> get age 
"19"
127.0.0.1:6379> decr age
(integer) 18

key 所儲存的值減去給定的減量值

命令將 key 所儲存的值減去指定的減量值。
如果 key 不存在,那么 key 的值會先被初始化為 0 ,然后再執行 DECRBY 操作。
如果值包含錯誤的類型,或字符串類型的值不能表示為數字,那么返回一個錯誤。
本操作的值限制在 64 位(bit)有符號數字表示之內。

DECRBY KEY_NAME DECREMENT_AMOUNT
127.0.0.1:6379> get age
"16"
127.0.0.1:6379> decrby age 2
(integer) 14

key 后追加新的字符串

命令用于為指定的 key 追加值。
如果 key 已經存在并且是一個字符串, APPEND 命令將 value 追加到 key 原來的值的末尾。
如果 key 不存在, APPEND 就簡單地將給定 key 設為 value ,就像執行 SET key value 一樣。

 APPEND KEY_NAME NEW_VALUE
127.0.0.1:6379> get name 
"zhangsan"
127.0.0.1:6379> append name " nihao"
(integer) 14
127.0.0.1:6379> get name
"zhangsan nihao"

list(列表)

設置列表

 lpush abc value1 value2 value3
127.0.0.1:6379> lpush abc 11 22 33 44 55
(integer) 5

移出并獲取列表的第一個元素

移出并獲取列表的第一個元素, 如果列表沒有元素會阻塞列表直到等待超時或發現可彈出元素為止。

BLPOP key1 [key2 ] timeout
127.0.0.1:6379> blpop abc 1000
1) "abc"
2) "55"

移出并獲取列表的最后一個元素

移出并獲取列表的最后一個元素, 如果列表沒有元素會阻塞列表直到等待超時或發現可彈出元素為止。

BRPOP key1 [key2 ] timeout
127.0.0.1:6379> brpop abc 1000
1) "abc"
2) "11"

通過索引獲取列表中的元素

通過索引獲取列表中的元素

LINDEX key index
127.0.0.1:6379> lrange abc 0 -1
1) "44"
2) "33"
3) "22"
127.0.0.1:6379> lindex abc 2
"22"

在列表的元素前或者后插入元素

命令用于在列表的元素前或者后插入元素。當指定元素不存在于列表中時,不執行任何操作。
當列表不存在時,被視為空列表,不執行任何操作。
如果 key 不是列表類型,返回一個錯誤

LINSERT key BEFORE|AFTER pivot value

127.0.0.1:6379> lrange abc 0 -1
1) "55"
2) "44"
3) "33"
4) "22"
5) "11"
127.0.0.1:6379> lpush abc 55 66
(integer) 7
127.0.0.1:6379> lrange abc 0 -1
1) "66"
2) "55"
3) "55"
4) "44"
5) "33"
6) "22"
7) "11"
127.0.0.1:6379> 

127.0.0.1:6379> lrange abc 0 -1
1) "66"
2) "55"
3) "55"
4) "44"
5) "33"
6) "22"
7) "11"
127.0.0.1:6379> lpush abc after 11 00
(integer) 10
127.0.0.1:6379> lrange abc 0 -11) "00"2) "11"3) "after"4) "66"5) "55"6) "55"7) "44"8) "33"9) "22"
10) "11"

獲取列表長度

命令用于返回列表的長度。 如果列表 key 不存在,則 key 被解釋為一個空列表,返回 0 。 如果 key 不是列表類型,返回一個錯誤。

LLEN KEY_NAME 
127.0.0.1:6379> llen abc
(integer) 10

移出并獲取列表的第一個元素

命令用于移除并返回列表的第一個元素

Lpop KEY_NAME
127.0.0.1:6379> lrange abc 0 -11) "00"2) "11"3) "after"4) "66"5) "55"6) "55"7) "44"8) "33"9) "22"
10) "11"
127.0.0.1:6379> lpop abc
"00"
127.0.0.1:6379> lrange abc 0 -1
1) "11"
2) "after"
3) "66"
4) "55"
5) "55"
6) "44"
7) "33"
8) "22"
9) "11"

將一個值插入到已存在的列表頭部

將一個值插入到已存在的列表頭部,列表不存在時操作無效

LPUSHX key value
127.0.0.1:6379> lpush abc liuhuan
(integer) 13
127.0.0.1:6379> lrange abc 0 -11) "liuhuan"2) "3"3) "2"4) "1"5) "11"6) "after"7) "66"8) "55"9) "55"
10) "44"
11) "33"
12) "22"
13) "11"

將一個或多個值插入到列表頭部

命令將一個或多個值插入到列表頭部。 如果 key 不存在,一個空列表會被創建并執行 LPUSH 操作。 當 key 存在但不是列表類型時,返回一個錯誤。

	LPUSH key value1 [value2]
127.0.0.1:6379> lpush abc 1 2 3
(integer) 12
127.0.0.1:6379> lrange abc 0 -11) "3"2) "2"3) "1"4) "11"5) "after"6) "66"7) "55"8) "55"9) "44"
10) "33"
11) "22"
12) "11"

獲取列表指定范圍內的元素

返回列表中指定區間內的元素,區間以偏移量 START 和 END 指定。 其中 0 表示列表的第一個元素, 1 表示列表的第二個元素,以此類推。 你也可以使用負數下標,以 -1 表示列表的最后一個元素, -2 表示列表的倒數第二個元素,以此類推。

LRANGE KEY_NAME START END
127.0.0.1:6379> lrange abc 2 5
1) "2"
2) "1"
3) "11"
4) "after"

獲取全部元素

127.0.0.1:6379> lrange abc 0 -11) "liuhuan"2) "3"3) "2"4) "1"5) "11"6) "after"7) "66"8) "55"9) "55"
10) "44"
11) "33"
12) "22"
13) "11"

移除列表元素

語法

 LREM key count VALUE
  • count > 0 : 從表頭開始向表尾搜索,移除與 VALUE 相等的元素,數量為 COUNT 。
  • count < 0 : 從表尾開始向表頭搜索,移除與 VALUE 相等的元素,數量為 COUNT 的絕對值。
  • count = 0 : 移除表中所有與 VALUE 相等的值。
redis> RPUSH mylist "hello"
(integer) 1
redis> RPUSH mylist "hello"
(integer) 2
redis> RPUSH mylist "foo"
(integer) 3
redis> RPUSH mylist "hello"
(integer) 4
redis> LREM mylist -2 "hello"
(integer) 2
redis> LRANGE mylist 0 -1
1) "hello"
2) "foo"
redis> 

通過索引設置列表元素的值

通過索引來設置元素的值。
當索引參數超出范圍,或對一個空列表進行 LSET 時,返回一個錯誤。

LSET key index value
4) "after"
127.0.0.1:6379> lset abc 2 zhangsan
OK
127.0.0.1:6379> lrange abc 0 -11) "liuhuan"2) "3"3) "zhangsan"4) "1"5) "11"6) "after"7) "66"8) "55"9) "55"
10) "44"
11) "33"
12) "22"
13) "11"

查找指定區間內的元素

對一個列表進行修剪(trim),就是說,讓列表只保留指定區間內的元素,不在指定區間之內的元素都將被刪除。

127.0.0.1:6379> lrange abc 0 -11) "liuhuan"2) "3"3) "zhangsan"4) "1"5) "11"6) "after"7) "66"8) "55"9) "55"
10) "44"
11) "33"
12) "22"
13) "11"
127.0.0.1:6379> ltrim abc 3 6
OK
127.0.0.1:6379> lrange abc 0 -1
1) "1"
2) "11"
3) "after"
4) "66"

移除列表的最后一個元素,并返回

移除列表的最后一個元素,返回值為移除的元素。

127.0.0.1:6379> lrange abc 0 -1
1) "1"
2) "11"
3) "after"
4) "66"
127.0.0.1:6379> rpop abc
"66"
127.0.0.1:6379> lrange abc 0 -1
1) "1"
2) "11"
3) "after"

移除列表的最后一個元素,并將該元素添加到另一個列表并返回

命令用于移除列表的最后一個元素,并將該元素添加到另一個列表并返回。

redis 127.0.0.1:6379> RPUSH mylist "hello"
(integer) 1
redis 127.0.0.1:6379> RPUSH mylist "foo"
(integer) 2
redis 127.0.0.1:6379> RPUSH mylist "bar"
(integer) 3
redis 127.0.0.1:6379> RPOPLPUSH mylist myotherlist
"bar"
redis 127.0.0.1:6379> LRANGE mylist 0 -1
1) "hello"
2) "foo"

在列表中添加一個或多個值到列表尾部

在列表中添加一個或多個值到列表尾部

127.0.0.1:6379> lrange abc 0 -1
1) "1"
2) "11"
3) "after"
127.0.0.1:6379> rpush abc 33 44 55
(integer) 6
127.0.0.1:6379> lrange abc 0 -1
1) "1"
2) "11"
3) "after"
4) "33"
5) "44"
6) "55"

為已存在的列表添加值

為已存在的列表添加值

127.0.0.1:6379> lrange abc 0 -1
1) "1"
2) "11"
3) "after"
4) "33"
5) "44"
6) "55"
127.0.0.1:6379> rpushx abc 66
(integer) 7
127.0.0.1:6379> lrange abc 0 -1
1) "1"
2) "11"
3) "after"
4) "33"
5) "44"
6) "55"
7) "66"

hash(哈希)

刪除一個或多個哈希表字段

命令用于刪除哈希表 key 中的一個或多個指定字段,不存在的字段將被忽略。

HDEL key field1 [field2]
127.0.0.1:6379> hkeys info
1) "name"
2) "age"
3) "gender"
4) "dec"
5) "sex"
127.0.0.1:6379> hdel info  dec sex
(integer) 2
127.0.0.1:6379> hkeys info
1) "name"
2) "age"
3) "gender"

查看哈希表 key 中,指定的字段是否存在

命令用于查看哈希表的指定字段是否存在

HEXISTS key field
127.0.0.1:6379> hkeys info
1) "name"
2) "age"
3) "gender"
127.0.0.1:6379> exists info name
(integer) 1

獲取存儲在哈希表中指定字段的值

命令用于查看哈希表的指定字段是否存在

HGET key field
127.0.0.1:6379> hkeys info
1) "name"
2) "age"
3) "gender"
127.0.0.1:6379> hget info name
"zhangsan"

獲取在哈希表中指定 key 的所有字段和值

命令用于返回哈希表中,所有的字段和值。在返回值里,緊跟每個字段名(field name)之后是字段的值(value),所以返回值的長度是哈希表大小的兩倍

HGETALL key
127.0.0.1:6379> hgetall info
1) "name"
2) "zhangsan"
3) "age"
4) "18"
5) "gender"
6) "main"

為哈希表 key 中的指定字段的整數值加上增量 increment

命令用于為哈希表中的字段值加上指定增量值。
增量也可以為負數,相當于對指定字段進行減法操作。
如果哈希表的 key 不存在,一個新的哈希表被創建并執行 HINCRBY 命令。
如果指定的字段不存在,那么在執行命令前,字段的值被初始化為 0 。
對一個儲存字符串值的字段執行 HINCRBY 命令將造成一個錯誤。
本操作的值被限制在 64 位(bit)有符號數字表示之內。

HINCRBY key field increment
127.0.0.1:6379> hget info age
"19"
127.0.0.1:6379> hincrby info age 2
(integer) 21

為哈希表 key 中的指定字段的浮點數值加上增量 increment

命令用于為哈希表中的字段值加上指定浮點數增量值。
如果指定的字段不存在,那么在執行命令前,字段的值被初始化為 0

HINCRBYFLOAT key field increment
127.0.0.1:6379> hgetall info
1) "name"
2) "zhangsan"
3) "age"
4) "21"
5) "gender"
6) "main"
7) "money"
8) "12.2"
127.0.0.1:6379> hincrbyfloat info money 1.2 
"13.4"

獲取哈希表中的所有字段

命令用于獲取哈希表中的所有域(field)

HKEYS key
127.0.0.1:6379> hkeys info
1) "name"
2) "age"
3) "gender"
4) "money"

獲取哈希表中字段的數量

令用于獲取哈希表中字段的數量

HLEN key
127.0.0.1:6379> hkeys info
1) "name"
2) "age"
3) "gender"
4) "money"
127.0.0.1:6379> hlen info
(integer) 4

獲取所有給定字段的值

命令用于返回哈希表中,一個或多個給定字段的值。
如果指定的字段不存在于哈希表,那么返回一個 nil 值

HMGET key field1 [field2]
127.0.0.1:6379> hgetall info 
1) "name"
2) "zhangsan"
3) "age"
4) "21"
5) "gender"
6) "main"
7) "money"
8) "13.4"

同時將多個 field-value (域-值)對設置到哈希表 key 中

命令用于同時將多個 field-value (字段-值)對設置到哈希表中。
此命令會覆蓋哈希表中已存在的字段。
如果哈希表不存在,會創建一個空哈希表,并執行 HMSET 操作

HMSET key field1 value1 [field2 value2 ]
127.0.0.1:6379> hmset user name zhansgan age 18 sex man
OK
127.0.0.1:6379> hgetall user
1) "name"
2) "zhansgan"
3) "age"
4) "18"
5) "sex"
6) "man"

將哈希表 key 中的字段 field 的值設為 value

命令用于為哈希表中的字段賦值 。
如果哈希表不存在,一個新的哈希表被創建并進行 HSET 操作。
如果字段已經存在于哈希表中,舊值將被覆蓋。

HSET key field value
127.0.0.1:6379> hgetall info
1) "name"
2) "lisi"
3) "age"
4) "21"
5) "gender"
6) "main"
7) "money"
8) "13.4"
127.0.0.1:6379> HSET info name zhangsan
(integer) 0
127.0.0.1:6379> hgetall info
1) "name"
2) "zhangsan"
3) "age"
4) "21"
5) "gender"
6) "main"
7) "money"
8) "13.4"

只有在字段 field 不存在時,設置哈希表字段的值

命令用于為哈希表中不存在的的字段賦值 。
如果哈希表不存在,一個新的哈希表被創建并進行 HSET 操作。
如果字段已經存在于哈希表中,操作無效。
如果 key 不存在,一個新哈希表被創建并執行 HSETNX 命令

HSETNX key field value
127.0.0.1:6379> hgetall info 
1) "name"
2) "zhangsan"
3) "age"
4) "21"
5) "gender"
6) "main"
7) "money"
8) "13.4"
127.0.0.1:6379> hsetnx info name 111
(integer) 0
127.0.0.1:6379> hgetall info 
1) "name"
2) "zhangsan"
3) "age"
4) "21"
5) "gender"
6) "main"
7) "money"
8) "13.4"
127.0.0.1:6379> hsetnx info address beijing
(integer) 1
127.0.0.1:6379> hgetall info 1) "name"2) "zhangsan"3) "age"4) "21"5) "gender"6) "main"7) "money"8) "13.4"9) "address"
10) "beijing"

獲取哈希表中所有值

HVALS key
127.0.0.1:6379> hkeys info
1) "name"
2) "age"
3) "gender"
4) "money"
5) "address"

迭代哈希表中的鍵值對

命令用于迭代哈希表中的鍵值對

HSCAN key cursor [MATCH pattern] [COUNT count]
> HMSET sites google "google.com" runoob "runoob.com" weibo "weibo.com" 4 "taobao.com"
OK
> HSCAN sites 0 match "run*"
1) "0"
2) 1) "runoob"
2) "runoob.com"

set(集合)

向集合添加一個或多個成員

命令將一個或多個成員元素加入到集合中,已經存在于集合的成員元素將被忽略。
假如集合 key 不存在,則創建一個只包含添加的元素作成員的集合。
當集合 key 不是集合類型時,返回一個錯誤。
注意:在 Redis2.4 版本以前, SADD 只接受單個成員值。

SADD KEY_NAME VALUE1..VALUEN
127.0.0.1:6379> sadd myset 11 22 33 44
(integer) 4
127.0.0.1:6379> smembers myset
1) "11"
2) "22"
3) "33"
4) "44"

獲取集合的成員數

命令返回集合中元素的數量

SCARD key
127.0.0.1:6379> scard myset
(integer) 4

返回第一個集合與其他集合之間的差異

命令返回第一個集合與其他集合之間的差異,也可以認為說第一個集合中獨有的元素。不存在的集合 key 將視為空集。差集的結果來自前面的 FIRST_KEY ,而不是后面的 OTHER_KEY1,也不是整個 FIRST_KEY OTHER_KEY1…OTHER_KEYN 的差集

SDIFF key1 [key2]
127.0.0.1:6379> smembers myset
1) "11"
2) "22"
3) "33"
4) "44"
127.0.0.1:6379> smembers myset1
1) "33"
2) "44"
3) "55"
4) "66"
127.0.0.1:6379> sdiff myset myset1
1) "11"
2) "22"

返回給定所有集合的差集并存儲在 destination 中

命令將給定集合之間的差集存儲在指定的集合中。如果指定的集合 key 已存在,則會被覆蓋

SDIFFSTORE destination key1 [key2]
127.0.0.1:6379> smembers myset
1) "11"
2) "22"
3) "33"
4) "44"
127.0.0.1:6379> smembers myset1
1) "33"
2) "44"
3) "55"
4) "66"
127.0.0.1:6379> sdiffstore abc  myset myset1
(integer) 2
127.0.0.1:6379> smembers abc
1) "11"
2) "22"

返回給定所有集合的交集

命令返回給定所有給定集合的交集。 不存在的集合 key 被視為空集。 當給定集合當中有一個空集時,結果也為空集(根據集合運算定律)。

SINTER key1 [key2]
127.0.0.1:6379> smembers myset
1) "11"
2) "22"
3) "33"
4) "44"
5) "55"
6) "66"
127.0.0.1:6379> smembers myset1
1) "33"
2) "44"
3) "55"
4) "66"
127.0.0.1:6379> sinter myset1 myset
1) "33"
2) "44"
3) "55"
4) "66"

返回給定所有集合的交集并存儲在 destination 中

命令將給定集合之間的交集存儲在指定的集合中。如果指定的集合已經存在,則將其覆蓋

SINTERSTORE destination key1 [key2]
127.0.0.1:6379> smembers myset
1) "11"
2) "22"
3) "33"
4) "44"
5) "55"
6) "66"
127.0.0.1:6379> smembers myset1
1) "33"
2) "44"
3) "55"
4) "66"
127.0.0.1:6379> sdiffstore abc  myset myset1
(integer) 2
127.0.0.1:6379> smembers abc
1) "11"
2) "22"

判斷 member 元素是否是集合 key 的成員

命令判斷成員元素是否是集合的成員

SISMEMBER key member
127.0.0.1:6379> smembers myset1
1) "33"
2) "44"
3) "55"
4) "66"
127.0.0.1:6379> sismember myset1 33
(integer) 1

返回集合中的所有成員

命令返回集合中的所有的成員。 不存在的集合 key 被視為空集合

SMEMBERS key
127.0.0.1:6379> smembers myset
1) "11"
2) "22"
3) "33"
4) "44"
5) "55"
6) "66"

將 member 元素從 source 集合移動到 destination 集合

命令將指定成員 member 元素從 source 集合移動到 destination 集合。
SMOVE 是原子性操作。如果 source 集合不存在或不包含指定的 member 元素,則 SMOVE 命令不執行任何操作,僅返回 0 。否則, member 元素從 source 集合中被移除,并添加到 destination 集合中去。
當 destination 集合已經包含 member 元素時, SMOVE 命令只是簡單地將 source 集合中的 member 元素刪除。當 source 或 destination 不是集合類型時,返回一個錯誤。

SMOVE source destination member
127.0.0.1:6379> smembers myset
1) "11"
2) "22"
3) "33"
4) "44"
5) "55"
6) "66"
127.0.0.1:6379> smembers myset1
1) "33"
2) "44"
3) "55"
4) "66"
127.0.0.1:6379> smove myset myset1 11
(integer) 1
127.0.0.1:6379> smembers myset
1) "22"
2) "33"
3) "44"
4) "55"
5) "66"
127.0.0.1:6379> smembers myset1
1) "11"
2) "33"
3) "44"
4) "55"
5) "66"

移除并返回集合中的一個隨機元素

命令用于移除集合中的指定 key 的一個或多個隨機元素,移除后會返回移除的元素。該命令類似 Srandmember 命令,但 SPOP 將隨機元素從集合中移除并返回,而 Srandmember 則僅僅返回隨機元素,而不對集合進行任何改動。

SPOP key [count]
127.0.0.1:6379> smembers myset1
1) "11"
2) "33"
3) "44"
4) "55"
5) "66"
127.0.0.1:6379> spop myset 1
1) "55"
127.0.0.1:6379> smembers myset
1) "22"
2) "33"
3) "44"
4) "66"

返回集合中一個或多個隨機數

Redis Srandmember 命令用于返回集合中的一個隨機元素。
從 Redis 2.6 版本開始, Srandmember 命令接受可選的 count 參數:
如果 count 為正數,且小于集合基數,那么命令返回一個包含 count 個元素的數組,數組中的元素各不相同。如果 count 大于等于集合基數,那么返回整個集合。
如果 count 為負數,那么命令返回一個數組,數組中的元素可能會重復出現多次,而數組的長度為 count 的絕對值。
該操作和 SPOP 相似,但 SPOP 將隨機元素從集合中移除并返回,而 Srandmember 則僅僅返回隨機元素,而不對集合進行任何改動

SRANDMEMBER key [count]
127.0.0.1:6379> smembers myset
1) "22"
2) "33"
3) "44"
4) "66"
127.0.0.1:6379> srandmember myset
"66"
127.0.0.1:6379> srandmember myset
"66"
127.0.0.1:6379> srandmember myset
"66"
127.0.0.1:6379> srandmember myset
"44"
127.0.0.1:6379> srandmember myset
"22"

移除集合中一個或多個成員

命令用于移除集合中的一個或多個成員元素,不存在的成員元素會被忽略。
當 key 不是集合類型,返回一個錯誤。
在 Redis 2.4 版本以前, SREM 只接受單個成員值

SREM key member1 [member2]
127.0.0.1:6379> smembers myset
1) "22"
2) "33"
3) "44"
4) "66"
127.0.0.1:6379> srem myset 22 33
(integer) 2
127.0.0.1:6379> smembers myset
1) "44"
2) "66"

返回所有給定集合的并集

命令返回給定集合的并集。不存在的集合 key 被視為空集

SUNION key1 [key2]
127.0.0.1:6379> smembers myset
1) "44"
2) "66"
127.0.0.1:6379> smembers myset1
1) "11"
2) "33"
3) "44"
4) "55"
5) "66"
127.0.0.1:6379> sunion myset myset1
1) "11"
2) "33"
3) "44"
4) "55"
5) "66"

所有給定集合的并集存儲在 destination 集合中

命令將給定集合的并集存儲在指定的集合 destination 中。如果 destination 已經存在,則將其覆蓋

SUNIONSTORE destination key1 [key2]
127.0.0.1:6379> smembers myset
1) "44"
2) "66"
127.0.0.1:6379> smembers myset1
1) "11"
2) "33"
3) "44"
4) "55"
5) "66"
127.0.0.1:6379> sunionstore abc myset myset1
(integer) 5
127.0.0.1:6379> smembers abc
1) "11"
2) "33"
3) "44"
4) "55"
5) "66"

迭代集合中的元素

命令用于迭代集合中鍵的元素

  • cursor - 游標
  • pattern - 匹配的模式
  • count - 指定從數據集里返回多少元素,默認值為 10
SSCAN key cursor [MATCH pattern] [COUNT count]
> SADD myset1 "Google"
(integer) 1
> SADD myset1 "Runoob"
(integer) 1
> SADD myset1 "Taobao"
(integer) 1
> SSCAN myset1 0 match R*
1) "0"
2) 1) "Runoob"

zset(sorted set)

向有序集合添加一個或多個成員,或者更新已存在成員的分數

ZADD key score1 member1 [score2 member2]
127.0.0.1:6379> zadd score  1 "one" 2 "two"
(integer) 2
127.0.0.1:6379> zrange score 0 -1 withscores
1) "one"
2) "1"
3) "two"
4) "2"

獲取有序集合的成員數

ZCARD key
127.0.0.1:6379> zrange score 0 -1 withscores
1) "one"
2) "1"
3) "two"
4) "2"
127.0.0.1:6379> zcard score
(integer) 2

計算在有序集合中指定區間分數的成員數

ZCOUNT key min max
127.0.0.1:6379> zadd info 1.0 "shuxue" 2.0 "yuwen" 3.0 "yingyu"
(integer) 3
127.0.0.1:6379> zrange info 0 -1 withscores
1) "shuxue"
2) "1"
3) "yuwen"
4) "2"
5) "yingyu"
6) "3"

有序集合中對指定成員的分數加上增量 increment

ZINCRBY key increment member
127.0.0.1:6379> zrange info 0 -1 withscores
1) "shuxue"
2) "1"
3) "yuwen"
4) "2"
5) "yingyu"
6) "3"
127.0.0.1:6379> zincrby info 11 shuxue
"12"
127.0.0.1:6379> zrange info 0 -1 withscores
1) "yuwen"
2) "2"
3) "yingyu"
4) "3"
5) "shuxue"
6) "12"

計算給定的一個或多個有序集的交集并將結果集存儲在新的有序集合 destination 中

ZINTERSTORE destination numkeys key [key ...]
127.0.0.1:6379> zadd zset1 1 shuxue 2 yuwen 3 yingyu
(integer) 3
127.0.0.1:6379> zadd zset2 2 dili 3 yingyu 4 zhengzhi
(integer) 3
127.0.0.1:6379> zinterstore sum_point 2 zset1 zset2
(integer) 1
127.0.0.1:6379> zrange sum_point 0 -1 withscores
1) "yingyu"
2) "6"

在有序集合中計算指定字典區間內成員數量

	ZLEXCOUNT key min max
redis 127.0.0.1:6379> ZADD myzset 0 a 0 b 0 c 0 d 0 e
(integer) 5
redis 127.0.0.1:6379> ZADD myzset 0 f 0 g
(integer) 2
redis 127.0.0.1:6379> ZLEXCOUNT myzset - +
(integer) 7
redis 127.0.0.1:6379> ZLEXCOUNT myzset [b [f
(integer) 5

通過索引區間返回有序集合指定區間內的成員

ZRANGE key start stop [WITHSCORES]
127.0.0.1:6379> zadd info 1.0 "shuxue" 2.0 "yuwen" 3.0 "yingyu"
(integer) 3
127.0.0.1:6379> zrange info 0 -1 withscores
1) "shuxue"
2) "1"
3) "yuwen"
4) "2"
5) "yingyu"
6) "3"

通過字典區間返回有序集合的成員

ZRANGEBYLEX key min max [LIMIT offset count]
redis 127.0.0.1:6379> ZADD myzset 0 a 0 b 0 c 0 d 0 e 0 f 0 g
(integer) 7
redis 127.0.0.1:6379> ZRANGEBYLEX myzset - [c
1) "a"
2) "b"
3) "c"
redis 127.0.0.1:6379> ZRANGEBYLEX myzset - (c
1) "a"
2) "b"
redis 127.0.0.1:6379> ZRANGEBYLEX myzset [aaa (g
1) "b"
2) "c"
3) "d"
4) "e"
5) "f"
redis> 

通過分數返回有序集合指定區間內的成員

返回有序集合中指定分數區間的成員列表。有序集成員按分數值遞增(從小到大)次序排列。
具有相同分數值的成員按字典序來排列(該屬性是有序集提供的,不需要額外的計算)。
默認情況下,區間的取值使用閉區間 (小于等于或大于等于),你也可以通過給參數前增加 ( 符號來使用可選的開區間 (小于或大于)。

ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT]
redis 127.0.0.1:6379> ZADD salary 2500 jack                        # 測試數據
(integer) 0
redis 127.0.0.1:6379> ZADD salary 5000 tom
(integer) 0
redis 127.0.0.1:6379> ZADD salary 12000 peter
(integer) 0redis 127.0.0.1:6379> ZRANGEBYSCORE salary -inf +inf               # 顯示整個有序集
1) "jack"
2) "tom"
3) "peter"redis 127.0.0.1:6379> ZRANGEBYSCORE salary -inf +inf WITHSCORES    # 顯示整個有序集及成員的 score 值
1) "jack"
2) "2500"
3) "tom"
4) "5000"
5) "peter"
6) "12000"redis 127.0.0.1:6379> ZRANGEBYSCORE salary -inf 5000 WITHSCORES    # 顯示工資 <=5000 的所有成員
1) "jack"
2) "2500"
3) "tom"
4) "5000"redis 127.0.0.1:6379> ZRANGEBYSCORE salary (5000 400000            # 顯示工資大于 5000 小于等于 400000 的成員
1) "peter"

返回有序集合中指定成員的索引

返回有序集中指定成員的排名。其中有序集成員按分數值遞增(從小到大)順序排列

ZRANK key member
redis 127.0.0.1:6379> ZRANGE salary 0 -1 WITHSCORES        # 顯示所有成員及其 score 值
1) "peter"
2) "3500"
3) "tom"
4) "4000"
5) "jack"
6) "5000"redis 127.0.0.1:6379> ZRANK salary tom                     # 顯示 tom 的薪水排名,第二
(integer) 1

移除有序集合中的一個或多個成員

令用于移除有序集中的一個或多個成員,不存在的成員將被忽略。
當 key 存在但不是有序集類型時,返回一個錯誤。

ZREM key member [member ...]
# 測試數據redis 127.0.0.1:6379> ZRANGE page_rank 0 -1 WITHSCORES
1) "bing.com"
2) "8"
3) "baidu.com"
4) "9"
5) "google.com"
6) "10"# 移除單個元素redis 127.0.0.1:6379> ZREM page_rank google.com
(integer) 1redis 127.0.0.1:6379> ZRANGE page_rank 0 -1 WITHSCORES
1) "bing.com"
2) "8"
3) "baidu.com"
4) "9"# 移除多個元素redis 127.0.0.1:6379> ZREM page_rank baidu.com bing.com
(integer) 2redis 127.0.0.1:6379> ZRANGE page_rank 0 -1 WITHSCORES
(empty list or set)# 移除不存在元素redis 127.0.0.1:6379> ZREM page_rank non-exists-element
(integer) 0

移除有序集合中給定的字典區間的所有成員

命令用于移除有序集中,指定排名(rank)區間內的所有成

ZREMRANGEBYLEX key min max
redis 127.0.0.1:6379> ZADD salary 2000 jack
(integer) 1
redis 127.0.0.1:6379> ZADD salary 5000 tom
(integer) 1
redis 127.0.0.1:6379> ZADD salary 3500 peter
(integer) 1redis 127.0.0.1:6379> ZREMRANGEBYRANK salary 0 1       # 移除下標 0 至 1 區間內的成員
(integer) 2redis 127.0.0.1:6379> ZRANGE salary 0 -1 WITHSCORES    # 有序集只剩下一個成員
1) "tom"
2) "5000"

移除有序集合中給定的排名區間的所有成員

命令用于移除有序集中,指定排名(rank)區間內的所有成員

ZREMRANGEBYRANK key start stop
redis 127.0.0.1:6379> ZADD salary 2000 jack
(integer) 1
redis 127.0.0.1:6379> ZADD salary 5000 tom
(integer) 1
redis 127.0.0.1:6379> ZADD salary 3500 peter
(integer) 1redis 127.0.0.1:6379> ZREMRANGEBYRANK salary 0 1       # 移除下標 0 至 1 區間內的成員
(integer) 2redis 127.0.0.1:6379> ZRANGE salary 0 -1 WITHSCORES    # 有序集只剩下一個成員
1) "tom"
2) "5000"

移除有序集合中給定的分數區間的所有成員

Zremrangebyscore 命令用于移除有序集中,指定分數(score)區間內的所有成員

ZREMRANGEBYSCORE key min max
redis 127.0.0.1:6379> ZRANGE salary 0 -1 WITHSCORES          # 顯示有序集內所有成員及其 score 值
1) "tom"
2) "2000"
3) "peter"
4) "3500"
5) "jack"
6) "5000"redis 127.0.0.1:6379> ZREMRANGEBYSCORE salary 1500 3500      # 移除所有薪水在 1500 到 3500 內的員工
(integer) 2redis> ZRANGE salary 0 -1 WITHSCORES          # 剩下的有序集成員
1) "jack"
2) "5000"

返回有序集中指定區間內的成員,通過索引,分數從高到低

ZREVRANGE key start stop [WITHSCORES]
redis 127.0.0.1:6379> ZRANGE salary 0 -1 WITHSCORES        # 遞增排列
1) "peter"
2) "3500"
3) "tom"
4) "4000"
5) "jack"
6) "5000"redis 127.0.0.1:6379> ZREVRANGE salary 0 -1 WITHSCORES     # 遞減排列
1) "jack"
2) "5000"
3) "tom"
4) "4000"
5) "peter"
6) "3500"

返回有序集中指定分數區間內的成員,分數從高到低排序

ZREVRANGEBYSCORE key max min [WITHSCORES]
redis 127.0.0.1:6379> ZADD salary 10086 jack
(integer) 1
redis > ZADD salary 5000 tom
(integer) 1
redis 127.0.0.1:6379> ZADD salary 7500 peter
(integer) 1
redis 127.0.0.1:6379> ZADD salary 3500 joe
(integer) 1redis 127.0.0.1:6379> ZREVRANGEBYSCORE salary +inf -inf   # 逆序排列所有成員
1) "jack"
2) "peter"
3) "tom"
4) "joe"redis 127.0.0.1:6379> ZREVRANGEBYSCORE salary 10000 2000  # 逆序排列薪水介于 10000 和 2000 之間的成員
1) "peter"
2) "tom"
3) "joe"

返回有序集合中指定成員的排名,有序集成員按分數值遞減(從大到小)排序

	ZREVRANK key member
redis 127.0.0.1:6379> ZRANGE salary 0 -1 WITHSCORES     # 測試數據
1) "jack"
2) "2000"
3) "peter"
4) "3500"
5) "tom"
6) "5000"redis 127.0.0.1:6379> ZREVRANK salary peter     # peter 的工資排第二
(integer) 1redis 127.0.0.1:6379> ZREVRANK salary tom       # tom 的工資最高
(integer) 0

返回有序集中,成員的分數值

ZSCORE key member
redis 127.0.0.1:6379> ZRANGE salary 0 -1 WITHSCORES    # 測試數據
1) "tom"
2) "2000"
3) "peter"
4) "3500"
5) "jack"
6) "5000"redis 127.0.0.1:6379> ZSCORE salary peter              # 注意返回值是字符串
"3500"

計算給定的一個或多個有序集的并集,并存儲在新的 key 中

ZUNIONSTORE destination numkeys key [key ...]
redis> ZADD zset1 1 "one"
(integer) 1
redis> ZADD zset1 2 "two"
(integer) 1
redis> ZADD zset2 1 "one"
(integer) 1
redis> ZADD zset2 2 "two"
(integer) 1
redis> ZADD zset2 3 "three"
(integer) 1
redis> ZUNIONSTORE out 2 zset1 zset2 WEIGHTS 2 3
(integer) 3
redis> ZRANGE out 0 -1 WITHSCORES
1) "one"
2) "5"
3) "three"
4) "9"
5) "two"
6) "10"
redis>

迭代有序集合中的元素(包括元素成員和元素分值)

ZSCAN key cursor [MATCH pattern] [COUNT count]
> ZADD site 1 "Google" 2 "Runoob" 3 "Taobao" 4 "Weibo"
(integer) 4
> ZSCAN site 0 match "R*"
1) "0"
2) 1) "Runoob"
2) 2.0

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/66010.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/66010.shtml
英文地址,請注明出處:http://en.pswp.cn/web/66010.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

大數據技術Kafka詳解 ⑤ | Kafka中的CAP機制

目錄 1、分布式系統當中的CAP理論 1.1、CAP理論 1.2、Partitiontolerance 1.3、Consistency 1.4、Availability 2、Kafka中的CAP機制 C軟件異常排查從入門到精通系列教程&#xff08;核心精品專欄&#xff0c;訂閱量已達600多個&#xff0c;歡迎訂閱&#xff0c;持續更新…

riscv架構下linux4.15實現early打印

在高版本linux6.12.7源碼中&#xff0c;early console介紹&#xff0c;可參考《riscv架構下linux6.12.7實現early打印》文章。 1 什么是early打印 適配內核到新的平臺&#xff0c;基本環境搭建好之后&#xff0c;首要的就是要調通串口&#xff0c;方便后面的信息打印。 正常流…

improve-gantt-elastic(vue2中甘特圖實現與引入)

1.前言 項目開發中需要使用甘特圖展示項目實施進度&#xff0c;左側為表格計劃&#xff0c;右側為圖表進度展示。wl-gantt-mater&#xff0c;dhtmlx嘗試使用過可拓展性受到限制。gantt-elastic相對簡單&#xff0c;可操作性強&#xff0c;基礎版本免費。 甘特圖&#xff08;Gan…

力扣 全排列

回溯經典例題。 題目 通過回溯生成所有可能的排列。每次遞歸時&#xff0c;選擇一個數字&#xff0c;直到選滿所有數字&#xff0c;然后記錄當前排列&#xff0c;回到上層時移除最后選的數字并繼續選擇其他未選的數字。每次遞歸時&#xff0c;在 path 中添加一個新的數字&…

1/13+2

運算符重載 myString.h #ifndef MYSTRING_H #define MYSTRING_H #include <cstring> #include <iostream> using namespace std; class myString {private:char *str; //記錄c風格的字符串int size; //記錄字符串的實際長度int capacity; …

04.計算機體系三層結構與優化(操作系統、計算機網絡、)

3.計算機體系三層結構與優化&#xff08;day04&#xff09; 3.1 操作系統 內容概要&#xff1a; 操作系統的發展史&#xff1a;批處理系統》分時操作系統》unix>linux多道技術》&#xff08;進程、線程&#xff09;并發進程與線程相關概念任務運行的三種狀態&#xff1a;…

【HM-React】08. Layout模塊

基本結構和樣式reset 結構創建 實現步驟 打開 antd/Layout 布局組件文檔&#xff0c;找到示例&#xff1a;頂部-側邊布局-通欄拷貝示例代碼到我們的 Layout 頁面中分析并調整頁面布局 代碼實現 pages/Layout/index.js import { Layout, Menu, Popconfirm } from antd impor…

計算機視覺算法實戰——實時車輛檢測和分類(主頁有相關源碼)

?個人主頁歡迎您的訪問 ?期待您的三連 ? ?個人主頁歡迎您的訪問 ?期待您的三連 ? ?個人主頁歡迎您的訪問 ?期待您的三連? ? ?????????????????? 1. 領域介紹?? 實時車輛檢測和分類是計算機視覺中的一個重要應用領域&#xff0c;旨在從視頻流或…

使用 selenium-webdriver 開發 Web 自動 UI 測試程序

優缺點 優點 有時候有可能一個改動導致其他的地方的功能失去效果&#xff0c;這樣使用 Web 自動 UI 測試程序可以快速的檢查并定位問題&#xff0c;節省大量的人工驗證時間 缺點 增加了維護成本&#xff0c;如果功能更新過快或者技術更新過快&#xff0c;維護成本也會隨之提高…

性能測試工具Jmeter分布式運行

性能測試工具JMeter的分布式執行是一種用于增強壓力測試能力的技術方案&#xff0c;它允許用戶通過多臺機器來共同完成同一個測試計劃的執行。這種方式特別適用于需要模擬成百上千甚至上萬用戶并發訪問的情況&#xff0c;當單臺機器由于硬件資源&#xff08;如CPU、內存、網絡I…

彌散張量分析開源軟件 DSI Studio 簡體中文漢化版可以下載了

網址&#xff1a; (63條消息) DSIStudio簡體中文漢化版(2022年7月)-算法與數據結構文檔類資源-CSDN文庫

移動云自研云原生數據庫入圍國采!

近日&#xff0c;中央國家機關2024年度事務型數據庫軟件框架協議聯合征集采購項目產品名單正式公布&#xff0c;移動云自主研發的云原生數據庫產品順利入圍。這一成就不僅彰顯了移動云在數據庫領域深耕多年造就的領先技術優勢&#xff0c;更標志著國家權威評審機構對移動云在數…

在vscode中使用R-1

參考我的上一篇博客&#xff1a; https://blog.csdn.net/weixin_62528784/article/details/145092632?spm1001.2014.3001.5501 這篇內容實際上就是上一篇博客的后續承接&#xff0c;既然都在vscode的jupyter中使用R了&#xff0c;實際上其實也能夠直接在vscode中原生使用R的編…

【Block總結】掩碼窗口自注意力 (M-WSA)

摘要 論文鏈接&#xff1a;https://arxiv.org/pdf/2404.07846 論文標題&#xff1a;Transformer-Based Blind-Spot Network for Self-Supervised Image Denoising Masked Window-Based Self-Attention (M-WSA) 是一種新穎的自注意力機制&#xff0c;旨在解決傳統自注意力方法在…

【Linux】統信UOS服務器安裝MySQL8.0(RPM)

目錄 一、下載安裝包 二、安裝MySQL 2.1hive適配 2.2ranger適配 3.2DolphinScheduler適配 一、下載安裝包 官網下載安裝包&#xff1a;MySQL :: MySQL Downloads 選擇社區版本下載 點擊MySQL Community Server 選擇對應系統的MySQL版本號 統信1060a 操作系統對應 redhat8…

小白:react antd 搭建框架關于 RangePicker DatePicker 時間組件使用記錄 2

文章目錄 一、 關于 RangePicker 組件返回的moment 方法示例 一、 關于 RangePicker 組件返回的moment 方法示例 moment方法中日后開發有用的方法如下&#xff1a; form.getFieldsValue().date[0].weeksInWeekYear(),form.getFieldsValue().date[0].zoneName(), form.getFiel…

Jenkins簡單的安裝運行

一、下載 官網下載&#xff1a;https://www.jenkins.io/download/ 清華大學開源軟件鏡像站&#xff1a;https://mirrors.tuna.tsinghua.edu.cn/jenkins/ 官網資料豐富&#xff0c;介紹了各種平臺安裝以及下載。安裝簡單&#xff0c;按照說明來就行。下面我介紹一個非常簡單的…

【CSS】HTML頁面定位CSS - position 屬性 relative 、absolute、fixed 、sticky

目錄 relative 相對定位 absolute 絕對定位 fixed 固定定位 sticky 粘性定位 position&#xff1a;relative 、absolute、fixed 、sticky &#xff08;四選一&#xff09; top&#xff1a;距離上面的像素 bottom&#xff1a;距離底部的像素 left&#xff1a;距離左邊的像素…

網絡安全 | WAF防護開通流程與技術原理詳解

關注&#xff1a;CodingTechWork 引言 隨著互聯網安全形勢的日益嚴峻&#xff0c;Web應用防火墻&#xff08;WAF, Web Application Firewall&#xff09;逐漸成為網站和應用的標準防護措施。WAF能夠有效識別和防止如SQL注入、跨站腳本攻擊&#xff08;XSS&#xff09;、惡意流…

小結:路由器和交換機的指令對比

路由器和交換機的指令有一定的相似性&#xff0c;但也有明顯的區別。以下是兩者指令的對比和主要差異&#xff1a; 相似之處 基本操作 兩者都支持類似的基本管理命令&#xff0c;比如&#xff1a; 進入系統視圖&#xff1a;system-view查看當前配置&#xff1a;display current…