您好,登錄后才能下訂單哦!
本篇內容主要講解“Redis常用的操作命令”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Redis常用的操作命令”吧!
一、key pattern 查詢相應的key
(1)redis允許模糊查詢key
keys 命令 有3個通配符 *、?、[] 和一個轉義
? 匹配一個字符
* 匹配任意個(包括0個)字符
[] 匹配括號間的任一個字符,可以使用 "-" 符號表示一個范圍,如 a[b-d] 可以匹配 "ab","ac","ad"
\x 匹配字符x,用于轉義符號,如果要匹配 "?" 就需要使用 \?
(2)randomkey:返回隨機key
(3)type key:返回key存儲的類型
返回值可能是 string(字符串類型) 、hash(散列類型) 、list(列表類型)、 set(集合類型)、 zset(有序集合類型)
(4)exists key:判斷某個key是否存在 【如果存在,返回整數類型 1 ,否則返回 0】
(5)del key:刪除key
del key [key.....]
可以刪除一個或多個鍵,返回值是刪除的鍵的個數
注意:不支持通配符刪除
(6)rename key newkey:改名
(7)renamenx key newkey:如果newkey不存在則修改成功
(8)move key 1:將key移動到1數據庫
(9)ttl key:查詢key的生命周期(秒)
(10)expire key 整數值:設置key的生命周期以秒為單位
(11)pexpire key 整數值:設置key的生命周期以毫秒為單位
(12)pttl key:查詢key 的生命周期(毫秒)
(13)perisist key:把指定key設置為永久有效
二、字符串類型的操作
(1)set key value [ex 秒數] [px 毫秒數] [nx/xx]
如果ex和px同時寫,則以后面的有效期為準
nx:如果key不存在則建立
xx:如果key存在則修改其值
(2)get key:取值
(3)mset key1 value1 key2 value2 一次設置多個值
(4)mget key1 key2 :一次獲取多個值
(5)setrange key offset value:把字符串的offset偏移字節改成value
如果偏移量 > 字符串長度,該字符自動補0x00
(6)append key value :把value追加到key 的原值上,向尾部追加值
作用是向鍵值的末尾追加 value ,如果鍵不存在則將改鍵的值設置為 value,即相當于 set key value。
返回值是追加后字符串的長度 如:append foo " hello word!"
(7)getrange key start stop:獲取字符串中[start, stop]范圍的值
對于字符串的下標,左數從0開始,右數從-1開始
注意:當start>length,則返回空字符串
當stop>=length,則截取至字符串尾
如果start所處位置在stop右邊,則返回空字符串
(8)getset key nrevalue:獲取并返回舊值,在設置新值
(9)incr key:自增,返回新值,如果incr一個不是int的value則返回錯誤,incr一個不存在的key,則設置key為1
incr key 當存儲的字符串是整數形式時,redis提供了一個使用的命令 incr 作用是讓當前的鍵值遞增,
并返回遞增后的值
incr num 當要操作的鍵不存在時會默認鍵值為 0 ,所以第一次遞增后的結果是 1 ,
當鍵值不是整數時 redis會提示錯誤
(10)incrby key increment: 增加指定的整數【 incrby key 2:跳2自增】
incrby 命令與 incr 命令基本一樣,只不過前者可以通過 increment 參數指定一次增加的數值
如:incrby num 2 incrby num 3
(11)incrbyfloat by 0.7: 自增浮點數 注意: ( 受reids 版本限制,版本需要大于 2.6 版本)
(12)減少指定的整數
decr key
decrby key increment
desc 命令與incr 命令用法相同,只不過是讓鍵值遞減
decrby 命令與 incrby命令用法相同
位操作 : 一個字節由8個二進制位組成,redis 提供了4個命令直接對二進制位進行操作
(13)setbit key offset value:設置offset對應二進制上的值,返回該位上的舊值
【注意:如果offset過大,則會在中間填充0
offset最大到多少? 2^32-1,即可推出最大的字符串為512M】
setbit 命令可以設置字符串類型鍵指定位置的二進制位的值,返回值是該位置的舊值,
如果需要設置的位置超過了鍵值的二進制位的長度,setbit 命令會自動將中間的二進制位設置為0,
同理設置一個不存在的鍵的指定二進制位的值會自動將其前面的位賦值為 0
(14)getbit key offset value:
getbit 命令可以獲得一個字符串類型鍵指定位置的二進制位的值(0 或 1),索引從 0 開始,
如果需要獲取的二進制位的索引超出了鍵值的二進制位的實際長度則默認位值是 0
(15)bitcount key [strart] [end]
bitcount 命令可以獲得字符串類型鍵中值是1的二進制位個數,可以通過參數來限制統計的字節范圍,
如我們希望統計前兩個字節(即"aa")
命令:bitcount foo 0 1
注意: ( 受reids 版本限制,版本需要大于 2.6 版本)
(16)bitop operation destkey key1 [key2..] 對key1 key2做opecation并將結果保存在destkey上
【opecation可以是AND OR NOT XOR】
bittop 命令可以對多個字符串類型鍵進行位運算,并將結果存儲在destkey參數指定的鍵中。
該命令支持的運算操作有 AND、 OR、 XOR、 NOT,
例如我們對bar 和 aar 進行 OR 運算操作:
set foo1 bar
set foo2 aar
bitop OR res foo1 foo2
get res
注: ( 受reids 版本限制,版本需要大于 2.6 版本)
(17)strlen key:取指定key的value值的長度【返回鍵值的長度,如果鍵不存在則返回0】
(18)setex key time value:設置key對應的值value,并設置有效期為time秒
三、鏈表操作
Redis的list類型其實就是一個每個子元素都是string類型的雙向鏈表,鏈表的最大長度是2^32。list既可以用做棧,也可以用做隊列。
list的pop操作還有阻塞版本,主要是為了避免輪詢
(1) 向列表兩端增加元素
lpush key value [ value ....... ]
rpush key value [ value ....... ]
lpush 命令用來向列表左邊增加元素,返回表示增加元素后列表的長度
rpush 命令用來向列表右邊增加元素,返回表示增加元素后列表的長度
(2)從列表兩端彈出元素
lpop key
rpop key
lpop 命令可以從列表左邊彈出一個元素,lpop 命令執行兩步操作,
1:將列表左邊的元素從列表中移除,
2:返回被移除元素值
rpop 命令可以從列表右邊彈出一個元素
(3)llen key:計算鏈表的元素個數 【當鍵不存在時,llen 返回 0】
(4)lrange key start stop:返回鏈表中[start, stop]中的元素
獲得列表中的某一片段,返回索引從 start 到 stop 之間的所有元素(包括兩端的元素) 索引開始為 0
注:lrange 與很多語言中用來截取數組片段的方法有一點區別是 lrange 返回的值包含最右邊的元素
lrange 命令也支持負索引,表是從右邊開始計算序數,
如 ' -1 ' 表示最右邊第一個元素, ' -2 ' 表示最右邊第二個元素,一次類推
(5)lrem key count value:從鏈表中刪除value值,刪除count的絕對值個value后結束
count > 0 從表頭刪除 count < 0 從表尾刪除 count=0 全部刪除
lrem 命令會刪除列表中前 count 個值為 value 的元素,返回值是實際刪除的元素個數。
根據count 值的不同,lrem 命令執行的方式會略有差異
當 count > 0 時,lrem 命令會從列表左邊開始刪除前 count 個值為 value 的元素
當 count < 0 時,lrem 命令會從列表右邊開始刪除前count 個值為 value 的元素
當 count = 0 時,lrem 命令會刪除所有值為value的元素
(6)lindex key index:返回index索引上的值
lindex 命令用來返回指定索引的元素,索引從 0 開始 ,如果 index 是負數則表示從右邊開始計算的索引,
最右邊元素的索引是 -1
(7)lset key index value:設置index索引上的值
lset 是通過索引操作列表的命令,它會將索引為 index 的元素賦值為 value
(8)ltrim key start stop:只保留列表指定片段,剪切key對應的鏈接,切[start, stop]一段并把該值重新賦給key,
ltrim 命令可以刪除指定索引范圍之外的所有元素,其指定列表范圍的方法和 lrange 命令相同
ltrim 命令常和 lpush 命令一起使用來限制列表中元素的數量,
比如記錄日志時我們希望只保留最近的 100 條日志,則每次加入新元素時調用一次ltrim 命令即可;
(9)linsert key after | before search value:向列表中插入元素,
在key 鏈表中尋找search,并在search值之前|之后插入value
linsert 命令首先會在列表中從左到右查找值為 search 的元素,
然后根據第二個參數是 before 還是 after 來決定將 value 插入到該元素的前面還是后面,如果命令執行成功,
返回插入操作完成之后列表的長度。如果沒有找到 search 返回 -1 如果key 不存在或為空,返回 0
(10)rpoplpush source destination:將元素從一個列表轉到另一個列表R
把source 的末尾拿出,放到destination頭部,并返回單元值
應用場景: task + bak 雙鏈表完成安全隊列
業務邏輯: rpoplpush task bak
接收返回值并做業務處理
如果成功則rpop bak清除任務,如果不成功,下次從bak表取任務
rpoplpush 先執行 rpop 命令再執行 lpush 命令。rpoplpush 命令先會從source 列表類型鍵的右邊彈出一個元素,
然后將其加入到 destination 列表類型鍵的左邊,并返回這個元素的值,整個過程是原子的
(11)brpop,blpop key timeout:等待彈出key的尾/頭元素
timeout為等待超時時間,如果timeout為0則一直等待下去
應用場景:長輪詢ajax,在線聊天時能用到
四、hashes類型及操作
Redis hash 是一個string類型的field和value的映射表,它的添加、刪除操作都是O(1)(平均)。hash特別適用于存儲對象,將一個對象存儲在hash類型中會占用更少的內存,并且可以方便的存取整個對象。
配置: hash_max_zipmap_entries 64 #配置字段最多64個
hash_max_zipmap_value 512 #配置value最大為512字節
(1)hset key field value 用來給字段賦值
【hset myhash field value:設置myhash的field為value】
hset 命令的方便之處在于不區分插入和更新操作,這意味著修改數據時不用事先判斷字段是否存
在來決定要執行的是插入操作還是更新操作,當執行的是插入操作時, hset 命令返回 1 ,
當執行的是更新操作時,hset 命令返回的是 0,當鍵本身不存在時, hset 命令還會自動建立他
(2)hmset key field value [ field value ...... ] 設置多個鍵值
【hmset myhash field1 value1 field2 value2:同時設置多個field】
(3)hget key field 命令用來獲得字段的值
【hget myhash field:獲取指定的hash field】
(4)hmget key field [ field ...... ] 獲得多個鍵值
【hmget myhash field1 field2:一次獲取多個field】
(5)hgetall key :獲取鍵中所有字段和字段值卻不知道鍵中有哪些字段時使用,返回的結果是字段和字段值組成的列表
【hgetall myhash:獲取某個hash中全部的field及value】
(6)hsetnx key field value:當字段不存在時賦值
【hsetnx myhash field value:不存在的情況下設置myhash的field為value】
hsetnx 命令與hset 命令類似,區別在于如果字段已經存在,hsetnx 命令將不執行任何操作
(7)hexists key field 判斷字段是否存在【存在返回 1 ,否則返回 0】
【hexists myhash field:測試指定的field是否存在】
(8)hincrby key field increment 使字段值增加指定的整數
【hincrby myhash field 5:指定的hash field加上給定的值】
(9)hlen key 獲得字段數量 【hlen myhash:返回hash的field數量】
(10)hdel key field [ field .....] 刪除一個或多個字段,返回值是被刪除的字段個數
【hdel myhash field:刪除指定的field】
(11)hkeys key 獲取所有字段的名字 【 hkeys myhash:返回hash所有的field】
(12)hvals key 獲得鍵中所有字段的值 【hvals myhash:返回hash所有的value】
五、集合結構操作
特點:無序性、確定性、唯一性
(1)sadd key member [ member .... ] :往集合里面添加元素
sadd 命令用來向集合中增加一個或多個元素,如果鍵不存在則會自動創建。
因為在一個集合中不能有相同的元素,所以如果要加入的元素已經存在與集合中就會忽略這個元素。
返回值是成功加入的元素數量(忽略的元素不計算在內)
(2)srem key member [ member .... ] :刪除集合某個元素
srem 命令用來從集合中刪除一個或多個元素,并返回刪除成功的個數
(3)smembers key:獲取集合所有的元素
(4)spop key:返回并刪除集合中1個隨機元素(可以做抽獎,不會重復抽到某人)
由于集合類型的元素是無序的,所以 spop 命令會從集合中隨機選擇一個元素彈出,
返回值為被移除的隨機元素,如果 key 不存在或者key 為空集時,返回 nil
(5)sismember key value:判斷集合是否有某個值
判斷一個元素是否在集合中,是一個時間復雜度為 0(1) 的操作,
無論集合中有多少個元素,sismember 命令始終可以極快的返回結果。
當值存在時 sismember 命令返回 1 ,當值不存在或者鍵不存在時返回 0
(6)scard key:返回集合元素的個數
(7)smove source dest value:把source的value移動到dest集合中
(8)srandmember key [ count ] 隨機獲得集合中的元素
該命令用來隨機從集合中獲取一個元素
還可以傳遞 count 參數來一次隨機獲得多個元素,根據 count 的正負不同,具體表現也不同
當count為正數時,srandmember 會隨機獲取從集合里獲得count個不重復的元素。
如果count的值大于集合中的元素個數,則srandmember 會返回集合中的全部元素
當count為負數時,srandmember 會隨機從集合中獲得count個的元素,這些元素有可能相同
【注:當傳遞count 參數時,在windows環境下提示命令參數錯誤】
集合間運算
(9) sdiff key [ key ...... ] 【sdiff key1 key2:求key1 key2的差集】
sdiff 命令用來對多個集合執行差集運算。集合 A 與集合 B 的差集表示為 A- B ,
代表所有屬于 A 且不屬于 B 的元素構成的集合,即 A - B = { x| x∈A 且 x ∈/B }
命令使用方法:
sadd seta 1 2 3 4 6 7 8
sadd setb 2 3 4
sdiff seta setb
該命令支持同時傳入多個鍵, 計算順序是先計算 seta 和 setb 在計算結果與 setc 的差集
sadd setc 2 3 4
sdiff seta setb setc
(10)sinter key [ key ..... ] 【sinter key1 key2 key3:求key1 key2 key3的交集】
該命令用來對多個集合執行交集運算。集合 A 與集合 B 的交集表示為 A∩B,
代表所有屬于 A 且屬于 B 的元素構成的集合即 A∩B = { x| x∈A 且 x ∈B }
命令使用方法:
sinter seta setb
該命令同樣支持同時傳入多個鍵
(11)sunion key [ key ...... ]【sunion key1 key2:求key1 key2 的并集】
該命令用來對多個集合執行并集運算。集合 A 與集合 B的并集表示為 A∪B ,
代表所有屬于A或所有屬于B的元素構成的集合即 A∪B = { x| x∈A 或 x ∈B }
命令使用方法:
sunion seta setb
該命令同樣支持同時傳入多個鍵
進行集合運算并將結果存儲
(12)sdiffstore destination key [ key ...... ]
sdiffstore 命令和 sdiff 命令功能一樣,唯一的區別就是前者不會直接返回運算的結果,
而是將結果存在 destination 鍵中
(13) sinterstore destination key [ key ...... ] 【sinterstore res key1 key2:求key1 key2的交集并存在res里 】
sinterstore 這個命令類似于 sinter 命令,
但它將結果保存到 destination 集合,而不是簡單地返回結果集
(14)sunionstore destination key [ key ...... ]
sunionstore 這個命令類似于 sunion 命令,
但它將結果保存到 destination 集合,而不是簡單地返回結果集。
六、有序集合
概念:它是在set的基礎上增加了一個順序屬性,這一屬性在添加修改元素的時候可以指定,每次指定后,zset會自動按新的值調整順序。可以理解為有兩列的mysql表,一列存儲value,一列存儲順序,操作中key理解為zset的名字。
和set一樣sorted,sets也是string類型元素的集合,不同的是每個元素都會關聯一個double型的score。sorted set的實現是skip list和hash table的混合體。
當元素被添加到集合中時,一個元素到score的映射被添加到hash table中,所以給定一個元素獲取score的開銷是O(1)。另一個score到元素的映射被添加的skip list,并按照score排序,所以就可以有序地獲取集合中的元素。添加、刪除操作開銷都是O(logN)和skip list的開銷一致,redis的skip list 實現是雙向鏈表,這樣就可以逆序從尾部去元素。sorted set最經常使用方式應該就是作為索引來使用,我們可以把要排序的字段作為score存儲,對象的ID當元素存儲。
(1)zadd key score member [ score member ...... ]:添加元素
zadd 命令用來向有序集合中加入一個元素和該元素的分數,
如果該元素已經存在,則會用新的分數替換原有的分數。zadd命令的返回值是新加入到集合中的元素個數
(不包含之前已經存在的元素)
獲得排名在某個范圍的元素列表
(2) zrange key start stop [withscore]:把集合排序后,返回名次[start,stop]的元素
默認是升續排列 withscores 是把score也打印出來
zrange 命令會按照元素分數從小到大的順序返回索引從 start 到 stop 之間的所有元素
(包含兩端的元素)。zrange 命令和 lrange 命令十分相似,如索引都是從0開始,
負數代表從后向前查找(-1 表示最后一個元素)。
如果需要同時獲得元素的分數的話,可以在zrange 命令的尾部加上 widthscores 參數。
注:如果兩個元素的分數相同,redis會按照字典順序(即 0<9<A<Z<a<z 這樣的順序)來進行排列。
如果元素的值是中文,則取決于,中文的編碼方式,
(3)zrevrange key start stop [ withscores ]
zrevrange 命令和 zrange 的唯一不同在于 zrevrange 是按照元素分數從大到小的順序給定結果的
獲得元素的排名
(4) zrank key member:查詢member的排名(升序0名開始)
(5) zrevrank key member:查詢member排名(降序 0名開始)
zrank 命令會按照元素分數從小到大的順序獲得指定的元素排名(從 0 開始,即分數最小的元素排名為0)
zrebrank 命令則正好相反,分數最大的元素排名為0
(3)zscore key member:獲得元素的分數
(4)zrangebyscore key min max [ withscores ] [ limit offset count ]:獲得指定分數范圍內的元素
【zrangebyscore key min max [withscores] limit offset N:
集合(升序)排序后取score在[min, max]內的元素,并跳過offset個,取出N個】
該命令按照元素分數從小到大的順序返回分數在 min 到 max 之間(包含 min 和max 的元素)
如果希望分數范圍不包含端點值,可以在分數前加上 "(" 符號,
例如:希望返回80分到100分的的數據,可以包含80分單不包含100分
命令:zrangebyscore scoreboard 80 (100 widthscores min 和 max 還支持無窮大,
同 zadd 命令一樣,-inf 和 +inf 分別表示負無窮大和正無窮大。
比如希望得到所有分數高于 80分(不包含80分)的人的名單,但是卻不知道最高分是多少,
這是就可以使用 +inf zrangebyscore scoreboard (80 +inf 命令 limit offset count
與 SQL 中的用法基本相同,即在獲得的元素列表的基礎上向后偏移 offset 個元素
并且只獲取前count個元素 zrevrangebyscore 不僅是按照元素分數從大往小的順序給出結果,
而且他的 min 和max 的參數的順序和 zrangebyscore 命令是相反的
(5)zincrby key increment member:增加某個元素的分數
zincrby 命令可以增加一個元素的分數,返回值是更改后的分數, 例如想給peter 加 4 分 ,
zincrby scoreborder 4 peter, increment 也可以是負數表示減分, zincrby scoreborder -4 peter
如果指定元素不存在,redis 在執行命令前會先建立它并將他的值賦為0在執行操作
刪除元素
(6)zrem key value1 value2:刪除集合中的元素,刪除一個或多個元素
zrem 命令的返回值是成功刪除的元素數量(不包含本來就不存在的元素)
(7)zremrangebyrank key start end:按排名范圍刪除元素,刪除名次在[start, end]之間的
按照元素分數從小到大的順序(即索引 0 表示最小的值)刪除在指定排名范圍內的所有元素,
并返回刪除元素的數量
(8)zremrangebyscore key min max:按照score來刪除元素,刪除score在[min, max]之間
zremrangebyscore 命令刪除指定分數范圍內的所有元素,
參數 min 和 max 的特性和 zrangebyscore 命令中的一樣,返回值是刪除元素的個數
(9)zcard key:返回集合元素的個數
(10)zcount key min max:返回[min, max]區間內元素數量
zcount 命令的 min max 參數的特性與 zrangebyscore 命令中的一樣
計算有序集合的交集
(11)zinterstore destination numkeys key [ key ... ] [ weights weight [ weight ... ] ] [ aggregate SUM | MIN | MAX ]
zinterstore 命令用來計算多個有序集合的交集并將結果存儲在 destination 鍵中(同樣以有序集合類型存儲),
返回值為
destination 鍵中元素的個數,destination 鍵中元素的分數是由 aggregate 參數決定的
【zinterstore dest numkeys key1[key2..] [WEIGHTS weight1 [weight2...]] [AGGREGATE SUM | MIN | MAX]
求key1,key2的交集,key1,key2的權值分別是weight1,weight2
聚合方法用 sum | min | max
聚合結果 保存子dest集合內
】
1. 當 aggregate 是 SUM (也就是默認值),destination 鍵中元素的分數是每個參與計算的集合中該元素分數的和
2.當 aggregate 是 MIN 時,destination 鍵中元素的分數是參與計算的集合中該元素分數最小值
3.當 aggregate 是 MAX 是,destination 鍵中元素的分數是參與計算的集合中該元素分數最大值
zinterstore 命令還能通過 weights 參數設置每個集合的權重,
每個集合在參與計算時元素的分數會被乘上該集合的權重
注意:weights,aggregate如何理解?
答:如果有交集,交集元素又有score,score怎么處理?aggregate num->score相加,
min最小score,max最大score,另外可以通過weights設置不同的key的權重,交集時 score*weight
(12) zunionstore 計算多個有序集合的并集并將結果存儲在 destination 鍵中,用法與 zinterstore 命令的用法一樣
七、事務
事務的原理是先將屬于一個事務的命令發送給redis ,然后再讓 redis 依次執行這些命令
錯誤處理
(1)語法錯誤。語法錯誤指命令不存在或者命令參數個數不對。
這種情況下,事務中只要有一個命令有語法錯誤,執行exec命令后redis就會直接返回錯誤,
連語法正確的命令也不會執行。注:redis 2.6.5 之前的版本會忽略有語法錯誤的命令,
然后執行事務中其他語法正確的命令。
(2)運行錯誤。運行錯誤指在命令執行時出現的錯誤。
比如使用散列類型的命令操作集合類型的鍵,這種錯誤在實際執行之前redis是無法發現的,
所以在事務里這樣的命令是會被redis接受并執行的,如果事務里的一條命令出現運行錯誤,
事務里其他的命令依然會繼續執行(包含出錯命令之后的命令)
reids的事務沒有關系數據庫事務提供的回滾功能,為此開發者必須在事務執行出錯之后自己收拾剩下的攤子
(1) watch 命令
watch key [ key ... ]
監視一個或多個 key ,如果在事務執行之前這個或這些 key 被其他命令所改動,
那么事務將被打斷,監控一直持續到exec命令
(2) unwatch:取消 watch 命令對所有 key 的監視
(3)生存時間
expire key seconds :其中 seconds 參數表示鍵的生存時間,單位是秒,該參數必須是整數
命令返回 1表示設置成功,返回 0 則表示鍵不存在或設置失敗
如果想知道一個鍵還有多久會被刪除,可以使用 ttl 命令。返回值是鍵的剩余時間(單位是秒),
如果想取消鍵的生存時間設置(即將鍵恢復成為永久的),可以使用 persist 命令。
如果生存時間被成功清除則返回 1 。否則返回 0
除了 persist 命令之外,使用 set 、getset 命令為鍵賦值也同時會清楚鍵的生存時間
注: incr 、lpush、hset、zrem 命令均不會影像鍵的生存時間
精確控制鍵的生存時間應該使用 pexpire 命令。該命令的單位是毫秒
可以使用 pttl 命令以毫秒為單位返回鍵的剩余時間
另外不太常用命令:expireat 和 pexpireat,該命令第二個參數表示鍵的生存時間的截至時間,
expireat 單位秒 pexpireat 單位毫秒
(4)sort:該命令可以對列表類型,集合類型,和有序集合類型鍵進行排序
列表類型,有序集合類型排序時,會忽略元素的分數,只針對元素的自身的值進行排序
除了可以排列數字外,sort 命令還可以通過 alpha 參數實現按照字典順序排列非數字元素
sort 命令的 desc 參數可以實現將元素按照從大到小的順序排列
sort 命令還支持 limit 參數來返回指定范圍的結果,用法和sql 語句一樣 limit offset count ,
表示跳過前 offset 個元素并獲取之后的 count 個元素
sort 命令 by 參數,默認情況下, sort uid 直接按照 uid 中的值排序,通過 by 參數,
可以讓 uid 按照其他鍵的元素來排序
user_level_* 是一個占位符,他先取出 uid 中的值,然后在用這個值來查找相應的鍵
比如在對 uid 列表進行排序時, 程序就會先取出 uid 的值 1 、 2 、 3 、 4 ,
然后使用 user_level_1 、 user_level_2 、 user_level_3 和 user_level_4 的值作為排序 uid 的權重。
使用 get 選項,可以根據排序的結果來取出相應的鍵值
一個sort 命令中可以有多個 get 參數(而 by 參數只能有一個)
默認情況下 sort 命令會直接返回排序結果,如果希望保存排序結果,可以使用 store 參數,保存后鍵的類型為列表類型
八、服務器相關命令
(1)ping:測定連接是否存活
(2)echo:在命令行打印一些內容
(3)select:選擇數據庫
(4)quit:退出連接
(5)dbsize:返回當前數據庫中key的數目
(6)info:獲取服務器的信息和統計
(7)monitor:實時轉儲收到的請求
(8)config get 配置項:獲取服務器配置的信息
config set 配置項 值:設置配置項信息
(9)flushdb:刪除當前選擇數據庫中所有的key
(10)flushall:刪除所有數據庫中的所有的key
(11)time:顯示服務器時間,時間戳(秒),微秒數
(12)bgrewriteaof:后臺保存rdb快照
(13)bgsave:后臺保存rdb快照
(14)save:保存rdb快照
(15)lastsave:上次保存時間
(16)shutdown [save/nosave]
注意:如果不小心運行了flushall,立即shutdown nosave,關閉服務器,然后手工編輯aof文件,去掉文件中的flushall相關行,然后開啟服務器,就可以倒回原來是數據。如果flushall之后,系統恰好bgwriteaof了,那么aof就清空了,數據丟失。
(17)showlog:顯示慢查詢
問:多慢才叫慢?
答:由slowlog-log-slower-than 10000,來指定(單位為微秒)
問:服務器存儲多少條慢查詢記錄
答:由slowlog-max-len 128,來做限制
到此,相信大家對“Redis常用的操作命令”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。