1. 程式人生 > 實用技巧 >redis 常用基礎命令

redis 常用基礎命令

Redis的資料結構

redis是一種高階的key:value儲存系統,其中value支援五種資料型別;
1、字串(strings)
2、雜湊(hashes)
3、列表(lists)
4、集合(sets)
5、有序集合(sorted sets)

基礎查詢命令:

# 基礎資訊
info
# 空間大小
info keyspace
# 檢視DB
config get databases
#查詢Redis的資料量
dbsize
#建立
set key value
# 模糊查詢
keys *
# 刪除
del key
# 清空整個 Redis 資料
flushall
# 清空當前庫中的所有key
flushdb

通用命令:

keys * [pattern]     // 遍歷當前reids所有的key O(n)
dbsize     // 計算key的總數 O(1)
exists [key]     // 判斷key是否存在 O(1)
del [key...]     // 刪除一個或多個指定的key O(1)
expire key [seconds]     // key在seconds秒後過期 O(1)
ttl [key]     // 檢視key剩餘的過期時間 O(1)
persist [key]     // 去掉key的過期時間 O(1)
type [key]     // 返回key的資料結構型別 O(1)

String相關命令:

get [key]     // 獲取key對應的value O(1)
mget [key1 ke2 ...]     // 批量獲取key,原子操作 O(n)
getset [key newValue]     // 設定key新值為newValue並返回舊的value O(1)
getrange [key start end]     // 獲取字串指定下標所有的值 O(1)
set [key value]     // 設定key-value O(1)
setrange [key index value]     // 設定指定下標所有對應的值 O(1)
mset [key1 value1 key2 value2 ...] 
// 批量設定key-value O(n) append [key value] // 將value追加到舊的value O(1) setnx [key value] // key不存在,才設定 O(1) set [key value xx] // key存在,才設定 O(1) setex [key value seconds] // 設定key,同時設定過期時間 O(1) incr [key] // key自增1,如果key不存在,自增後get(key)=1 O(1) decr [key] // key自減1,如果key不存在,自減後get(key)=-1 O(1) incrby [key k] // key自增k,如果key不存在,自增後get(key)=k O(1) incrbyfloat [key 3.5] // 增加key對應的float值3.5 如需減法,傳負值即可 O(1) decrby [key k] // key自減k,如果key不存在,自減後get(key)=-k O(1) strlen [key] // 返回字串的長度(注意中文佔用位元組數的問題)O(1)

Hash相關命令:

hget [key field]     // 獲取hash key對應的field的value O(1)
hset [key field value]     // 設定hash key對應的field的value O(1)
hdel [key field]     // 刪除hash key對應的field的value O(1)
hexists [key field]     // 判斷hash key 是否有field O(1)
hlen [key]     // 獲取hash key field的數量,redis內部維護了這個值的計數,而不是每次遍歷,效率高 O(1)
hmget [key field1 field2 ...]     // 批量獲取hash key的一批field對應的值 O(n)
hmset [key field1 field2 ...]     // 批量設定hash key的一批field的value O(n)
hincrby [key field count]     // 設定hash key的field欄位自增count O(1)
hincrbyfloat [key field float]     // hincrby的浮點數版 O(1)
hgetall [key]     // 返回hash key對應所有的field和value O(n)
hvals [key]     // 返回hash key對應所有field的value O(n)
hkeys [key]     // 返回hash key對應的所有field O(n)
hsetnx [key field value]     // 設定hash key對應的field的value 如過field存在,則失敗 O(1)

List相關命令:

rpush [key value1 value2...valueN]     // 從列表右端(後端)插入值 (1-N個) O(1~n)
lpush [key value1 value2...valueN]     // 從列表左側(頭部)插入值 (1-N個) O(1~n)
linsert [key before|after value newValue]     // 在list指定的值(前 | 後)插入newValue,需要遍歷 O(n)
lpop [key]     // 從列表左側彈出一個item O(1)
rpop [key]     // 從列表右側彈出一個item O(1)
lrem [key count value]     // 根據count值,從列表中刪除所有value相等的項 O(n)
(1) count > 0,從左到右,刪除最多count個與value相等的項
(2) count < 0,從右到左,刪除最多count個與value相等的項
(3) count = 0,刪除list中所有與value相等的項
ltrim [key start end]     // 按照索引範圍修剪列表 O(n)
lrange [key start end]     // 獲取list指定索引範圍的所有item,end為-1時,取到末尾 O(n)
lindex [key index]     // 獲取list指定索引的item,index為-1,取最後一個item O(n)
llen [key]     // 獲取list長度,內部優化值 O(1)
lset [key index newValue]     // 設定list指定索引值為newValue O(n)
blpop [key timeout]     // lpop阻塞版本,timeout是阻塞超時時間,timeout=0為永不阻塞 O(1)
brpop [key timeout]     // rpop阻塞版本,timeout是阻塞超時時間,timeout=0為永不阻塞 O(1)

