標籤:
--------------------------------------------------------------------------------------
String(字串):最簡單的資料類型。
set age 18
( set age 18 ex 5 ) # 設定到期時間5秒
setex age 5 18 # 效果同上, 使用 ttl age 可以查看剩餘有效時間
psetex age 5000 18 # 同上,只是以毫秒為單位設定key的到期時間
( set age 18 nx ) # 如果age鍵不存在才設定
setnx age 18 # 效果同上
get age
( set email chenw(a)59store.com )
setrange email 9 live.com # 從第6個位置開始用value值替換鍵的值,得到的結果是 [email protected],後面多出的不會替換
mset key1 a key2 b # 一次性設定一個或多個值,使用get擷取
msetnx key1 c # 如果鍵不存在,設定一個或多個值
getset email farwish(a)live.com # 鍵設為指定值,並返回舊值
getrange email 3 6 # 返回key從3到6的子字串,得到wish
mget key1 key2 # 返回所有給出的key的值
incr age # 對鍵的值自增1,返回新值;鍵不存在時則設定
incrby age 3 # 對鍵的值自增指定值(可以是負值),返回新值;鍵不存在時則設定
incrbyfloat age 0.5 # 為key的值加上浮點數增量值
decr age # 自減1
decrby age 3 # 自減指定值
append email .cn # 將value追加到原索引值末尾
strlen email # 返回鍵儲存的字串長度
bitcount email # 計算給定字串中,被設定為 1 的位元位的數量
bitop operation deskkey key1 key2 # 對一個或多個儲存二進位位的字串 key 進行位元操作,並將結果儲存到 destkey 上
setbit key offset value # 對 key 所儲存的字串值,設定或清除指定位移量上的位(bit)
getbit key offset # 對 key 所儲存的字串值,擷取指定位移量上的位(bit)
Hash(雜湊表):適用於儲存物件,相較於儲存單個string,佔用更少的記憶體。
hset user:1 name farwish # 將hash表中name值設為farwish,已存在時覆蓋
hget user:1 name # 取出hash表中name值
hsetnx user:1 name # 如果不存在則設定,存在則返回0
hmset user:2 name weichen age 20 # 同時設定多個值到hash表
hmget user:2 name age # 批量擷取多個欄位的值
hincrby user:2 age 5 # 為hash表中欄位age增加5
hincrbyfloat user:2 age 0.5 # 允為hash表中欄位增加浮點值
hexists user:2 name # 判斷hash表中某個欄位是否存在
hlen user:2 # 返回hash表中欄位的數量
hdel user:2 age # 刪除hash中某個欄位
hkeys user:2 # 返回hash表中所有的欄位
hvals user:2 # 返回hash表中所有的值
hgetall user:1 # 返回hash表中,所有的欄位和值
hscan # 迭代雜湊鍵中的索引值對,用法同scan
List(列表):鏈表結構,每個子項目都是string類型的雙向鏈表;通過push、pop從鏈表頭部尾部添加刪除元素,既可以作為棧(先進後出),也可以作為隊列(先進先出)。
lpush mylist a b c # 在鏈表頭部壓入一個或多個value,返回元素個數,如果key不存在,則建立並執行lpush操作
lpushx nolist a # 與lpush的不同之處在於,(1) 只能壓入一個value (2) 當key不存在時,什麼也不做
lrange mylist 0 -1 # 返回鏈表中指定區間的元素,0表示第一個,-1表示最後一個,-2表示倒數第二個
rpush mylist A # 在鏈表尾部壓入一個或多個value;c b a A
rpushx mylist # 與rpush的不同之處在於,(1) 只能壓入一個value (2) 當key不存在時,什麼也不做
linsert mylist before a B # 在a之前插入B到鏈表中;c b B a A
( linsert mylist after A B ) # 在A之後插入B到鏈表中;c b B a A B
lset mylist 0 C # 將mylist下標為0的值設為C;C b B a A B
lrem mylist 2 B # (remove)刪除2個列表中與B相等的元素,如果數量為0表示移除所有B,返回刪除成功的數量;C b a A
ltrim mylist 1 -1 # 保留列表內指定區間範圍的元素,其餘刪除;b a A
lpop mylist # 刪除並返回列表的頭元素;a A
rpop mylist # 刪除並返回列表的尾部元素;a
rpoplpush mylist mylist # 從尾彈出一個元素並從頭壓入;a
( lpush list1 A B C; rpoplpush list1 mylist ) 從list1尾部彈出元素並壓入mylist頭部;A a
lindex mylist 1 # 返回列表中下標為1的元素,不存在返回nil
llen mylist # 返回列表中元素個數;2
blpop key timeoutSeconds # lpop命令的阻塞版本,列表內沒有元素彈出時串連將阻塞,直到等待逾時或發現可彈出元素為止;給定多個key參數時,blpop按給定key參數排列順序一次檢查;相同的key可以被多個用戶端同時阻塞;key為空白返回nil,否則返回彈出元素的key和被彈出的元素
( blpop list2 5 ) 由於list2不存在,5秒後將逾時;
( blpop list2 mylist 2 ) 開始在list2處阻塞,直到mylist,彈出A;
brpop key timeout # 同blpop
brpoplpush list1 a 5 # rpoplpush的阻塞版本,列表非空時,表現和rpoplush一樣,列表為空白時,brpoplpush將阻塞串連,直到逾時或有另一用戶端執行lpush或rpush命令為止
Set(集合): String類型的無序集合,通過hash table實現,對集合可以取並集、交集、差集。
sadd sns crazysns.cn farwish.com # 將一個或多個元素添加到集合sns中,如果元素已經存在,則忽略
smembers sns # 返回集合中所有成員
srem sns crazysns.cn # 移除集合中一個或多個元素,沒有則忽略,非集合則報錯;返回被成功移除的數量
( sadd sns weibo.com, sadd sns qq.com, sadd sns renren.com, sadd sns fb.com )
spop sns # 移除並返回集合中的一個隨機元素
( sadd sns2 qq.com t.com )
sdiff sns sns2 # 取差集,返回sns不在sns2中的元素,以第一個key為標準
sdiffstore sns3 sns sns2 # 與sdiff類似,只是將sns和sns2的差集儲存到sns3,返回成功儲存的數量
sinter sns sns2 # 取交集(intersect),返回交集元素列表
sinterstore sns4 sns sns2 # 與sinter類似,只是將sns和sns2的交集儲存到sns4,返回成功儲存的數量
sunion sns sns2 # 取並集,返回全部成員
sunionstore sns5 sns sns2 # 與sunion類似,只是將sns和sns2的交集儲存到sns5,返回成功儲存的數量
smove sns sns2 weibo.com # 把sns中的元素weibo.com移動到sns2中,成功返回1
scard sns # 返回集合的元素個數
sismember sns qq.com # 判斷qq.com是否為sns的元素,是返回1,不是返回0
srandmember sns # 隨機返回一個元素
scan 0 # 迭代當前資料庫中的資料庫鍵,返回一部分集合,如果全部列出,則返回0和集合列表;如果只列出一部分,則返回下一個遊標的值和當前的集合列表;相當於分頁或linux的more命令,一次只查看部分,scan以遊標記錄位置;適宜資料量大時,代替keys或smembers,不過會存在資料已顯示或更新,只能保證當前顯示的資料準確。
SortedSet(有序集合):Set的升級版,在set的基礎上增加順序屬性,類似加了一列sort欄位
zadd company 1 apple 2 google 3 ms # 將一個或多個元素及順序值加入集合,若某個元素存在則只更新順序值
zrange company 0 -1 withscores # 顯示集合中第一個到最後一個的元素和順序號,不加withscores則不顯示順序號
zrem company apple ms # 刪除有序集合中一個或多個元素,成功返回被刪除的數量,不包括被忽略成員
zincrby company 3 google # 為有序集合成員順序號加上增量值,返回新順序值
( zadd company 3 twitter )
zrank company google # 按順序值從小到大排列,返回有序集合中指定元素的索引;1
( zadd company ebay )
( zrank company google ) # 2
zrevrank company google # 按順序值從大到小排列,返回有序集合中指定元素的索引;0
zrevrange company 0 -1 withscores # zrange的降序排列
zrangebyscore company 3 4 # 返回從小到大指定順序區間內的元素
zrevrangebyscore company 4 3 # 返回從大到小指定順序區間內的元素
zcount company 3 4 # 返回指定順序區間內的元素數量
zcard company # 返回所有有序集合的個數
zremrangebyrank company 2 2 # 刪除有序集合中索引區間內的成員
zremrangebyscore company 4 5 # 刪除有序集合中順序區間內的成員
zscore company google # 取有序集合成員的順序號
( zadd cp gg )
zunionstore all 2 company cp # 將2個有序集合company和cp的並集,儲存到all集合中
( zunionstore all 2 company cp weight 1 3 ) # weight用於給對應的集合加上因子,即cp有序集合中的元素順序號都乘以3
( zadd min 10 a; zadd min 20 b; zadd min 30 c; )
( zadd max 40 a; zadd max 50 b; zadd max 60 c; )
( zadd mid 70 a; zadd mid 80 b; zadd mid 90 c; )
zinterstore sum 2 min max # 計算給定有序集合的交集,2為集合的數量,交集儲存到sum
( zinterstore sum2 3 min max mid ) # 如果數量不正確也會報錯
zscan # 用法同scan
( zadd myzset 0 b 0 a 0 d 0 c 0 e 0 f )
zrangebylex myset - + # 對有序集合在指定的範圍內的元素排序,如果score值相同,則根據成員的字典序排序;- 表示負無窮,+ 表示正無窮,( 表示開區間,[ 表示閉區間
zlexcount myzset - + # 返回有序集合介於-到+之間的成員的數量;6
zremrangebylex myzset [a (c # 移除有續集合介於[a 到(c 之間的成員,返回成功移除的數量;2
------------------------------------- farwish.com ---------------------------------------
鍵的相關命令
keys * # 返回符合匹配模式的所有鍵
(keys sns*)
exists mylist # 檢查某個key是否存在,存在返回1,不存在返回0
del mylist sns # 刪除一個或多個key,成功返回刪除的數量,失敗返回0
expire sns 5 # 設定一個key的到期時間(秒)
pexpire sns 5000 # 功能同上(以毫秒計算到期時間)
pexpireat sns 1231312331 # 以毫秒為單位設定key到期的unix時間戳記
persist sns # 移除給定key的到期時間,即取消到期設定;此時ttl sns返回-1表示已成功移除到期時間
ttl sns # 查看一個key的剩餘存留時間(秒),-1表示到期
pttl sns # 以毫秒為單位返回key的剩餘存留時間
( select 0 ) # 選擇0資料庫,預設有0-15共16個資料庫
move sns 1 # 將sns移動到資料庫1;
radomkey # 返回一個隨機的key
rename min miin # 重新命名一個key;成功返回1
renamenx min max # 僅當新的key名不存在時,才執行重新命名;已存在返回0
type myzset # 返回一個key儲存的值的類型;zset
scan # 迭代當前資料庫中的資料庫鍵,返回一部分集合; 詳細見上面String類型部分
dump myzset # 序列化給定的key,返回被序列化的值
restore myzset-again 0 "\xoc\x1" # 還原序列化給定的序列化值為redis的鍵, restore key ttl serialized_value (ttl 為毫秒,0則不設定到期時間)
migrate 192.168.1.11 6379 sns 0 1000 # 毫秒逾時時間內將key原子性的從當前執行個體傳送到目標執行個體的指定資料庫上,成功,key出現在目標執行個體上,當前執行個體的key被刪除;只會出現三種結果:遷移成功,遷移失敗,等待逾時;migrate host port key db timeout
object
sort # 返回或儲存所給的 列表、集合、有序集合的key中經過排序的元素;sort預設排序對象是數字,對字串排序需要顯示添加alpah修飾符
( sort [get pattern] [limit] [get pattern] [asc|desc] [store destination] )
( lpush number 1 4 10 3 )
( sort number ) # 1 3 4 10
( sort number desc ) # 10 4 3 1
( lpush site www.baidu.com www.z.cn www.farwish.com )
# 使用alpha修飾符
( sort site alpha ) # www.baidu.com www.farwish.com www.z.cn
# 使用limit修飾符
( sort number limit 0 2 ) # 1 3
( sort number limit 3 4 ) # 10
# 使用外部key進行排序;
( lpush uid 1 )
( set user_name_1 user1 )
( set user_level_1 999 )
( lpush uid 2 )
( set user_name_2 user2 )
( set user_level_2 777 )
( lpush uid 3 )
( set user_name_3 user3 )
( set user_level_3 888 )
( lpush uid 4 )
( set user_name_4 user4 )
( set user_level_4 889 )
( sort uid ) # 1 2 3 4
# 通過by選項,讓uid按其他鍵的元素來排序
( sort uid by user_level_* ) # 2 3 4 1 (按level值排序了777 888 889 999)
# 使用get選項,可以根據排序的結果取出相應的索引值
( sort uid get user_name_* ) # user1 user2 user3 user4
# 組合使用by和get,讓排序結果以更直觀的方式顯示
( sort uid by user_level_* get user_name_* ) # user2 user3 user4 user1
# 同時使用多個get選項,擷取多個外部鍵的值,井號可以擷取被排序鍵的值
( sort uid get user_level_* get user_name_* ) # 999 user1 777 user2 888 user3 889 user4
( sort uid get # get user_level_* get user_name_* ) # 1 999 user1 2 777 user2 3 888 user3 4 889 user4
# 擷取外部鍵,但不排序;通過將一個不存在的鍵作為參數傳給by選項,可以讓sort跳過排序操作
( sort uid by user_nick_* get # get user_level_* get user_name_* )
# 將雜湊表作為by和get的參數
( hmset user_info_1 name u1 age 18 level 9 )
( hmset user_info_2 name u2 age 19 level 7 )
( hmset user_info_3 name u3 age 20 level 8 )
( hmset user_info_4 name u4 age 21 level 6 )
( sort uid by user_info_*->level ) # 4 2 3 1
( sort uid by user_info_*->level get user_info_*->name ) # u4 u2 u3 u1
# 儲存排序結果, (可以對排序結果設定expire作為緩衝,這樣可以避免頻繁調用sort,同時避免多個用戶端進行緩衝重建,考慮使用setnx )
( sort number store stored_numbers )
( lrange stored_numbers 0 -1 ) # 1 3 4 10
伺服器相關命令
ping # 檢測redis串連是否有效,正常返回pong
echo ‘message‘ # 列印特定資訊,測試時使用
auth 123456 # 進入用戶端後,輸入密碼使用
select 0 # 選擇指定索引的資料庫,索引從0開始
quit # 退出用戶端串連
dbsize # 返回當前資料庫所有key的數量
info # 返回redis伺服器的各種資訊和統計資料
config get * # 返回運行中redis的配置參數
( config get timeout )
flushdb # 清空當前資料庫所有key
flushall # 清空所有資料庫所有key
Link: http://www.cnblogs.com/farwish/p/4712377.html
@黑眼詩人 <www.farwish.com>
[Redis]Redis的五種資料類型與索引值/伺服器相關命令