redis常見知識和常用命令

2021-10-01 21:24:29 字數 4857 閱讀 1594

今天簡單總結一下redis 常用命令

redis 常用資料結構

string:字串型別是redis最基礎的資料結構,首先鍵是字串型別,而且其他幾種結構都是在字串型別基礎上構建的

string特性

但最大不能超過512m;

高效的計算字串長度(時間複雜度為o(1));

二進位制安全;

高效的追加字串操作;

string常見命令操作

set key value [expiration ex seconds|px milliseconds]

[nx|xx]

#命令格式

set name ccbobe

setnx name bobe

setex key seconds value # 設定key 值為value 並設定過期時間為 seconds 秒

例如:setex name 20 ccbobe

mget key [key ...]

#批處理獲取多key

get key #獲取key 鍵的value值

get name

setnx key value #如果key存在則不發生set,否則設定 key的值為value

set 集合 :

set 是 string 型別的無序集合。集合成員是唯一的,集合中不能出現重複的資料

集合中最大的成員數為 2^32 - 1 (4294967295, 每個集合可儲存40多億個成員)

常用命令操作

向set 集合中新增元素

sadd key member [member …]

查詢集合中有幾個元素

scard key 時間複雜度 o(1)

smembers key
列舉set集合中元素

sismember key member
判斷 member 元素是否是集合 key 的成員(存在返回1 否則返回0)

spop key
移除並返回集合中的乙個隨機元素

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

srem key member [ member ]

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

sorted set: 有序集合

redis有序集合和集合一樣也是string型別元素的集合,且不允許重複的成員。

不同的是每個元素都會關聯乙個double型別的分數。redis正是通過分數來為集合中的成員進行從小到大的排序。

有序集合的成員是唯一的,但分數(score)卻可以重複。

集合是通過雜湊表實現的,所以新增,刪除,查詢的複雜度都是o(1)。 集合中最大的成員數為 2^32 - 1 (4294967295, 每個集合可儲存40多億個成員)。

zadd key [nx|xx] [ch] [incr] score member [score member ...]
向有序集合新增乙個或多個成員,或者更新已存在成員的分數

zcard key
獲取有序集合的成員數

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

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

zrem key member [member ...]
移除有序集合中的乙個或多個成員

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

hash:雜湊

hset key field value
將雜湊表 key 中的字段 field 的值設為 value 。

hdel key field1 [field2]
刪除乙個或多個雜湊表字段

hexists key field
檢視雜湊表 key 中,指定的字段是否存在。

hlen key
獲取雜湊表中字段的數量

hvals key
獲取雜湊表中所有值

hsetnx key field value
只有在字段 field 不存在時,設定雜湊表字段的值。

list:列表

lpush key value [value ...]
將乙個或多個值插入到列表頭部

lpop key
移出並獲取列表的第乙個元素

blpop key [key ...] timeout
移出並獲取列表的第乙個元素, 如果列表沒有元素會阻塞列表直到等待超時或發現可彈出元素為止。

brpop key [key ...] timeout
移出並獲取列表的最後乙個元素, 如果列表沒有元素會阻塞列表直到等待超時或發現可彈出元素為止。

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

linsert key before|after pivot value
在列表的元素前或者後插入元素

lrem key count value
移除列表元素:

count > 0 : 從表頭開始向表尾搜尋,移除與 value 相等的元素,數量為 count 。

count < 0 : 從表尾開始向表頭搜尋,移除與 value 相等的元素,數量為 count 的絕對值。

count = 0 : 移除表中所有與 value 相等的值。

lrange key start stop
獲取列表指定範圍內的元素

lset key index value
通過索引設定列表元素的值

其他常用命令

redis 事務

multi

// 事務命令佇列

exec

它先以 multi 開始乙個事務, 然後將多個命令入隊到事務中, 最後由 exec 命令觸發事務, 一併執行事務中的所有命令。

操作示例:

127.0.0.1:6379> multi

ok127.0.0.1:6379>

set name ccbobe

queued

127.0.0.1:6379> lpush list 1 2 3

queued

127.0.0.1:6379>

exec

1) ok

2)(integer) 12

redis 發布訂閱

redis 發布訂閱(pub/sub)是一種訊息通訊模式:傳送者(pub)傳送訊息,訂閱者(sub)接收訊息。

發布命令

publish channel message

消費訊息

subscribe channel [channel …]

# 發布訊息

127.0.0.1:6379> publish chat hello

(integer) 1

# 消費訂閱訊息

127.0.0.1:6379> subscribe chat

reading messages... (press ctrl-c to quit)

1)"subscribe"

2)"chat"

3)(integer) 1

1)"message"

2)"chat"

3)"hello"

redis hyperloglog 演算法

hyperloglog 是用來做基數統計的演算法,hyperloglog 的優點是,在輸入元素的數量或者體積非常非常大時,計算基數所需的空間總是固定 的、並且是很小的。

每個 hyperloglog 鍵只需要花費 12 kb 記憶體,就可以計算接近 2^64 個不同元素的基 數。

# 向其中hp資料結構中新增元素

pfadd key element [element ...]

如果至少更改了1個hyperloglog內部暫存器,則為1。否則為0

pfcount key [key ...]

統計獲取key 中元素個數

pfmerge destkey sourcekey [sourcekey ...]

pfmerge 命令將多個 hyperloglog 合併為乙個hyperloglog ,合併後的hyperloglog的基數估算值是通過對所有給定hyperloglog 行並集計算得出的。

Redis常用命令

1 keys 返回滿足給定pattern的所有key。例如 keys 返回所有鍵 2 exists 確認乙個key是否存在。例如 exists age 3 del 刪除指定key。例如 del age 4 expire 設定乙個key的過期時間。例如 expire age 100 單位 秒 5 pe...

redis常用命令

redis cli p 6079 登陸redis,埠為6079 auth psssword 如果redis帶密碼,則執行上邊一行,password替換為你的密碼。src redis cli p 6380 keys wei xargs src redis cli p 6380 del 批量刪除埠為63...

Redis常用命令

啟動 redis 服務 src redis server或者src redis server redis.conf src redis server redis.conf 1 log.log 2 errlog.log 1為標準輸出,2為錯誤輸出 將 redis 作為 linux 服務隨機啟動 vi ...