Set相關命令:

sadd [key element]     // 向集合key新增element(如果element存在,新增失敗) O(1)
srem [key element]     // 將集合key中的element移除掉 O(1)
scard [key]     // 計算集合大小 O(1)
sismember [key value]     // 判斷value是否在集合中
srandmember [key count]     // 從集合中隨機挑count個元素,只是選取,不會提出
spop [key]     // 從集合中隨機彈出一個元素
smembers [key]     // 獲取集合所有元素,返回結果無序,如果集合大小心使用
sdiff [key1 key2]     // 取兩個集合的差集
sinter [key1 key2]     // 取兩個集合的交集
sunion [key1 key2]     // 取兩個集合的並集
sdiff | sinter | sunion + store destkey     // 將差集、交集、並集結果儲存到destkey中

Zset相關命令:

zadd [key score element(可以是多對)]     // 向集合中新增score和element O(logN)
zrem [key element(可以是多個)]     // 刪除集合中元素 O(1)
zscore [key element]     // 返回改元素的分數 O(1)
zincrby [key increScore element]     // 增加或減少元素分數 O(1)
zcard [key]     // 返回元素的總個數 O(1)
zrank [key element]     // 返回element在集合中的排名,從小到大排
zrevrank [key element]     // 返回element在集合中的排名,從大到小排
zrange [key start end withscores]     // 獲取指定排名範圍的的元素和它的分數,可以不帶withscores,即不列印分數 O(log(n)+m)
zrevrange [key start end withscores]     // zrange的倒序版本
zrangebyscore [key minScore maxScore withscores]     // 返回指定分數範圍的升序元素 O(log(n)+m)
zrevrangebyscore [key minScore maxScore withscores]     // zrangebyscore降序版本
zcount [key minScore maxScore]     // 返回有序集合指定分數範圍的元素個數 O(log(n)+m)
zremrangebyrank [key start end]     // 刪除指定排名內的升序元素 O(log(n)+m)
zremrangebyscore [key minScore maxScore]     // 刪除指定分數內的升序元素 O(log(n)+m)
zinterstore     // 取兩集合交集並存儲
zunionstore     // 取兩集合並集並存儲

Bitmap相關命令:

setbit [key offset value]     // 給點陣圖指定索引設定值(0或1)注意offset偏移量設定,可能有較大耗時
getbit [key offset]     // 獲取點陣圖指定索引的值
bitcount [key start end]     // 獲取點陣圖指定範圍內(start到end,單位為位元組,如果不指定就是獲取全部)值為1的個數
bitop [op destkey key...]     // 做多個bitmap的and、or、not、xor操作,並將結果儲存在destkey中
bitpos [key targetBit start end]     // 計算點陣圖指定範圍(start到end,單位為位元組,如果不指定就是獲取全部)第一個偏移量對應的值等於targetBit(0或1)的位置

HyperLoglog相關命令:

pfadd [key element...]     // 向hyperloglog新增元素
pfcount [key...]     // 計算hyperloglog的獨立總數
pfmerge [destkey sourcekey...]     // 合併多個sourcekey到destkey

GEO相關命令(redis3.2版本):

geoadd [key longitude latitude member ...]     // 增加一個或多個地理位置資訊
geopos [key member...]     // 獲取一個或多個member的經緯度
geodist [key member1 member2 unit]     // 按某個單位(unit:m、km、mi、ft)獲取兩個地理位置的距離
georadius     // 功能引數太多,使用查api

geo說明:

type geoKey = zset 
沒有刪除api:zrem key member