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   默認值爲0,所以首先執行命令得到 -1,不是整型提示錯誤

減少指定的整數:DECRBY         語法:DECRBY key increment

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

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

獲取字符串長度:STRLEN          語法:STRLEN key  如果鍵不存在返回0,注意如果有中文時,一箇中文長度是3,redis是使用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 ,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,不存在是返回nil

讀取多個: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

交運算:SINTER                語法:SINTER key [key ...],返回交集集合,每個集合都有的元素

並運算:SUNION        語法:SUNION key [key ...],返回並集集合,所有集合的元素

集合元素個數:SCARD           語法:SCARD key ,返回集合元素個數

集合運算後存儲結果                語法:SDIFFSTROE destination key [key ...] ,差運算並存儲到destination新集合中

                   SINTERSTROE destination key [key ...],交運算並存儲到destination新集合中

                                                  SUNIONSTROE destination key [key ...],並運算並存儲到destination新集合中

隨機獲取元素:SRANDMEMGER 語法:SRANDMEMBER key [count],根據count不同有不同結果,count大於元素總數時返回全部元素

                  count>0 ,返回集合中count不重複的元素

                  count<0,返回集合中count的絕對值個元素,但元素可能會重複

彈出元素:SPOP                     語法:SPOP key [count] ,因爲集合是無序的,所以spop會隨機彈出一個元素

 

五:有序集合類型

添加集合元素: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,(80 100,

                  withscore返回帶分數

                  limit offest count 向左偏移offest個元素,並獲取前count個元素

指定分數範圍元素:ZREVRANGESCORE   語法:ZREVRANGEBYSCORE key max  min [WITHSCORE] [LIMIT offest count]

                與zrangebyscore類似,只不過該命令是從大到小排序的。

增加分數:ZINCRBY                語法:ZINCRBY key increment member ,注意是增加分數,返回增加後的分數;如果成員不存在,則添加一個爲0的成員。

發佈了13 篇原創文章 · 獲贊 1 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章