標籤: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操作命令 【學習筆記】