Redis這些你不知道的操作命令,必須get

Redis Java Memcached 十維教育 2019-06-21

一.redis數據類型

Redis的五大數據類型

1.string(字符串)

String(字符串)

string是redis最基本的類型,你可以理解成與Memcached一模一樣的類型,一個key對應一個value。

string類型是二進制安全的。意思是redis的string可以包含任何數據。比如jpg圖片或者序列化的對象 。

string類型是Redis最基本的數據類型,一個redis中字符串value最多可以是512M

2.hash(哈希,類似java裡的Map)

Hash(哈希)

Redis hash 是一個鍵值對集合。

Redis hash是一個string類型的field和value的映射表,hash特別適合用於存儲對象。

類似Java裡面的Map<String,Object>

3.list(列表)

List(列表)

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

它的底層實際是個鏈表

4.set(集合)

Set(集合)

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

5.zset(sorted set:有序集合)

zset(sorted set:有序集合)

Redis zset 和 set 一樣也是string類型元素的集合,且不允許重複的成員。

不同的是每個元素都會關聯一個double類型的分數。

redis正是通過分數來為集合中的成員進行從小到大的排序。zset的成員是唯一的,但分數(score)卻可以重複。(比如遊戲中劃分名稱,殺了60個怪的一個名稱,70個怪的一個名稱,80的一個名稱,90的一個名稱,100的一個名稱,那玩家可能就會被分成不同的區間從而達到分組的效果)

二.基本命令操作

keys

1.keys

Redis這些你不知道的操作命令,必須get

2. exists key的名字,判斷某個key是否存在

Redis這些你不知道的操作命令,必須get

3. move key db --->當前庫就沒有了,被移除了

Redis這些你不知道的操作命令,必須get

4. expire key 秒鐘:為給定的key設置過期時間

Redis這些你不知道的操作命令,必須get

5. ttl key 查看還有多少秒過期,-1表示永不過期,-2表示已過期

Redis這些你不知道的操作命令,必須get

6. type key 查看你的key是什麼類型

Redis這些你不知道的操作命令,必須get

字符串(string)

應用場景

常規自動計數,微博粉絲,訂閱數,點贊數等

特點:單值單value

1. set/get/del/append/strlen

Redis這些你不知道的操作命令,必須get

2.Incr/decr/incrby/decrby,一定要是數字才能進行加減

redis字符串的這一功能也凸顯了redis字符串的應用場景:常規自動計數,微博粉絲,訂閱數,點贊數等等,並且redis提供的這個簡單的命令即可完成數的自動增減以及幅度

Redis這些你不知道的操作命令,必須get

3. getrange/setrange

getrange:獲取指定區間範圍內的值,類似between......and的關係

從零到負一表示全部

setrange設置指定區間範圍內的值,格式是setrange key值 具體值

Redis這些你不知道的操作命令,必須get

4. setex(set with expire)鍵秒值/setnx(set if not exist)

setex:設置帶過期時間的key,動態設置。

setex 鍵 秒值 真實值

setnx:只有在 key 不存在時設置 key 的值。

Redis這些你不知道的操作命令,必須get

5. mset/mget/msetnx

mset:同時設置一個或多個 key-value 對。

mget:獲取所有(一個或多個)給定 key 的值。

msetnx:同時設置一個或多個 key-value 對,當且僅當所有給定 key 都不存在。

Redis這些你不知道的操作命令,必須get

6. getset(先get再set)

getset:將給定 key 的值設為 value ,並返回 key 的舊值(old value)。

簡單一句話,先get然後立即set

Redis這些你不知道的操作命令,必須get

列表(List)

應用場景

消息隊列,比如微信朋友圈展示,是按時間遠近來逐條展示的,微博亦是如此

特點:單值多value

1. lpush/rpush/lrange

Redis這些你不知道的操作命令,必須get

2. lpop/rpop

Redis這些你不知道的操作命令,必須get

3. lindex,按照索引下標獲得元素(從上到下)

通過索引獲取列表中的元素 lindex key index

Redis這些你不知道的操作命令,必須get

4. llen

Redis這些你不知道的操作命令,必須get

5. lrem key 刪N個value

* 從left往right刪除2個值等於v1的元素,返回的值為實際刪除的數量

* LREM list3 0 值,表示刪除全部給定的值。零個就是全部值

Redis這些你不知道的操作命令,必須get

