1. 程式人生 > >Redis 5種主要資料型別和命令

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 keySET key value   value如果有空格需要雙引號以示區分

整數遞增

 incr

語法:INCR key    預設值為0,所以首先執行命令得到 1 ,不是整型提示錯誤

增加指定的整數

 incrby    

    語法:INCRBY key increment

整數遞減

 decr

語法:DECR key  

預設值為0,所以首先執行命令得到 -1,不是整型提示錯誤

減少指定的整數

 decrby  

     語法:DECRBY key increment

增加指定浮點數

incrbyfloat

語法:INCRBYFLOAT key increment  INCR命令類似,只不過可以遞增一個雙精度浮點數

向尾部追加值

 append

語法:APPEND key value   redis客戶端並不是輸出追加後的字串,而是輸出字串總長度

獲取字串長度

 strlen 

 語法:STRLEN key  如果鍵不存在返回0,注意如果有中文時,一箇中文長度是

3redis是使用UTF-8編碼中文的

獲取多個鍵值

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 key1hello 返回 1,返回的值只有01,當key不存在或超出實際長度時為0

設定二進位制位置值

 setbit

語法:SETBIT key offset value ,返回該位置的舊值

二進位制是1的個數

bitcount

 語法:BITCOUNT key [start end] start end為開始和結束位元組

位運算

 bitop

 語法:BITOP operation destkey key [key ...]  operation支援ANDORXORNOT

偏移

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, 不存在時返回0redis是直接讀取現成的值,並不是統計個數

 獲取列表片段

lrange 

語法:LRANGE key start stop,如果startstop靠後時返回空列表,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 stopstarttop 參考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]。返回從小到大的在minmax之間的元素,( 符號表示不包含,例如: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