Redis之KEY操作命令 【學習筆記】

來源:互聯網
上載者:User

標籤:des   http   io   ar   color   os   使用   sp   on   

開啟服務

$sudo ./src/redis-server &

鍵操作

*定義並賦值變數蘋果的數量
$ redis-cli set dangcheng::apple::count 152
OK

*擷取剛才的蘋果數量
$ redis-cli get dangcheng::apple::count
“152”

*當蘋果數量增加1 incr關鍵字實際上是increment的簡寫
$ redis-cli incr dangcheng::apple::count
(integer) 153

*當蘋果來了一盒,而這盒蘋果共7個則我們需要加上指定數量關鍵字是incrby
$ redis-cli incrby dangcheng::apple::count 7
(integer) 160

*如果set一個php數組 我們可以使用php函數serialize將對象序列化後寫入
$age=array(“Bill”=>“35”,“Steve”=>“37”,“Peter”=>“43”);
$age_str = seriallze($age);//將這個結果寫入redias中
$age = unseriallze($age_str);//get擷取後我們可以使用unseriallze還原序列化把其轉換為PHP對象

EXISTS key 是否存在

存在返回 1
$ redis-cli exists dangcheng::apple::count
(integer) 1
不存在返回 0
$ redis-cli exists dangcheng::apple::color
(integer) 0

DUMP序列化值 不包含任何生命週期資訊

不存在返回nil
$ redis-cli dump dangcheng::apple::color
(nil)
返回序列化結果
$redis-cli dump dangcheng::apple::count
“\x00\xc1\xa0\x00\x06\x00\xb0t6\xdaT\x99#\xa2”

expire 和 ttl 設定生命期和查看剩餘時間

TTL命令是查詢存留時間剩餘,不設定存留時間返回-1代表永久
$ redis-cli ttl dangcheng::apple::count
(integer) -1
用expire設定存留時間剩餘366秒
$ redis-cli expire dangcheng::apple::count 366
(integer) 1
寫這段的過程中消耗了127秒
$ redis-cli ttl dangcheng::apple::count
(integer) 239
PS1:此外還有PEXPIRE命令與expire功能是一樣的,只是設定是以毫秒為單位
*PS2:此外還有PTTL命令與TTL功能是一樣的,只是顯示是以毫秒為單位

expireat

此命令不同於expire去設定剩餘,而是直接設定當前key什麼時候死亡 而參數是linux時間戳記表示
PS:pexpireat 命令與expireat命令等效,區別是單位精確到毫秒數的unix時間戳記

keys 尋找所有符合給定模式 pattern 的 key

KEYS * 匹配資料庫中所有 key 。
KEYS h?llo 匹配 hello , hallo 和 hxllo 等。
KEYS hllo 匹配 hllo 和 heeeeello 等。
KEYS h[ae]llo 匹配 hello 和 hallo ,但不匹配 hillo 。
特殊符號用 \ 隔開
$ redis-cli keys dangcheng::*
1) “dangcheng::apple::color”
2) “dangcheng::apple::count”

migrate 將當前redis執行個體中的對象遷移到另一個host下的對應連接埠的執行個體【資料的遷移】

在本機8888連接埠建立另一個redis服務
$ redis-server –port 8888 &
[1] 13086
原有執行個體中存在
$ redis-cli
127.0.0.1:6379> keys dangcheng::*
1) “dangcheng::apple::color”
2) “dangcheng::apple::count”

8888連接埠下的執行個體中找不到資料
$ redis-cli -p 8888
127.0.0.1:8888> keys dangcheng

(empty list or set)
將源執行個體中的資料count傳入8888連接埠的執行個體
127.0.0.1:6379> migrate 127.0.0.1 8888 dangcheng::apple::count 0 -1
OK
源執行個體中的count不見了,證明傳輸源會被刪掉
127.0.0.1:6379> keys dangcheng
1) “dangcheng::apple::color”
在8888連接埠下的執行個體中查到了
127.0.0.1:8888> get dangcheng::apple::count
“25”

move 將資料從一個db空間中遷移到另一個db空間中

選擇index0的dbspace
127.0.0.1:6379> select 0
OK
127.0.0.1:6379> keys *
1) “dangcheng::apple::color”
2) “test::first”
移動到index1的dbspace
127.0.0.1:6379> move test::first 1
(integer) 1
127.0.0.1:6379> keys *
1) “dangcheng::apple::color”
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> keys *
1) “test::first”
我們看到了的確在dbsopace1中查詢到了
127.0.0.1:6379[1]> get test::first
“556779”
PS:要注意的是如果target db 有相同的key 則移動不會成功

OBJECT 對象操作

