1. 程式人生 > >Redis數據類型(上)

Redis數據類型(上)

ima 十分 類型 安全性 after 2個 一個 所有 div

數據類型

1.string(字符串) 2.hash(哈希,類似java裏的Map) 3.list(列表) 4.set(集合) 5.zset(sorted set:有序集合)

6.基數

String(字符串) string是redis最基本的類型,你可以理解成與Memcached一模一樣的類型,一個key對應一個value。 string類型是二進制安全的。意思是redis的string可以包含任何數據。比如jpg圖片或者序列化的對象 。 string類型是Redis最基本的數據類型,一個redis中字符串value最多可以是512M

Hash(哈希) Redis hash 是一個鍵值對集合。 Redis hash是一個string類型的field
value的映射表,hash特別適合用於存儲對象。 類似Java裏面的Map<String,Object>

List(列表) Redis 列表是簡單的字符串列表,按照插入順序排序。你可以添加一個元素導列表的頭部(左邊)或者尾部(右邊) 它的底層實際是個鏈表

Set(集合) Redis的Set是string類型的無序集合。它是通過HashTable實現實現的

zset(sorted set:有序集合) Redis zset 和 set 一樣也是string類型元素的集合,且不允許重復的成員。 不同的是每個元素都會關聯一個double類型的分數。 redis正是通過分數來為集合中的成員進行從小到大的排序。zset的成員是唯一的,但分數(score)卻可以重復。

命令地址:http://redisdoc.com/

Redis 鍵(key)

1. keys * 2. exists key的名字,判斷某個key是否存在 3. move key db --->當前庫就沒有了,被移除了 4. expire key 秒鐘:為給定的key設置過期時間 5. ttl key 查看還有多少秒過期,-1表示永不過期,-2表示已過期,即已被刪除 6. type key 查看你的key是什麽類型

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

String類型: 字符串是Redis的最基本額數據結構,以一個鍵和一個值存儲在Redis內部 類似java的Map結構,通過鍵去找值

技術分享圖片

基本命令:

技術分享圖片

支持簡單運算的命令:

技術分享圖片

下面是代碼的測試流程:

技術分享圖片

技術分享圖片

getrange/setrange getrange:獲取指定區間範圍內的值,類似between......and的關系從零到負一表示全部,默認從0開始 0 -1:代表全部 setrange設置指定區間範圍內的值,格式是setrange key值 具體值 即修改原來字符串額值從某個位置開始

技術分享圖片

setex(set with expire)鍵秒值/setnx(set if not exist) setex:設置帶過期時間的key,動態設置。 setex 鍵 秒值 真實值 setnx:只有在 key 不存在時設置 key 的值。

技術分享圖片

mset/mget/msetnx mset:同時設置一個或多個 key-value 對。 mget:獲取所有(一個或多個)給定 key 的值。 msetnx:同時設置一個或多個 key-value 對,當且僅當所有給定 key 都不存在。 否則不生效

技術分享圖片

鏈表List 鏈表結構是 Redis 中一個常用的結構,它可以存儲多個字符串,而且它是有序的 Redis 鏈表是雙向的,

技術分享圖片

使用鏈表結構就意味著讀性能的喪失 鏈表只能從 個方向中去遍歷所要節點 優勢:在於插入和刪除的便利 鏈表的數據節點是分配在不同的內存域的,並不連續

技術分享圖片

由此可見,鏈表結構的使用是需要註意場景的,對於那些經常需要對數據進行插入和 刪除的列表數據使用它是十分方便的,因為它可以在不移動其他節點的情況下完成插入和 刪除。而對於需要經常查找的,使用它性能並不佳,它只能從左到右或者從右到左的查找 和比對。

技術分享圖片

lpush/rpush/lrange lpush: 從鏈表的左邊插入 rpush: 從鏈表的右邊插入 lrange :查看鏈表的節點值 lrange list start end end=-1代表全部

技術分享圖片

lpop/rpop lpop:刪除左邊的第一個節點,並且將其返回 rpop:刪除右邊第一個節點,並且將其返回

技術分享圖片

lindex,按照索引下標獲得元素(從上到下) lindex: lindex key index,索引從零開始 通過索引獲取列表中的元素

技術分享圖片

llen 求鏈表的長度,返回長度

技術分享圖片

lrem key 刪N個value * 從left往right刪除2個值等於v1的元素,返回的值為實際刪除的數量 * LREM list3 0 值,表示刪除全部給定的值。零個就是全部值 lrem list 個數 節點值

技術分享圖片

ltrim key 開始index 結束index,截取指定範圍的值後再賦值給key ltrim:截取指定索引區間的元素,格式是ltrim list的key 起始索引 結束索引 【start end】 開區間 會把截取的內容保存在原來的list中,默認截取位置從0 開始

技術分享圖片

rpoplpush 源列表 目的列表 移除列表的最後一個元素,並將該元素添加到另一個列表並返回 移除源列表的最後一個元素並且將其左插到目的列表中

技術分享圖片

lset key index value 給index出的索引修改值

技術分享圖片

linsert key before/after 值1 值2 在值1 前面/後面 插入值2

技術分享圖片

它是一個字符串鏈表,left、right都可以插入添加; 如果鍵不存在,創建新的鏈表; 如果鍵已存在,新增內容; 如果值全移除,對應的鍵也就消失了。 鏈表的操作無論是頭和尾效率都極高,但假如是對中間元素進行操作,效率就很慘淡了。 鏈表的命令都是進程不安全的, Red is 提供了鏈表的阻塞命令,它 在運行的時候 會給鏈表加鎖,以保 證操作鏈表的命令安全性,

Redis數據類型(上)