Redis 5種主要資料型別和命令
redis是鍵值對的資料庫,有5中主要資料型別:
字串型別(string),雜湊型別(hash),列表型別(list),集合型別(set),有序集合型別(zset)
幾個基本的命令:
KEYS * 獲得當前資料庫的所有鍵
EXISTS key [key ...] 判斷鍵是否存在,返回個數,如果key有一樣的也是疊加數
DEL key [key ...] 刪除鍵,返回刪除的個數
TYPE key 獲取減值的資料型別(string,hash,list,set,zset)
FLUSHALL 清空所有資料庫
CONFIG [get、set] redis配置
-inf 負無窮
+inf正無窮
一:字串型別string
字串型別是Redis的最基本型別,它可以儲存任何形式的字串。其它的四種類型都是字串型別的不同形式。
取值設值 |
get、set |
語法:GET key,SET key value value如果有空格需要雙引號以示區分 |
整數遞增 |
incr |
語法:INCR key 預設值為0,所以首先執行命令得到 1 ,不是整型提示錯誤 |
增加指定的整數 |
incrby |
語法:INCRBY key increment |
整數遞減 |
decr |
語法:DECR key |
減少指定的整數 |
decrby |
語法:DECRBY key increment |
增加指定浮點數 |
incrbyfloat |
語法:INCRBYFLOAT key increment 與INCR命令類似,只不過可以遞增一個雙精度浮點數 |
向尾部追加值 |
append |
語法:APPEND key value redis客戶端並不是輸出追加後的字串,而是輸出字串總長度 |
獲取字串長度 |
strlen |
語法:STRLEN key 如果鍵不存在返回0,注意如果有中文時,一箇中文長度是 |
獲取多個鍵值 |
mget |
語法:MGET key [key ...] 例如:MGET key1 key2 |
設定多個鍵值 |
mset |
語法:MSET key value [key value ...] 例如:MSET key1 1 key2 "hello redis" |
二進位制指定位置值 |
getbit |
語法:GETBIT key offset 例如:GETBIT key1 2 ,key1為hello 返回 1,返回的值只有0或1,當key不存在或超出實際長度時為0 |
設定二進位制位置值 |
setbit |
語法:SETBIT key offset value ,返回該位置的舊值 |
二進位制是1的個數 |
bitcount |
語法:BITCOUNT key [start end] ,start 、end為開始和結束位元組 |
位運算 |
bitop |
語法:BITOP operation destkey key [key ...] ,operation支援AND、OR、XOR、NOT |
偏移 |
bitpos |
語法:BITPOS key bit [start] [end] |
二:雜湊型別hash
設定單個 |
hset |
語法:HSET key field value,不存在時返回1,存在時返回0,沒有更新和插入之分 |
設定多個 |
hmset |
語法:HMSET key field value [field value ...] |
讀取單個: |
hget |
語法:HGET key field,不存在是返回null |
讀取多個 |
hmget |
語法:HMGET key field [field ...] |
讀取全部 |
hgetAll |
語法:HGETALL key,返回時欄位和欄位值的列表 |
判斷欄位是否存在 |
hexists |
語法:HEXISTS key field,存在返回1 ,不存在返回0 |
欄位不存在時賦值 |
hsetnx |
語法:HSETNX key field value,與hset命令不同,hsetnx是鍵不存在時設定值 |
增加數字 |
hincrby |
語法:HINCRBY key field increment ,返回增加後的數,不是整數時會提示錯誤 |
刪除欄位 |
hdel |
語法:HDEL key field [field ...] ,返回被刪除欄位的個數 |
只獲取欄位名 |
hkeys |
語法:HKEYS key ,返回鍵的所有欄位名 |
只獲取欄位值 |
hvals |
語法:HVALS key ,返回鍵的所有欄位值 |
欄位數量 |
hlen |
語法:HLEN key ,返回欄位總數 |
三:列表型別(list)
內部使用雙向連結串列實現,所以獲取越接近兩端的元素速度越快,但通過索引訪問時會比較慢
新增左邊元素 |
lpush |
語法:LPUSH key value [value ...] ,返回新增後的列表元素的總個數 |
新增右邊元素 |
rpush |
語法:RPUSH key value [value ...] ,返回新增後的列表元素的總個數 |
移除左邊第一個元素 |
lpop |
語法:LPOP key ,返回被移除的元素值 |
移除右邊第一個元素 |
rpop |
語法:RPOP key ,返回被移除的元素值 |
列表元素個數 |
llen |
語法:LLEN key, 不存在時返回0,redis是直接讀取現成的值,並不是統計個數 |
獲取列表片段 |
lrange |
語法:LRANGE key start stop,如果start比stop靠後時返回空列表,0 -1 返回整個列表。 正數時:start 開始索引值,stop結束索引值(索引從0開始)。負數時:例如 lrange num -2 -1,-2表示最右邊第二個,-1表示最右邊第一個 |
刪除指定值 |
lrem |
語法:LREM key count value,返回被刪除的個數。 count>0,從左邊開始刪除前count個值為value的元素。 count<0,從右邊開始刪除前|count|個值為value的元素。 count=0,刪除所有值為value的元素 |
索引元素值 |
lindex |
語法:LINDEX key index ,返回索引的元素值,-1表示從最右邊的第一位 |
設定元素值 |
lset |
語法:LSET key index value |
保留列表片段 |
ltrim |
語法:LTRIM key start stop,start、top 參考lrange命令 |
一個列表轉移另一個列表 |
rpoplpush |
語法:RPOPLPUSH source desctination ,從source列表轉移到desctination列表,命令分兩步看,首先source列表RPOP右移除,再desctination列表LPUSH |
,
四:集合型別(set)
集合型別值具有唯一性,常用操作是向集合新增、刪除、判斷某個值是否存在,集合內部是使用值為空的散列表實現的。
新增元素 |
sadd |
語法:SADD key member [member ...] ,向一個集合新增一個或多個元素,因為集合的唯一性,所以新增相同值時會被忽略。返回成功新增元素的數量。 |
刪除元素 |
srem |
語法:SREM key member [member ...] 刪除集合中一個或多個元素,返回成功刪除的個數。 |
獲取全部元素 |
smembers |
語法:SMEMBERS key ,返回集合全部元素 |
值是否存在 |
sismember |
語法:SISMEMBER key member ,如果存在返回1,不存在返回0 |
差運算 |
sdiff |
語法:SDIFF key [key ...] ,例如:集合A和集合B,差集表示A-B,在A裡有的元素B裡沒有,返回差集合;多個集合(A-B)-C |
交運算 |
siniter |
語法:SINTER key [key ...],返回交集集合,每個集合都有的元素 |
並運算 |
sunion |
語法:SUNION key [key ...],返回並集集合,所有集合的元素 |
集合元素個數 |
scard |
語法:SCARD key ,返回集合元素個數 |
集合運算後儲存結果 |
sdiffstroe |
語法:SDIFFSTROE destination key [key ...] ,差運算並存儲到destination新集合中。 SINTERSTROE destination key [key ...],交運算並存儲到destination新集合中。 SUNIONSTROE destination key [key ...],並運算並存儲到destination新集合中 |
隨機獲取元素 |
srandmember |
語法SRANDMEMBER key [count],根據count不同有不同結果,count大於元素總數時返回全部元素。count>0 ,返回集合中count不重複的元素。count<0,返回集合中count的絕對值個元素,但元素可能會重複 |
彈出元素 |
spop |
語法:SPOP key [count] ,因為集合是無序的,所以spop會隨機彈出一個元素 |
五:有序集合型別(zset)
新增集合元素 |
zadd |
語法:ZADD key [NX|XX] [CH] [INCR] score member [score member ...],不存在新增,存在更新。 |
獲取元素分數 |
zscore |
語法:ZSCORE key member ,返回元素成員的score 分數 |
元素小到大 |
zrange |
語法:ZRANGE key start top [WITHSCORES] ,參考LRANGE ,加上withscores 返回帶元素,即元素,分數。 當分數一樣時,按元素排序 |
元素大到小 |
zrevrange |
語法:ZREVRANGE key start [WITHSCORES] ,與zrange區別在於zrevrange是從大到小排序 |
指定分數範圍元素 |
zrangebyscore |
語法:ZRANGEBYSCORE key min max [WITHSCORE] [LIMIT offest count]。返回從小到大的在min和max之間的元素,( 符號表示不包含,例如:80-100,(返回帶分數 limit offest count 向左偏移offest個元素,並獲取前count個元素 |
指定分數範圍元素 |
zrevrangescore |
語法:ZREVRANGEBYSCORE key max min [WITHSCORE] [LIMIT offest count]與zrangebyscore類似,只不過該命令是從大到小排序的 |
增加分數 |
zincrby |
語法:ZINCRBY key increment member ,注意是增加分數,返回增加後的分數;如果成員不存在,則新增一個為0的成員。 |
Jedis jedis=new Jedis();
Jedis.expire(key,time);//在指定的key設定超時時間
Jedis.exists(key);//判斷某個key是否存在
Jedis.del(key);//刪除某個key