Redis數據類型、Redis列表命令

來源:http://edu.jb51.net/redis/redis-data-types.html
Redis支持五種數據類型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。
1、String
string是redis最基本的類型,一個鍵最大能存儲512M,一個key對應一個value。string類型是二進制安全的。意思是redis的string可以包含任何數據。比如jpg圖片或者序列化的對象 。語法:SET name "jay"     GET name
2、Hash(哈希)
Redis hash 是一個鍵值對集合。Redis hash是一個string類型的field和value的映射表,hash特別適合用於存儲對象。每個 hash 可以存儲 232 -1 鍵值對(40多億)。
語法:HMSET key KeyValueMap,鍵值對用空格分開。
HMSET user:1 username jay password 111111 points 200
HGETALL user:1
3、List(列表)
Redis 列表是簡單的字符串列表,按照插入順序排序。你可以添加一個元素到列表的頭部(左邊)或者尾部(右邊)。
List命令:
lindex:通過索引獲取列表中的元素;語法:LINDEX KEY_NAME INDEX_POSITION,可以使用負數下標,以 -1 表示列表的最後一個元素, -2 表示列表的倒數第二個元素,以此類推;指定索引不存在,返回 nil。
lpush:將一個或多個值插入到列表頭部,語法:lpush KEY_NAME Values,在Redis 2.4版本以前的 LPUSH 命令,都只接受單個 value 值。
rpoplpush:移除列表的最後一個元素,並將該元素添加到另一個列表的首部;返回被彈出的元素;如果指定要移除的列表不存在,則返回nil;如果“另一個列表不存在”,則新創建一個。語法:RPOPLPUSH SOURCE_KEY_NAME DESTINATION_KEY_NAME
blpop:移出並獲取列表的第一個元素,如果列表沒有元素會阻塞列表直到等待超過timeout時或發現可彈出元素爲止,timeout單位是秒,超時後,說明列表爲空,返回一個 nil跟時間,
沒有超時,說明列表不爲空,返回一個含有兩個元素的列表,第一個元素是被彈出元素所屬的 key ,第二個元素是被彈出元素的值。注:TIMEOUT是必須要填的,不是選填。
語法:BLPOP List1 List2 .. ListN TIMEOUT
brpop:移出並獲取列表的最後一個元素,如果列表沒有元素會阻塞列表直到等待超時或發現可彈出元素爲止,語法:BRPOP List1 List2 .. ListN TIMEOUT
brpoplpush:從列表中彈出一個值,將彈出的元素插入到另外一個列表中並返回它;如果列表沒有元素會阻塞列表直到等待超時或發現可彈出元素爲止;假如在指定時間內沒有任何元素被彈出,則返回一個 nil 和等待時長;
反之,返回一個含有兩個元素的列表,第一個元素是被彈出元素的值,第二個元素是等待時長(注意:如果時間短立馬可以獲得到的話,只會返回一個元素即被彈出元素的值)
語法:BRPOPLPUSH LIST1 ANOTHER_LIST TIMEOUT
lrem:根據參數 COUNT 的值,移除列表中與參數 VALUE 相等的元素;
COUNT 的值可以是以下幾種:
count > 0 : 從表頭開始向表尾搜索,移除與 VALUE 相等的元素,數量爲 COUNT
count < 0 : 從表尾開始向表頭搜索,移除與 VALUE 相等的元素,數量爲 COUNT 的絕對值
count = 0 : 移除表中所有與 VALUE 相等的值
返回被移除元素的數量,列表不存在時或者表中沒有相同元素時返回 0
語法:LREM KEY_NAME COUNT VALUE
ltrim:列表修剪(trim),就是說,讓列表只保留指定區間內的元素,不在指定區間之內的元素都將被刪除;下標 0 表示列表的第一個元素,以 1 表示列表的第二個元素,以此類推;你也可以使用負數下標,以 -1 表示列表的最後一個元素, -2 表示列表的倒數第二個元素,以此類推;命令執行成功時,返回 ok,語法:LTRIM KEY_NAME START STOP
lpushx:將一個或多個值插入到已存在的列表頭部,列表不存在時操作無效;返回LPUSHX 命令執行之後,列表的新長度;列表不存在時或者對已經沒有元素的列表操作時返回0,語法:LPUSHX KEY_NAME VALUE1.. VALUEN,另一個命令rpushx是插入到尾部。
lset:通過索引來設置元素的值;操作成功返回 ok ;當索引參數超出範圍,返回一個錯誤;對一個空列表進行 LSET 時或者key不存在時返回錯誤信息,語法:LSET KEY_NAME INDEX VALUE
llen:命令用於返回列表的長度;如果列表 key 不存在,則 key 被解釋爲一個空列表,返回 0 ;如果 key 不是列表類型,返回一個錯誤,語法:LLEN KEY_NAME
linsert:用於在列表的元素前或者後插入元素;當指定元素不存在於列表中時,不執行任何操作;當列表不存在時,被視爲空列表,不執行任何操作;如果 key 不是列表類型,返回一個錯誤;如果命令執行成功,返回插入操作完成之後,列表的新長度;如果沒有找到指定元素 ,返回 -1;如果 key 不存在或爲空列表,返回 0,語法:LINSERT KEY_NAME BEFORE EXISTING_VALUE NEW_VALUE
lrange:返回列表中指定區間內的元素,區間以偏移量 START 和 END 指定。 其中 0 表示列表的第一個元素, 1 表示列表的第二個元素,以此類推。
也可以使用負數下標,以 -1 表示列表的最後一個元素, -2 表示列表的倒數第二個元素,以此類推。語法:LRANGE KEY_NAME START END
4、Set(集合)
Redis的Set是string類型的無序集合。集合是通過哈希表實現的,所以添加,刪除,查找的複雜度都是O(1)。sadd 命令:添加一個string元素到,key對應的set集合中,成功返回1,如果元素已經在集合中返回0,key對應的set不存在返回錯誤。
語法:sadd key member
5、zset(sorted set:有序集合)
Redis zset 和 set 一樣也是string類型元素的集合,且不允許重複的成員。不同的是每個元素都會關聯一個double類型的分數。redis正是通過分數來爲集合中的成員進行從小到大的排序。zset的成員是唯一的,但分數(score)卻可以重複。
zadd 命令,添加元素到集合,元素在集合中存在則更新對應score,語法:zadd key score member
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章