標籤:
接上一篇redis ruby用戶端學習( 二)
對於redis的五種資料類型:字串(String), 雜湊(Map), 列表(list), 集合(sets) 和 有序集合(sorted sets),上一篇介紹了字串。
1,雜湊(Map)
- hset。設定 key 指定的雜湊集中指定欄位的值。如果 key 指定的雜湊集不存在,會建立一個新的雜湊集並與 key 關聯。如果欄位在雜湊集中存在,它將被重寫。
require "redis"r = Redis.newr.hset ‘my_hash‘, ‘field1‘, ‘001‘
- hget。返回 key 指定的雜湊集中該欄位所關聯的值
r.hget ‘my_hash‘, ‘field1‘
- hdel。從 key 指定的雜湊集中移除指定的域。在雜湊集中不存在的域將被忽略。如果 key 指定的雜湊集不存在,它將被認為是一個空的雜湊集,該命令將返回0。
r.hdel ‘my_hash‘, ‘field1‘
- hexists。返回欄位是否是 key 指定的雜湊集中存在的欄位。
r.hexists ‘my_hash‘, ‘field1‘
- hgetall。返回 key 指定的雜湊集中所有的欄位和值。
r.hgetall ‘my_hash‘
- hincrby。增加 key 指定的雜湊集中指定欄位的數值。
r.hincrby ‘my_hash‘, ‘field1‘,5
- hkeys。返回 key 指定的雜湊集中所有欄位的名字。
r.hkeys ‘my_hash‘
- hvals。返回 key 指定的雜湊集中所有欄位的值。
r.hvals ‘my_hash‘
- hlen。返回 key 指定的雜湊集包含的欄位的數量。
r.hlen ‘my_hash‘
- hmget。對於雜湊集中不存在的每個欄位,返回 nil 值。因為不存在的keys被認為是一個空的雜湊集,對一個不存在的 key 執行 hmget 將返回一個只含有 nil 值的列表。
r.hmget ‘my_hash‘,‘field2‘, ‘field3‘
- hmset。設定 key 指定的雜湊集中指定欄位的值。該命令將重寫所有在雜湊集中存在的欄位。如果 key 指定的雜湊集不存在,會建立一個新的雜湊集並與 key 關聯。
r.hmset ‘my_hash‘,‘field4‘, ‘004‘, ‘field5‘, ‘005‘
2,列表(list)
- lpush。將所有指定的值插入到存於 key 的列表的頭部(左邊)。如果 key 不存在,那麼在進行 push 操作前會建立一個空列表。 如果 key 對應的值不是一個 list 的話,那麼會返回一個錯誤。
r.lpush "my_list", ‘value1‘
- lindex。返回列表裡的元素的索引
index
儲存在 key
裡面。 下標是從0開始索引的,所以 0
是表示第一個元素, 1
表示第二個元素,並以此類推。 負數索引用於指定從列表尾部開始索引的元素。在這種方法下,-1
表示最後一個元素,-2
表示倒數第二個元素,並以此往前推。
r.lindex "my_list", 1
把 value
插入存於 key
的列表中在基準值 pivot
的前面或後面。
當 key
不存在時,這個list會被看作是空list,任何操作都不會發生。
當 key
存在,但儲存的不是一個list的時候,會返回error。
r.linsert ‘my_list‘, ‘before‘, ‘value1‘, ‘value3‘r.linsert ‘my_list‘, ‘after‘, ‘value1‘, ‘value4‘
- llen。返回儲存在
key
裡的list的長度。 如果 key
不存在,那麼就被看作是空list,並且返回長度為 0
。 當儲存在 key
裡的值不是一個list的話,會返回error。
r.llen "my_list"
- lpop。移除並且返回
key
對應的 list 的第一個元素(左邊)。
r.lpop "my_list"
返回儲存在 key
的列表裡指定範圍內的元素。 start
和 end
位移量都是基於0的下標,即list的第一個元素下標是0
(list的表頭),第二個元素下標是1
,以此類推。
位移量也可以是負數,表示位移量是從list尾部開始計數。 例如, -1
表示列表的最後一個元素,-2
是倒數第二個,以此類推。
r.lrange "my_list", 0, -1
從存於 key
的列表裡移除前 count
次出現的值為 value
的元素。 這個 count
參數通過下面幾種方式影響這個操作:
-
count > 0
: 從頭往尾移除值為 value
的元素。
count < 0
: 從尾往頭移除值為 value
的元素。
count = 0
: 移除所有值為 value
的元素。
比如, LREM list -2 "hello"
會從存於 list
的列表裡移除最後兩個出現的 "hello"
。
需要注意的是,如果list裡沒有存在key就會被當作空list處理,所以當 key
不存在的時候,這個命令會返回 0
。
r.lrange "my_list", 0, -1 #=> ["value1", "value1", "value1", "value1", "value3", "value1", "value4"] r.lrem "my_list", 2, "value1"r.lrange "my_list", 0, -1# => ["value1", "value1", "value3", "value1", "value4"]
- lset。設定
index
位置的list元素的值為 value
。index超出範圍時會返回一個error。
r.lrange "my_list", 0, -1 # => ["value1", "value1", "value3", "value1", "value4"] r.lset "my_list", 0, "value5"r.lrange "my_list", 0, -1# => ["value5", "value1", "value3", "value1", "value4"]
- rpop。移除並返回存於
key
的 list 的最後一個元素。
r.rpop "my_list"
- rpush。向存於
key
的列表的尾部插入所有指定的值。如果 key
不存在,那麼會建立一個空的列表然後再進行 push 操作。 當 key
儲存的不是一個列表,那麼會返回一個錯誤。
r.rpush "my_list", ‘value6‘
小結:
本次主要介紹了redis ruby用戶端五種資料類型中雜湊和列表的常見方法。
redis ruby用戶端學習( 二)