Redis資料型別(上)
資料型別
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)卻可以重複。
命令地址: ofollow,noindex" target="_blank"> 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 提供了連結串列的阻塞命令,它 在執行的時候 會給連結串列加鎖,以保
證操作連結串列的命令安全性,