redis管理

Redis管理

全局key操作

redis管理

刪 
flushdb             清空當前選擇的數據庫 
del mykey mykey2        刪除了兩個 Keys 
改 
move mysetkey 1         將當前數據庫中的 mysetkey 鍵移入到 ID 爲 1 的數據庫中 
rename mykey mykey1     將 mykey 改名爲 mykey1 
renamenx oldkey newkey  如果 newkey 已經存在,則無效 
expire mykey 100        將該鍵的超時設置爲 100 秒
persist mykey       將該 Key 的超時去掉,變成持久化的鍵 
查 
keys my*            獲取當前數據庫中所有以my開頭的key 
exists mykey        若不存在,返回0;存在返回1 
select 0            打開 ID 爲 0 的數據庫 
ttl mykey           查看存貨時間還剩下多少秒
type mykey          返回mykey對應的值的類型 
randomkey           返回數據庫中的任意鍵

string(字符串)

redis管理

增
set mykey "test"            爲鍵設置新值,並覆蓋原有值
getset mycounter 0              設置值,取值同時進行
setex mykey 10 "hello"          設置指定 Key 的過期時間爲10秒,在存活時間可以獲取value
setnx mykey "hello"             若該鍵不存在,則爲鍵設置新值
mset key3  "zyx"  key4 "xyz"    批量設置鍵
刪
del mykey                   刪除已有鍵
改
append mykey "hello"            若該鍵並不存在,返回當前 Value 的長度
                            該鍵已經存在,返回追加後 Value的長度
incr mykey                  值增加1,若該key不存在,創建key,初始值設爲0,增加後結果爲1
decrby  mykey  5            值減少5
setrange mykey 20 dd            把第21和22個字節,替換爲dd, 超過value長度,自動補0
查  
exists mykey                    判斷該鍵是否存在,存在返回 1,否則返回0
get mykey                   獲取Key對應的value
strlen mykey                獲取指定 Key 的字符長度
ttl mykey                   查看一下指定 Key 的剩餘存活時間(秒數)
getrange mykey 1 20             獲取第2到第20個字節,若20超過value長度,則截取第2個和後面所有的
mget key3 key4                  批量獲取鍵

hash(字典)

redis管理

增
hset myhash field1 "s"    
若字段field1不存在,創建該鍵及與其關聯的Hashes, Hashes中,key爲field1 ,並設value爲s ,若存在會覆蓋原value
hsetnx myhash field1 s    
若字段field1不存在,創建該鍵及與其關聯的Hashes, Hashes中,key爲field1 ,並設value爲s, 若字段field1存在,則無效
hmset myhash field1 "hello" field2 "world       一次性設置多個字段
刪
hdel myhash field1                      刪除 myhash 鍵中字段名爲 field1 的字段
del myhash                          刪除鍵
改  
hincrby myhash field 1                  給field的值加1
查
hget myhash field1                      獲取鍵值爲 myhash,字段爲 field1 的值
hlen myhash                         獲取myhash鍵的字段數量
hexists myhash field1                   判斷 myhash 鍵中是否存在字段名爲 field1 的字段
hmget myhash field1 field2 field3           一次性獲取多個字段
hgetall myhash                          返回 myhash 鍵的所有字段及其值
hkeys myhash                        獲取myhash 鍵中所有字段的名字
hvals myhash                        獲取 myhash 鍵中所有字段的值

list(列表)

redis管理

增 
lpush mykey a b             若key不存在,創建該鍵及與其關聯的List,依次插入a ,b, 若List類型的key存在,則插入value中
lpushx mykey2 e             若key不存在,此命令無效, 若key存在,則插入value中
linsert mykey before a a1   在 a 的前面插入新元素 a1
linsert mykey after e e2    在e 的後面插入新元素 e2
rpush mykey a b             在鏈表尾部先插入b,在插入a
rpushx mykey e              若key存在,在尾部插入e, 若key不存在,則無效
rpoplpush mykey mykey2      將mykey的尾部元素彈出,再插入到mykey2 的頭部(原子性的操作)
刪
del mykey               刪除已有鍵 
lrem mykey 2 a              從頭部開始找,按先後順序,值爲a的元素,刪除數量爲2個,若存在第3個,則不刪除
ltrim mykey 0 2             從頭開始,索引爲0,1,2的3個元素,其餘全部刪除
改
lset mykey 1 e              從頭開始, 將索引爲1的元素值,設置爲新值 e,若索引越界,則返回錯誤信息
rpoplpush mykey mykey       將 mykey 中的尾部元素移到其頭部
查
lrange mykey 0 -1       取鏈表中的全部元素,其中0表示第一個元素,-1表示最後一個元素。
lrange mykey 0 2            從頭開始,取索引爲0,1,2的元素
lrange mykey 0 0            從頭開始,取第一個元素,從第0個開始,到第0個結束
lpop mykey                  獲取頭部元素,並且彈出頭部元素,出棧
lindex mykey 6              從頭開始,獲取索引爲6的元素 若下標越界,則返回nil 

