標籤:
到目前為止,Redis 支援的索引值資料類型如下:
字串(String)
雜湊(Map)
列表(list)
集合(sets)
有序集合(sorted sets)
1. String 字串類型
string是redis最基本的類型,一個key對應一個value。
string類型是二進位安全的。意思是redis的string可以包含任何資料。比如jpg圖片或者序列化的對象 。
string類型是Redis最基本的資料類型,一個鍵最大能儲存512MB。
String 命令:
賦值與取值 set key value / get key
>set name zhangzhi
ok
>get name
"zhangzhi"
當字串值為整數時,incr命令可遞增索引值
>set a 1
ok
>incr a
(integer) 2
鍵不存在時,預設索引值為0
>incr b
(integer) 1
Incrby 和incr類似,但是可指定一次增加的值
>incrby c 10
(integer) 10
decr 和decrby 減少整數,incrbyfloat增加指定的浮點數,append向尾部追加值,如果鍵不存在則值為指定value
>set d hello
ok
>append d world
(integer) 10 # append 命令返還字串長度 “helloworld” 長度為10
strlen key 擷取字串長度
>strlen d
(integer) 10
同時擷取(mget)/設定(mget)多個索引值
>mset a valuea b valueb
>mget a b
2. Hashes 雜湊
雜湊的索引值也是一種字典結構,其儲存了欄位和欄位值的映射,特別社和儲存物件。但欄位值只能是字串,散列類型不能嵌套其他的資料類型。
例子:
>hset user:1 name zhang #賦值
>hget user:1 name #取值
>hmset user:1 name zhangzhi age 29 address beijng #賦多值
>hmget user:1 name age #根據keys擷取多個值
>hgetall user:1 #擷取全部值
>hexists user:1 address #判斷欄位是否存在
>hsetnx user:1 address Beijing # 當欄位不存在時賦值
>hdel user:1 age #刪除欄位
>hincrby user:1 age 1 # 增加數字,類似incrby ,散列沒有incr
>hkeys user:1 #擷取欄位名
>hvals user:1 #擷取欄位值
>hlen user:1 # 擷取欄位數量
3. 列表(Lists)
Redis列表是簡單的字串列表,按照插入順序排序。 你可以添加一個元素到列表的頭部(左邊)或者尾部(右邊)。
LPUSH命令插入一個新元素到列表頭部,而RPUSH命令 插入一個新元素到列表的尾部。當 對一個空key執行其中某個命令時,將會建立一個新表。列表最多可儲存 2的32次方 – 1個 元素 (4294967295, 每個列表可儲存40多億)。
例子:
>lpush list:1 a #建立列表list:1 並插入a
>rpush list:1 b #右邊插入b
>lrange list:1 0 10 # 擷取list:1 索引從0到10的元
>lpop list:1 #左邊彈出元素
>rpop list:1 #右邊彈出元素
>llen list:1 # 列表中元素的個數
>lrem list:1 2 a #刪除列表中指定的值 2為數量
>linde list:1 0 # 獲得指定索引的元素值
>lset list:1 0 2 #設定指定索引的元素值
>ltrim list1 2 4 #刪除指定索引範圍之外的所有元素
>linsert list1 before 4 99 #Linsert 命令用於在列表的元素前或者後插入元素。 當指定元素不存在於列表中時,不執行任何操作。 當列表不存在時,被視為空白列表,不執行任何操作。 如果 key 不是清單類型,返回一個錯誤。
>rpoplpush list1 list2 #rpoplpush 命令用於移除列表的最後一個元素,並將該元素添加到另一個列表並返回。
4. Set(集合)
Set是string類型的無序集合。集合是通過雜湊表實現的,所以添加,刪除,尋找的複雜度都是O(1)。
例子:
>sadd set:1 1 2 #已經存在集合中的元素忽略
>srem set:1 2 3
>smembers set:1
>sismember set:1 4 #判斷元素是否在集合中
>sdiff set:1 set:2 #集合間差集
>sinter set:1 set:2 # 集合交集
>sunion set:1 set:2 # 集合并集
5. 有序集合(Sorted sets)
Redis有序集合和Redis集合類似,它們的差別是,每個有序集合 的成員都關聯著一個評分,這個評分用於把有序集 合中的成員按最低分到最高分排列。
例子:
>zadd zset:1 0 redis
>zadd zset:1 1 monogdb
>zadd zset:1 2 mysql
>zrangebyscore zset:1 0 1000
>zscore zset:1 mysql #擷取元素分數
>zrange zset:1 0 -1 withscores
Redis 索引值資料類型及基本操作