redis學習筆記

2021-07-16 21:50:10 字數 3973 閱讀 5351

redis的操作是基於key和value來進行的,本文就對key的相關操作進行描述,以便參考。

示例:1. 

keys/rename/del/exists/move/renamenx:

#在shell命令列下啟動redis客戶端工具。

/> redis-cli

#清空當前選擇的資料庫,以便於對後面示例的理解。

redis 127.0.0.1:6379> flushdb

ok#新增string型別的模擬資料。

redis 127.0.0.1:6379> set mykey 2

okredis 127.0.0.1:6379> set mykey2 "hello"

ok#新增set型別的模擬資料。

redis 127.0.0.1:6379> sadd mysetkey 1 2 3

(integer) 3

#新增hash型別的模擬資料。

redis 127.0.0.1:6379> hset mmtest username "stephen"

(integer) 1

#根據引數中的模式,獲取當前資料庫中符合該模式的所有key,從輸出可以看出,該命令在執行時並不區分與key關聯的value型別。

redis 127.0.0.1:6379> keys my*

1) "mysetkey"

2) "mykey"

3) "mykey2"

#刪除了兩個keys。

redis 127.0.0.1:6379> del mykey mykey2

(integer) 2

#檢視一下剛剛刪除的key是否還存在,從返回結果看,mykey確實已經刪除了。

redis 127.0.0.1:6379> exists mykey

(integer) 0

#檢視一下沒有刪除的key,以和上面的命令結果進行比較。

redis 127.0.0.1:6379> exists mysetkey

(integer) 1

#將當前資料庫中的mysetkey鍵移入到id為1的資料庫中,從結果可以看出已經移動成功。

redis 127.0.0.1:6379> move mysetkey 1

(integer) 1

#開啟id為1的資料庫。

redis 127.0.0.1:6379>select 1

ok#檢視一下剛剛移動過來的key是否存在,從返回結果看已經存在了。

redis 127.0.0.1:6379[1]> exists mysetkey

(integer) 1

#在重新開啟id為0的預設資料庫。

redis 127.0.0.1:6379[1]> select 0

ok#檢視一下剛剛移走的key是否已經不存在,從返回結果看已經移走。

redis 127.0.0.1:6379> exists mysetkey

(integer) 0

#準備新的測試資料。    

redis 127.0.0.1:6379> set mykey "hello"

ok#將mykey改名為mykey1

redis 127.0.0.1:6379>rename mykey mykey1

ok#由於mykey已經被重新命名,再次獲取將返回nil。

redis 127.0.0.1:6379> get mykey

(nil)

#通過新的鍵名獲取。

redis 127.0.0.1:6379> get mykey1

"hello"

#由於mykey已經不存在了,所以返回錯誤資訊。

redis 127.0.0.1:6379> rename mykey mykey1

(error) err no such key

#為renamenx準備測試key

redis 127.0.0.1:6379> set oldkey "hello"

okredis 127.0.0.1:6379> set newkey "world"

ok#由於newkey已經存在,因此該命令未能成功執行。

redis 127.0.0.1:6379> renamenx oldkey newkey

(integer) 0

#檢視newkey的值,發現它也沒有被renamenx覆蓋。

redis 127.0.0.1:6379> get newkey

"world"

2. persist/expire/expireat/ttl:   

#為後面的示例準備的測試資料。

redis 127.0.0.1:6379> set mykey "hello"

ok#將該鍵的超時設定為100秒。

redis 127.0.0.1:6379> expire mykey 100

(integer) 1

#通過ttl命令檢視一下還剩下多少秒。

redis 127.0.0.1:6379> ttl mykey

(integer) 97

#立刻執行persist命令,該存在超時的鍵變成持久化的鍵,即將該key的超時去掉。

redis 127.0.0.1:6379> persist mykey

(integer) 1

#ttl的返回值告訴我們,該鍵已經沒有超時了。

redis 127.0.0.1:6379> ttl mykey

(integer) -1

#為後面的expire命令準備資料。

redis 127.0.0.1:6379>del mykey

(integer) 1

redis 127.0.0.1:6379> set mykey "hello"

ok#設定該鍵的超時被100秒。

redis 127.0.0.1:6379> expire mykey 100

(integer) 1

#用ttl命令看一下當前還剩下多少秒,從結果中可以看出還剩下96秒。

redis 127.0.0.1:6379> ttl mykey

(integer) 96

#重新更新該鍵的超時時間為20秒,從返回值可以看出該命令執行成功。

redis 127.0.0.1:6379> expire mykey 20

(integer) 1

#再用ttl確認一下,從結果中可以看出果然被更新了。

redis 127.0.0.1:6379> ttl mykey

(integer) 17

#立刻更新該鍵的值,以使其超時無效。

redis 127.0.0.1:6379> set mykey "world"

ok#從ttl的結果可以看出,在上一條修改該鍵的命令執行後,該鍵的超時也無效了。

redis 127.0.0.1:6379> ttl mykey

(integer) -1

3. type/randomkey/sort:

#由於mm鍵在資料庫中不存在,因此該命令返回none。

redis 127.0.0.1:6379> type mm

none

#mykey的值是字串型別,因此返回string。

redis 127.0.0.1:6379> type mykey

string

#準備乙個值是set型別的鍵。

redis 127.0.0.1:6379> sadd mysetkey 1 2

(integer) 2

#mysetkey的鍵是set,因此返回字串set。

redis 127.0.0.1:6379> type mysetkey

set#返回資料庫中的任意鍵。

redis 127.0.0.1:6379> randomkey

"oldkey"

#清空當前開啟的資料庫。

redis 127.0.0.1:6379> flushdb

ok#由於沒有資料了,因此返回nil。

redis 127.0.0.1:6379> randomkey

(nil)

redis 學習筆記

本文寫作源於最近產品中部分功能用到了redis redis在功能上是乙個與memecache類似的軟體,但它比memecache提供了更強大的功能。redis本質上是乙個key value型別的記憶體資料庫。其value可以是string,list,set,sorted set,hash。很多地方都...

redis學習筆記

1.redis的無序集合 sadd命令產生乙個無序集合 smembers檢視集合元素 sismember用於檢視集合是否存在,匹配項包括集合名和元素個數。匹配成功返回1,匹配失敗返回0 2.有序集合 zadd 生成乙個有序集合。zrange檢視正序的集合,zrevrange檢視反序的集合 set和g...

redis學習筆記

redis啟動伺服器和客戶端的相關命令 string型別 乙個key對應乙個value set key value 比如 set name geyule setnx 如果key存在返回0,nx表示not exist setex 指定有效期 setrange 替換 setrange key n val...