set(集合)

redis管理

增
sadd myset a b c  
若key不存在,創建該鍵及與其關聯的set,依次插入a ,b,若key存在,則插入value中,若a 在myset中已經存在,則插入了 d 和 e 兩個新成員。
刪
spop myset              尾部的b被移出,事實上b並不是之前插入的第一個或最後一個成員
srem myset a d f        若f不存在, 移出 a、d ,並返回2
改
smove myset myset2 a        將a從 myset 移到 myset2,
查
sismember myset a           判斷 a 是否已經存在,返回值爲 1 表示存在。
smembers myset          查看set中的內容
scard myset             獲取Set 集合中元素的數量
srandmember myset       隨機的返回某一成員
sdiff myset1 myset2 myset3      1和2得到一個結果,拿這個集合和3比較,獲得每個獨有的值
sdiffstore diffkey myset myset2 myset3      3個集和比較,獲取獨有的元素,並存入diffkey 關聯的Set中
sinter myset myset2 myset3              獲得3個集合中都有的元素
sinterstore interkey myset myset2 myset3  把交集存入interkey 關聯的Set中
sunion myset myset2 myset3              獲取3個集合中的成員的並集
sunionstore unionkey myset myset2 myset3  把並集存入unionkey 關聯的Set中

sorted set(有序集合)

redis管理

增
zadd myzset 2 "two" 3 "three"           添加兩個分數分別是 2 和 3 的兩個成員
刪
zrem myzset one two                 刪除多個成員變量,返回刪除的數量
改
zincrby myzset 2 one                將成員 one 的分數增加 2,並返回該成員更新後的分數
查 
zrange myzset 0 -1 WITHSCORES       返回所有成員和分數,不加WITHSCORES,只返回成員
zrank myzset one                獲取成員one在Sorted-Set中的位置索引值。0表示第一個位置
zcard myzset                        獲取 myzset 鍵中成員的數量
zcount myzset 1 2                   獲取分數滿足表達式 1 <= score <= 2 的成員的數量
zscore myzset three                 獲取成員 three 的分數
zrangebyscore myzset  1 2               獲取分數滿足表達式 1 < score <= 2 的成員
#-inf 表示第一個成員,+inf最後一個成員
#limit限制關鍵字
#2  3  是索引號
zrangebyscore myzset -inf +inf limit 2 3  返回索引是2和3的成員
zremrangebyscore myzset 1 2         刪除分數 1<= score <= 2 的成員,並返回實際刪除的數量
zremrangebyrank myzset 0 1              刪除位置索引滿足表達式 0 <= rank <= 1 的成員
zrevrange myzset 0 -1 WITHSCORES        按位置索引從高到低,獲取所有成員和分數
#原始成員:位置索引從小到大
      one  0  
      two  1
#執行順序:把索引反轉
      位置索引:從大到小
      one 1
      two 0
#輸出結果: two  
       one
zrevrange myzset 1 3                獲取位置索引,爲1,2,3的成員
#相反的順序:從高到低的順序
zrevrangebyscore myzset 3 0             獲取分數 3>=score>=0的成員並以相反的順序輸出
zrevrangebyscore myzset 4 0 limit 1 2    獲取索引是1和2的成員,並反轉位置索引

消息模式

Redis發佈消息通常有兩種模式:
• 隊列模式(queuing)
• 發佈-訂閱模式(publish-subscribe)
任務隊列:顧名思義,就是“傳遞消息的隊列”。與任務隊列進行交互的實體有兩類,一類是生產者(producer),另一類則是消費者(consumer)。生產者將需要處理的任務放入任務隊列中,而消費者則不斷地從任務獨立中讀入任務信息並執行。
任務隊列的好處:
• 鬆耦合。
生產者和消費者只需按照約定的任務描述格式,進行編寫代碼。
• 易於擴展。
多消費者模式下,消費者可以分佈在多個不同的服務器中,由此降低單臺服務器的負載。

Redis中事物鎖機制

悲觀鎖

12306買票,我選擇了票,不管有沒有付錢這張票都是我的,我把它鎖上,別人就看不到了

樂觀鎖

類似於商品秒殺,你選擇之後,別人還是能看到,被人還是能付錢,誰先付錢是誰的
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章