6. ltrim key 開始index 結束index,截取指定範圍的值後再賦值給key

ltrim:截取指定索引區間的元素,格式是ltrim list的key 起始索引 結束索引

Redis這些你不知道的操作命令,必須get

7. rpoplpush 源列表 目的列表

移除列表的最後一個元素,並將該元素添加到另一個列表並返回

Redis這些你不知道的操作命令,必須get

8. lset key index value

Redis這些你不知道的操作命令,必須get

9. linsert key before/after 值1 值2

Redis這些你不知道的操作命令,必須get

列表性能總結:

它是一個字符串鏈表,left、right都可以插入添加;

如果鍵不存在,創建新的鏈表;

如果鍵已存在,新增內容;

如果值全移除,對應的鍵也就消失了。

鏈表的操作無論是頭和尾效率都極高,但假如是對中間元素進行操作,效率就很慘淡了。

集合(set)

應用場景

例如qq,微博應用中,會將一個每個用戶所有的關注人放入一個集合,將每個用戶所有的粉絲存在另一個集合,那麼我們就可以對集合類型的數據結構做交叉並集的操作,從而得到類似於共同關注,共同喜好,二度好友等功能

特點:單值多value

1. sadd/smembers/sismember

Redis這些你不知道的操作命令,必須get

2. scard,獲取集合裡面的元素個數

獲取集合裡面的元素個數

Redis這些你不知道的操作命令,必須get

3. srem key value 刪除集合中元素

Redis這些你不知道的操作命令,必須get

4. srandmember key 某個整數(隨機出幾個數)

* 從set集合裡面隨機取出2個

* 如果超過最大數量就全部取出,

* 如果寫的值是負數,比如-3 ,表示需要取出3個,但是可能會有重複值。

Redis這些你不知道的操作命令,必須get

5. spop key 隨機出棧

Redis這些你不知道的操作命令,必須get

6. smove key1 key2 在key1裡某個值

作用是將key1裡的某個值賦給key2

Redis這些你不知道的操作命令,必須get

7. 數學集合類

1.差集:sdiff, 交集:sinter, 並集:sunion

Redis這些你不知道的操作命令,必須get

哈希(Hash)

應用場景

非常適合存儲值對象的信息,如一個用戶對於的用戶名,年齡,性別,等一系列信息

特點:KV模式不變,但V是一個鍵值對

1. hset/hget/hmset/hmget/hgetall/hdel

Redis這些你不知道的操作命令,必須get

2.hlen, hexists key 在key裡面的某個值的key

Redis這些你不知道的操作命令,必須get

3. hkeys/hvals

Redis這些你不知道的操作命令,必須get

4. hincrby/hincrbyfloat

Redis這些你不知道的操作命令,必須get

5. hsetnx

不存在賦值,存在了無效。

Redis這些你不知道的操作命令,必須get

有序集合(Zset) 

應用場景

排行榜,積分榜,各種對比排行數據的應用場景

在set基礎上,加一個score值。

之前set是k1 v1 v2 v3,

現在zset是k1 score1 v1 score2 v2

1. zadd/zrange

無序集合可以用在遊戲中的給玩家分段的操作中,下面設置的數值60,70,80為分段標準,對應的v1,v2,v3就是一系列的元素value

Redis這些你不知道的操作命令,必須get

Redis這些你不知道的操作命令,必須get

Redis這些你不知道的操作命令,必須get

2. zrem key 某score下對應的value值,作用是刪除元素

刪除元素,格式是zrem zset的key 項的值,項的值可以是多個

zrem key score某個對應值,可以是多個值

Redis這些你不知道的操作命令,必須get

3. zcard/zcount key score區間/zrank key values值,作用是獲得下標值/zscore key 對應值,獲得分數

zcard :獲取集合中元素個數

zcount :獲取分數區間內元素個數,zcount key 開始分數區間 結束分數區間

zrank: 獲取value在zset中的下標位置

zscore:按照值獲得對應的分數

Redis這些你不知道的操作命令,必須get

4. zrevrank key values值,作用是逆序獲得下標值

正序、逆序獲得下標索引值

Redis這些你不知道的操作命令,必須get

5. zrevrange

Redis這些你不知道的操作命令,必須get

6. zrevrangebyscore key 結束score 開始score

zrevrangebyscore zset1 90 60 withscores 分數是反著來的

Redis這些你不知道的操作命令,必須get

相關推薦

推薦中...