Redis 05_List列表 数组 Hash散列
生活随笔
收集整理的這篇文章主要介紹了
Redis 05_List列表 数组 Hash散列
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
First:
- 基于Linked List實現
- 元素是字符串類型
- 列表頭尾增刪快,中間增刪慢,增刪元素是常態
- 元素可以重復出現
- 最多包含2^32-1元素
- 列表的索引
- 從左至右,從0開始
- 從右至左,從-1開始
list:
- 隊列:L/R ?R/L
- 棧: L/L ? R/R
- 數組:LINDEX LSET
- 阻塞:BL BR?
命令:
命令說明 block 塊,阻塞 left 左 right 右 exist 存在 ------------------------------------------- 左右或者頭尾壓入元素 string set key “abc” LPUSH key value [value ...] LPUSHX key value RPUSH key value [value ...] RPUSHX key value ------------------------------------------- 左右或者頭尾彈出元素 LPOP key RPOP key ------------------------------------------- 從一個列表尾部彈出元素壓入到另一個列表的頭部 string getset RPOPLPUSH source destination ------------------------------------------- 返回列表中指定范圍元素 LRANGE key start stop LRANGE key 0 -1 表示返回所有元素 show ------------------------------------------- 獲取指定位置的元素 LINDEX key index ------------------------------------------- 設置指定位置元素的值 LSET key index value ------------------------------------------- 列表長度,元素個數 string strlen LLEN key LRANGE KEY 0 -1?
去除指定范圍 外 元素 LTRIM key start stop ------------------------------ 舉例 RPUSH listkey c abc c ab 123 ab bj ab redis list LTRIM listkey 0 -1 LTRIM listkey 1 -1 LTRIM listkey 1 10000 ------------------------------ 微博的評論最后500條:蓋樓 lpush u1234:forumid:comments comments LTRIM u1234:forumid:comments 0 499 ------------------------------ 在列表中某個存在的值(pivot)前或后插入元素 LINSERT key BEFORE|AFTER pivot value key和pivot不存在,不進行任何操作 ------------------------------ 舉例 RPUSH lst Clojure C Lua LINSERT lst AFTER C PythonLINSERT lst BEFORE C RubyHash散列
?
設置單個字段 HSET key field value HSETNX key field valuekey的filed不存在的情況下執行,key不存在直接創建 ------------------------------------------------ 設置多個字段 HMSET key field value [field value ...] ------------------------------------------------ 返回字段個數 HLEN key ------------------------------------------------ 判斷字段是否存在 HEXISTS key field key或者field不存在,返回0 ------------------------------------------------ 返回字段值 HGET key field ------------------------------------------------ 返回多個字段值 HMGET key field [field ...] ------------------------------------------------ 返回所有的鍵值對 HGETALL key ------------------------------------------------ 返回所有字段名 HKEYS key ------------------------------------------------ 返回所有值 HVALS key ------------------------------------------------ 在字段對應的值上進行整數的增量計算 HINCRBY key field increment ------------------------------------------------ 在字段對應的值上進行浮點數的增量計算 HINCRBYFLOAT key field increment ------------------------------------------------ 刪除指定的字段 HDEL key field [field ...] ------------------------------------------------ 舉例 HINCRBY numbers x 100 HINCRBY numbers x -50 HINCRBYFLOAT numbers x 3.14 HDEL numbers x?Hash用途:
1、節約內存空間 2、每創建一個鍵,它都會為這個鍵儲存一些附加的管理信息(比如這個鍵的類型,這個鍵最后一次被訪問的時間等等) 3、所以數據庫里面的鍵越多,redis數據庫服務器在儲存附加管理信息方面耗費的內存就越多,花在管理數據庫鍵上的CPU也會越多在字段對應的值上進行浮點數的增量計算?不適合hash的情況 :
- 使用二進制位操作命令:因為Redis目前支持對字符串鍵進行SETBIT、GETBIT、BITOP等操作,如果你想使用這些操作,那么只能使用字符串鍵,雖然散列也能保存二進制數據
- 使用過期鍵功能:Redis的鍵過期功能目前只能對鍵進行過期操作,而不能對散列的字段進行過期操作,因此如果你要對鍵值對數據使用過期功能的話,那么只能把鍵值對儲存在字符串里面
Hash散列案例:
?
微博的好友關注:獲取關注微博的好友的列表 用戶ID為key,Field為好友ID,Value為關注時間 user:1000 user:606 20150808 xz pl 2011 zs 1949 用戶維度統計 統計數包括:關注數、粉絲數、喜歡商品數、發帖數 用戶為Key,不同維度為Field,Value為統計數 比如關注了5人 HSET user:100000 follow 5 HINCRBY user:100000 follow 1?
總結
以上是生活随笔為你收集整理的Redis 05_List列表 数组 Hash散列的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Storm 06_Storm 容错机制
- 下一篇: Zookeeper全解析——Paxos作