Geo類型
Redis3.2.0版本推出
能夠將用戶給定的地理位置信息存儲起來,並對這些信息進行操做git
GEOADD key longitude latitude member [longitude latitude member ...] //在使用排序集表示的地理空間索引中添加一個或多個地理空間項,時間複雜度O(log(N)) 127.0.0.1:6379> geoadd key1 121.3996887207031 31.04559326171875 member1 116.3883056640625 39.92889404296875 member2 (integer) 2 GEODIST key member1 member2 [unit] //返回地理空間索引的兩個成員之間的距離,時間複雜度O(log(N)) 127.0.0.1:6379> geodist key1 member1 member2 "1086809.8477"//默認單位爲m 127.0.0.1:6379> geodist key1 member1 member2 m "1086809.8477" 127.0.0.1:6379> geodist key1 member1 member2 km "1086.8098" 127.0.0.1:6379> geodist key1 member1 member2 ft "3565649.1067"//英尺 127.0.0.1:6379> geodist key1 member1 member2 mi "675.3140"//英里 GEOHASH key member [member ...] //將地理空間索引的成員做爲標準的geohash字符串返回,時間複雜度O(log(N)) 127.0.0.1:6379> geohash key1 member1 member2 1) "wtw2de8t9v0" 2) "wx4g0kz6sj0" GEOPOS key member [member ...] //返回地理空間索引成員的經度和緯度,時間複雜度O(log(N)) 127.0.0.1:6379> geopos key1 member1 member2 1) 1) "121.39969021081924438" 2) "31.0455930059736076" 2) 1) "116.38830453157424927" 2) "39.92889337816622941" GEORADIUS key longitude latitude radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC|DESC] [STORE key] [STOREDIST key] //官方解釋:查詢表示地理空間索引的已排序集,以獲取與給定的最大距離相匹配的成員 //以給定的經緯度爲中心,返回給定key包含的位置元素當中,與給定的中心不超過給定最大距離的全部位置元素,時間複雜度爲O(N+log(M)),N爲指定半徑範圍內的元素個數,M爲要返回的個數 //WITHDIST:在返回位置元素的同時將位置元素與中心之間的距離也一併返回,距離的單位和用戶給定的範圍單位保持一致 //WITHCOORD:將位置元素的經度和維度也一併返回 //WITHHASH:以52位有符號整數的形式,返回位置元素通過原始geohash編碼的有序集合分值,這個選項主要用於底層應用或者調試,實際中的做用並不大 //命令默認返回未排序的位置元素。經過如下兩個參數,用戶能夠指定被返回位置元素的排序方式: ASC:根據中心位置,按照從近到遠的方式返回位置元素 DESC:根據中心位置,按照從遠到近的方式返回位置元素 //COUNT:獲取前N個匹配元素 127.0.0.1:6379> geoadd key2 121.3996887207031 31.04559326171875 member1 116.3883056640625 39.92889404296875 member2 113.5325012207031 34.68359375 member3 115.9332885742188 28.55000305175781 member4 (integer) 4 127.0.0.1:6379> georadius key2 116.3883056640625 39.92889404296875 1500 km 1) "member4" 2) "member1" 3) "member3" 4) "member2" 127.0.0.1:6379> georadius key2 116.3883056640625 39.92889404296875 1500 km withcoord withdist withhash 1) 1) "member4" 2) "1266.3179" 3) (integer) 4051459586134239 4) 1) "115.93328922986984253" 2) "28.55000287189253072" 2) 1) "member1" 2) "1086.8099" 3) (integer) 4054751755931817 4) 1) "121.39969021081924438" 2) "31.0455930059736076" 3) 1) "member3" 2) "635.6729" 3) (integer) 4064933024035472 4) 1) "113.53250294923782349" 2) "34.6835946401745403" 4) 1) "member2" 2) "0.0001" 3) (integer) 4069885541758997 4) 1) "116.38830453157424927" 2) "39.92889337816622941" 127.0.0.1:6379> georadius key2 116.3883056640625 39.92889404296875 1500 km withcoord withdist withhash count 2 desc 1) 1) "member4" 2) "1266.3179" 3) (integer) 4051459586134239 4) 1) "115.93328922986984253" 2) "28.55000287189253072" 2) 1) "member1" 2) "1086.8099" 3) (integer) 4054751755931817 4) 1) "121.39969021081924438" 2) "31.0455930059736076" GEORADIUSBYMEMBER key member radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC|DESC] [STORE key] [STOREDIST key] //官方解釋:查詢表示地理空間索引的已排序集,以獲取與成員匹配的給定最大距離的成員 //給定距離由自定義成員變成了key中成員,時間複雜度爲O(log(N)+M),N爲指定半徑範圍內的元素個數,M爲要返回的個數
HyperLogLog類型
Redis2.8.9版本推出
redis的基數統計,這個結構能夠很是省內存的去統計各類計數,好比註冊IP數、每日訪問IP數、頁面實時UV、在線用戶數等。但它也有侷限性,就是隻能統計數量,而沒辦法去知道具體的內容是什麼。HyperLogLog在Redis中每一個鍵佔用的內容都是12K,理論存儲近似接近2^64個值,無論存儲的內容是什麼,它是一個基於基數估算的算法,只能比較準確的估算出基數,能夠使用少許固定的內存去存儲並識別集合中的惟一元素。並且這個估算的基數並不必定準確,是一個帶有0.81%標準錯誤的近似值。redis
PFADD key element [element ...] //將指定的元素添加到指定的HyperLogLog。 PFCOUNT key [key ...] //返回由HyperLogLog at key觀察到的集合的近似基數。 PFMERGE destkey sourcekey [sourcekey ...] //將N個不一樣的HyperLogLogs合併爲一個。 127.0.0.1:6379> PFADD key10 "aaa" "bbb" "ccc" (integer) 1 127.0.0.1:6379> pfadd keys1 "aaa" "bbb" "ccc" (integer) 1 127.0.0.1:6379> pfcount keys1 (integer) 3 127.0.0.1:6379> pfadd keys2 "bbb" "ccc" "ddd" (integer) 1 127.0.0.1:6379> pfcount keys1 keys2 (integer) 4 127.0.0.1:6379> pfmerge keys3 keys1 keys2 OK 127.0.0.1:6379> pfcount keys3 (integer) 4