尚矽谷redis學習4-資料型別
redis的資料型別包括String,Hash(類似於JAVA裡的map),List,Set,Zset(sorted Set)
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)卻可以重複。
www.redisdoc.com有全部命令
但一般用不到這麼多,我們可以看一下常用的
Key
String
List
Set
Hash
Zset
下面再說一說必須掌握的一些命令
Key
String
下面具體說說
getrange/setrange
從零到負一表示全部
setrange
設定指定區間範圍內的值,格式是setrange key值 具體值
setex/setnx
setex:設定帶過期時間的key,動態設定。
setex 鍵 秒值 真實值
setnx:只有在 key 不存在時設定 key 的值。
mset/mget/msetnx
mset:同時設定一個或多個 key-value 對。
mget:獲取所有(一個或多個)給定 key 的值。
msetnx:同時設定一個或多個 key-value 對,當且僅當所有給定 key 都不存在。
getset
getset:將給定 key 的值設為 value ,並返回 key 的舊值(old value)。
簡單一句話,先get然後立即set
List
下面來具體說說
lpop/rpop
通過索引獲取列表中的元素 lindex key index
* 從left往right刪除2個值等於v1的元素,返回的值為實際刪除的數量
* LREM list3 0 值,表示刪除全部給定的值。零個就是全部值
ltrim:擷取指定索引區間的元素,格式是ltrim list的key 起始索引 結束索引
移除列表的最後一個元素,並將該元素新增到另一個列表並返回
lset
在list某個已有值的前後再新增具體值
list insert key before/after value
效率
它是一個字串連結串列,left、right都可以插入新增;
如果鍵不存在,建立新的連結串列;
如果鍵已存在,新增內容;
如果值全移除,對應的鍵也就消失了。
連結串列的操作無論是頭和尾效率都極高,但假如是對中間元素進行操作,效率就很慘淡了。
Set
sadd/smembers/sismember
scard
獲取集合裡面的元素個數
srem key value 刪除集合中的元素
srandmember key num
* 從set集合裡面隨機取出2個
* 如果超過最大數量就全部取出,
* 如果寫的值是負數,比如-3 ,表示需要取出3個,但是可能會有重複值。
spop key 隨機出棧
smove key1 key2
sdiff
在第一個set裡面而不在後面任何一個set裡面的項
sinter
sunion
Hash
常用
kv模式不變,但v是一個鍵值對
hset/hget/hmset/hmget/hgetall/hdel
hlen:求長度
hexists key value的key 看在一個hash中一個key是否存在
hkeys/hvals
hincrby/hincrbyfloat
hsetnx
Zset(sortedset):有序集合:是在set基礎上,加一個score值,之前set是key v1 v2 v3,現在是key score1 v1 score2 v2 score3 v3
zadd/zrange
zrangebyscore
zrem:刪除元素
刪除元素,格式是zrem zset的key 項的值,項的值可以是多個
zrem key score某個對應值,可以是多個值
zcard/zcount/zrank/zscore
zcard :獲取集合中元素個數
zcount :獲取分數區間內元素個數,zcount key 開始分數區間 結束分數區間
zrank: 獲取value在zset中的下標位置
zscore:按照值獲得對應的分數
zrevrank
正序、逆序獲得下標索引值
zrevrange
zrevrangebyscore