Redis教程

String操做簡單概括:html

1.set get mset mget 設置和獲取值,單個與批量。redis

2.incr decr incrby decrby 原子加減操做,帶有by的能夠指定原子加減的數值。數據結構

3.setnx msetnx 單個和批量的原子設置值操做。併發

4.getset 原子獲取設置app

5.strlen append getrange setrange 截取或者設置部分字符串。高併發

6.getbit setbit 二進制偏移量的方式獲取和設置值大數據

7.setex 原子設置值而且設置有效時間。lua

上述命令中,若是涉及的的原子操做,一看到原子就能夠想到事務的一個特色就是原子性。因此,原子性操做的命令能夠用於併發的時候使用。.net

 

hashes的主要操做基本與map相似,概括記憶爲:線程

1. hset hget hdel hgetall 用於操做的設置,獲取,刪除,獲取所有的操做。

2.hexists hlen 判斷field是否存在以及獲取field的數量。

3.hsetnx不存在的時候才進行設置

4.hincrby 原子加操做

5.hkeys hvalues 獲取全部key和全部value

6.hmget hmset 批量獲取,設置

hashes適用場景,key-value的存儲方式的時候均可以用此種數據結構,也就是基本在你的數據類型中,能夠須要用map存儲的均可以用這個數據類型存儲在redis中。

 

List的主要操做基本與鏈表相似,概括記憶爲:

lpush rpush lpop rpop:從頭部尾部插入數據,彈出數據。

lpushx rpushx 插入數據的時候判斷key是否存在,若是不存在就不進行任何操做。

blpop brpop 阻塞的進行彈出操做。

lrange 獲取數據

llen 判斷數據量

lset lindex linsert ltrim lrm 對於鏈表的簡單操做,設置啊,插入啊,索引啊,刪除啊等操做。

rpoplpush brpoplpush 從某list彈出數據而且push到另外的list。b..只是阻塞式的操做。

既然是鏈表式的存儲操做,就必定會具備鏈表的特性,插入刪除較快,索引較慢,因此此數據結構通常用於有序的數據存儲,以及能夠用於消息隊列。

 

Set的主要操做基本與鏈表相似,概括記憶爲:

1.sadd spop srandmember srem smove 都是set的實際操做命令,好比添加啊,刪除彈出,不刪除彈出,刪除,移動之類的。

2.scard set中的元素個數

3.sdiff sinter sunion 取差集,交集,並集。

4.sdiffstore sinterstore sunionstore 取差,交,並之後放到新的set

set就是一個無序的集合,操做仍是比較方便的。實際應用場景中,好比記錄一個鏈接被用戶點擊數的時候均可以使用。

 

SortedSet的主要操做基本與鏈表相似,概括記憶爲:

1.zadd zrem zremrangebyrank zramrangebyscore 有序集合的添加與刪除操做,刪除分爲三種方式,單個和按照區間刪除。

2.zcard zcount 集合中的元素數量,以及集合區間內的元素數量。

3.zrange zrevrange zrank zrevrank zrangebyscore zrevrangebyscore 按照區間返回數據,rev爲降序的方式返回。

SortedSet就是一個有序的集合,實際應用場景中,若是有分頁的操做,或者按照區間統計的時候可使用此數據結構。

 

Bitmaps,能夠計算某數據是否已存在。redis的key和value自己就支持二進制的存儲方式,因此bitmaps只是一個獨特的擴展。由於是面向字節操做,因此他的最大長度就是512M,最適合設置成2^32個不一樣字節。通常的使用場景都是單一的統計,效率較高。好比簽到啊,好比點擊啊。

 

HyperLoglog,能夠記錄一共存在多少不一樣數據的總量。

一樣是用於計算,HyperLoglog在適用場景方面與Bitmaps方面有什麼不一樣呢。我我的的理解是,Bitmaps更適合用於驗證的大數據,好比簽到,

記錄某用戶是否是當天進行了簽到,簽到了多少天的時候。也就是說,你不光須要記錄數據,還須要對數據進行驗證的時候使用Bitmaps。

HyperLoglog則用於只記錄的時候,好比訪問的uv統計。

 

GEO地理位置

 

redis的持久化方式有兩種,分別是:RDB和AOF。

RDB簡單的說就是俗稱的快照。AOF呢基本就是bin log的模式。

 

pub/sub 實現中是消息發送者將消息發送給頻道,而後訂閱的頻道的客戶收到響應的消息。訂閱能夠進行精確訂閱,也能夠經過表達式進行訂閱。

注意的是,subscribe的時候線程是會被阻塞的。

 

使用Lua腳本,經過EVAL 命令調用

  http://www.cnblogs.com/ysuzhaixuefei/p/4057458.html

 redis+lua解決搶紅包高併發的問題 http://blog.csdn.net/hengyunabc/article/details/19433779/

 

http://www.cnblogs.com/simibaba/category/1021702.html

http://www.liuhaihua.cn/redis%E6%95%99%E7%A8%8B

相關文章
相關標籤/搜索