*返回給定 key 引用所儲存的值的次數。此命令主要用於除錯
127.0.0.1:6379[1]> object refcount test::first
(integer) 1

  • 返回給定 key 鎖儲存的值所使用的內部表示(representation)。
    127.0.0.1:6379[1]> object encoding test::first
    “int”
    127.0.0.1:6379[1]> set str ‘hello redis!‘
    OK
    127.0.0.1:6379[1]> object encoding str
    “raw”
    返回給定 key 自儲存以來的空閑時間(idle, 沒有被讀取也沒有被寫入),以秒為單位
    127.0.0.1:6379[1]> object idletime str
    (integer) 236
    對象可以以多種方式編碼:
    字串可以被編碼為 raw (一般字串)或 int (為了節約記憶體,Redis 會將字串表示的 64 位元有符號整數編碼為整數來進行儲存)。
    列表可以被編碼為 ziplist 或 linkedlist 。 ziplist 是為節約大小較小的列資料表空間而作的特殊表示。
    集合可以被編碼為 intset 或者 hashtable 。 intset 是只儲存數位小集合的特殊表示。
    雜湊表可以編碼為 zipmap 或者 hashtable 。 zipmap 是小雜湊表的特殊表示。
    *有序集合可以被編碼為 ziplist 或者 skiplist 格式。 ziplist 用於表示小的有序集合,而 skiplist 則用於表示任何大小的有序集合。persist 將一個key的逾時時間變為永久 使用expire 給對象設定存留時間
    127.0.0.1:6379[1]> expire test::first 3600
    (integer) 1
    查詢剩餘時間
    127.0.0.1:6379[1]> ttl test::first
    (integer) 3597
    127.0.0.1:6379[1]> persist test::first
    (integer) 1
    *的確變為了持久化key
    127.0.0.1:6379[1]> ttl test::first
    (integer) -1

*randomkey 隨機抽取一個key
127.0.0.1:6379> randomkey
“dangcheng::apple::color2”
127.0.0.1:6379> randomkey
“dangcheng::apple::color”
127.0.0.1:6379> randomkey
“dangcheng::apple::color1”

mset[multi set] 大量設定

127.0.0.1:8888> mset a ‘aaa‘ b ‘bbb‘ c ‘cccc‘
OK
查詢所有key
127.0.0.1:8888> keys *
1) “dangcheng::apple::count”
2) “o”
3) “a”
4) “b”
5) “c”
清空dbspace
127.0.0.1:8888> flushdb
OK
*查看所有,很顯然沒有了
127.0.0.1:8888> keys *
(empty list or set)

rename 修改key名字

127.0.0.1:6379> set a ‘aaa‘
OK
127.0.0.1:6379> rename a b
OK
127.0.0.1:6379> get a
(nil)
127.0.0.1:6379> get b
“aaa”

renamenx 目標key一旦已存在不會被覆蓋 只有空的key才能成為target

127.0.0.1:6379> renamenx b c
(integer) 0
127.0.0.1:6379> get c
“66”
127.0.0.1:6379> get b
“bb”
127.0.0.1:6379> renamenx b d
(integer) 1
127.0.0.1:6379> get d
“bb”
127.0.0.1:6379> getb
(error) ERR unknown command ‘getb‘
127.0.0.1:6379> get b
(nil)

dump&restore 序列化和還原序列化

127.0.0.1:6379> dump c
“\x00\xc0B\x06\x00\xac\x15Y\x1aO127.0.0.1:6379> get c
“66”
序列化c中的值
127.0.0.1:6379> dump c
“\x00\xc0B\x06\x00\xac\x15Y\x1aO
通過還原序列化一個值建立新的鍵 newc
127.0.0.1:6379> restore newc 0 “\x00\xc0B\x06\x00\xac\x15Y\x1aOOK
127.0.0.1:6379> get newc
“66”

sort [asc|desc] [alpha][limit]給一個列表進行排序 預設為asc方式,使用alpha方式可以給字串進行排序,此外還可以使用limit進行範圍限制

*lpush 是用於建立一個列表的命令
127.0.0.1:6379> lpush sort_list 15 2 45 20 16 3 7 9
(integer) 8
127.0.0.1:6379> sort sort_list
1) “2”
2) “3”
3) “7”
4) “9”
5) “15”
6) “16”
7) “20”
8) “45”
127.0.0.1:6379> sort sort_list asc
1) “2”
2) “3”
3) “7”
4) “9”
5) “15”
6) “16”
7) “20”
8) “45”
127.0.0.1:6379> sort sort_list desc
1) “45”
2) “20”
3) “16”
4) “15”
5) “9”
6) “7”
7) “3”
8) “2”

type 查看key的資料類型

*@return none (key不存在) |string (字串)|list (列表)|set (集合)|zset (有序集)|hash (雜湊表)
127.0.0.1:6379> type sort_list
list
127.0.0.1:6379> type c
string

Redis之KEY操作命令 【學習筆記】

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.