1.String字串
string是redis最基本的型別,你可以理解成與Memcached一模一樣的型別,一個key對應一個value,
string型別是二進制安全的,意思是redis的string可以包含任何資料,比如jpg圖片或者序列化的物件,
string型別是Redis最基本的資料型別,一個redis中字串value最多可以是512M,
1)Redis Key

|
#keys * 127.0.0.1:6379> keys * (empty list or set)
#set k1 v1 127.0.0.1:6379> set k1 v1 OK
#exists key:判斷某個key是否存在 127.0.0.1:6379> EXISTS k1 (integer) 1
#move key db:移動key到別處 127.0.0.1:6379> MOVE k1 1 (integer) 1 127.0.0.1:6379> keys * 1) "k3" 2) "k2" 127.0.0.1:6379> select 1 OK 127.0.0.1:6379[1]> keys * 1) "k1"
#expire key:為給定的key設定過期時間 #ttl key:查看還有多少秒過期,-1表示永不過期,-2表示已過期 127.0.0.1:6379> keys * 1) "k3" 2) "k2" 3) "k1" 127.0.0.1:6379> EXPIRE k1 10 (integer) 1 127.0.0.1:6379> ttl k1 (integer) 4 127.0.0.1:6379> keys * 1) "k3" 2) "k2"
#type key:查看key是什么型別 127.0.0.1:6379> type k1 string
|
2)Redis String

|
#set|get|del|append|strlen 127.0.0.1:6379> set k1 v1 OK 127.0.0.1:6379> set k2 v2 OK 127.0.0.1:6379> set k3 v3 OK 127.0.0.1:6379> get k1 "v1" 127.0.0.1:6379> del k1 (integer) 1 127.0.0.1:6379> get k1 (nil) 127.0.0.1:6379> APPEND k2 xxxx (integer) 6 127.0.0.1:6379> get k2 "v2xxxx" 127.0.0.1:6379> STRLEN k2 (integer) 6
#Incr|decr|incrby|decrby #注:value值一定要是數字才能進行加減 127.0.0.1:6379> set k1 1 OK 127.0.0.1:6379> INCR k1 (integer) 2 127.0.0.1:6379> get k1 "2" 127.0.0.1:6379> DECR k1 (integer) 1 127.0.0.1:6379> get k1 "1" 127.0.0.1:6379> INCRBY k1 10 (integer) 11 127.0.0.1:6379> get k1 "11" 127.0.0.1:6379> DECRBY k1 10 (integer) 1
#getrange key start end:獲取指定區間范圍內的值,類似between......and的關系.從零到負一表示全部 #setrange key start str:設定指定區間范圍內的值,格式是setrange key值 具體值 127.0.0.1:6379> set k1 abcdefgh OK 127.0.0.1:6379> GETRANGE k1 0 -1 "abcdefgh" 127.0.0.1:6379> GETRANGE k1 0 2 "abc" 127.0.0.1:6379> SETRANGE k1 1 xxx (integer) 8 127.0.0.1:6379> GETRANGE k1 0 -1 "axxxefgh"
#setex key time value:設定帶過期時間的key,動態設定 #setnx key value:在 key 不存在時設定 key 的值, 127.0.0.1:6379> SETEX k1 15 hello OK 127.0.0.1:6379> get k1 "hello" 127.0.0.1:6379> ttl k1 (integer) 9 127.0.0.1:6379> ttl k1 (integer) -2 127.0.0.1:6379> get k1 (nil) 127.0.0.1:6379> SETNX k1 hello (integer) 1 127.0.0.1:6379> get k1 "hello" 127.0.0.1:6379> setnx k1 hello2 (integer) 0 127.0.0.1:6379> get k1 "hello" 127.0.0.1:6379> SETNX k6 hello2 (integer) 1 127.0.0.1:6379> get k6 "hello2"
#mset key1 value1 key2 value2 ...:同時設定一個或多個 key-value 對 #mget key1 key2 ...:獲取所有(一個或多個)給定 key 的值 #msetnx k1 value1 key2 value2...:同時設定一個或多個 key-value 對,當且僅當所有給定 key 都不存在 127.0.0.1:6379> mset k1 v1 k2 v2 k3 v3 OK 127.0.0.1:6379> mget k1 k2 k3 1) "v1" 2) "v2" 3) "v3" 127.0.0.1:6379> MSETNX k3 v4 k4 v4 (integer) 0 127.0.0.1:6379> MSETNX k4 v4 k5 v5 (integer) 1
#getset key value:將給定 key 的值設為 value ,并回傳 key 的舊值(old value) 127.0.0.1:6379> get k1 "v1" 127.0.0.1:6379> getset k1 hello "v1" 127.0.0.1:6379> get k1 "hello" |
2.List串列
Redis 串列是簡單的字串串列,按照插入順序排序,你可以添加一個元素導串列的頭部(左邊)或者尾部(右邊),底層實際是個鏈表

|
#lpush key value1 value2...|rpush key value1 value2...|lrange key start end[0 -1為全部] 127.0.0.1:6379> LPUSH list1 1 2 3 4 5 (integer) 5 127.0.0.1:6379> LRANGE list1 0 -1 1) "5" 2) "4" 3) "3" 4) "2" 5) "1" 127.0.0.1:6379> RPUSH list2 1 2 3 4 5 (integer) 5 127.0.0.1:6379> LRANGE list2 0 -1 1) "1" 2) "2" 3) "3" 4) "4" 5) "5"
#LPOP list|RPOP list 127.0.0.1:6379> LPOP list1 "5" 127.0.0.1:6379> LPOP list2 "1" 127.0.0.1:6379> RPOP list1 "1" 127.0.0.1:6379> RPOP list2 "5"
#lindex key index:按照索引下標獲得元素(從上到下) 127.0.0.1:6379> LRANGE list1 0 -1 1) "4" 2) "3" 3) "2" 127.0.0.1:6379> LRANGE list2 0 -1 1) "2" 2) "3" 3) "4" 127.0.0.1:6379> LINDEX list1 3 (nil) 127.0.0.1:6379> LINDEX list1 2 "2" 127.0.0.1:6379> LINDEX list2 2 "4"
#llen key 127.0.0.1:6379> LLEN list1 (integer) 3
#LREM key num value:從left往right洗掉num 個值等于value的元素,回傳的值為實際洗掉的數量 #LREM list3 0 值,表示洗掉全部給定的值,零個就是全部值 127.0.0.1:6379> RPUSH list3 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5 (integer) 15 127.0.0.1:6379> LREM list3 (error) ERR wrong number of arguments for 'lrem' command 127.0.0.1:6379> LREM list3 2 3 (integer) 2 127.0.0.1:6379> LRANGE list3 0 -1 1) "1" 2) "1" 3) "1" 4) "2" 5) "2" 6) "2" 7) "3" 8) "4" 9) "4" 10) "4" 11) "5" 12) "5" 13) "5"
#LTRIM key start end:截取指定索引區間的元素 127.0.0.1:6379> LPUSH list1 1 2 3 4 5 6 (integer) 6 127.0.0.1:6379> LRANGE list1 0 -1 1) "6" 2) "5" 3) "4" 4) "3" 5) "2" 6) "1" 127.0.0.1:6379> LTRIM list1 2 3 OK 127.0.0.1:6379> LRANGE list1 0 -1 1) "4" 2) "3"
#RPOPLPUSH key1 key2:移除串列的最后一個元素,并將該元素添加到另一個串列并回傳 127.0.0.1:6379> LPUSH list1 1 2 3 (integer) 3 127.0.0.1:6379> LPUSH list2 4 5 6 (integer) 3 127.0.0.1:6379> LRANGE list1 0 -1 1) "3" 2) "2" 3) "1" 127.0.0.1:6379> LRANGE list2 0 -1 1) "6" 2) "5" 3) "4" 127.0.0.1:6379> RPOPLPUSH list1 list2 "1" 127.0.0.1:6379> LRANGE list1 0 -1 1) "3" 2) "2" 127.0.0.1:6379> LRANGE list2 0 -1 1) "1" 2) "6" 3) "5" 4) "4"
#LSET key index value:將index位置的值更換為value 127.0.0.1:6379> LRANGE list1 0 -1 1) "3" 2) "2" 127.0.0.1:6379> LSET list1 1 xxx OK 127.0.0.1:6379> LRANGE list1 0 -1 1) "3" 2) "xxx"
#LINSERT key before|after index value:在list某個已有值的前|后再添加具體值 127.0.0.1:6379> LPUSH list1 1 2 3 4 5 (integer) 5 127.0.0.1:6379> LRANGE list1 0 -1 1) "5" 2) "4" 3) "3" 4) "2" 5) "1" 127.0.0.1:6379> LINSERT list1 before 3 java (integer) 6 127.0.0.1:6379> LRANGE list1 0 -1 1) "5" 2) "4" 3) "java" 4) "3" 5) "2" 6) "1" 127.0.0.1:6379> LINSERT list1 after 3 javaweb (integer) 7 127.0.0.1:6379> LRANGE list1 0 -1 1) "5" 2) "4" 3) "java" 4) "3" 5) "javaweb" 6) "2" 7) "1" |
List總結
|
它是一個字串鏈表,left、right都可以插入添加; 如果鍵不存在,創建新的鏈表; 如果鍵已存在,新增內容; 如果值全移除,對應的鍵也就消失了, 鏈表的操作無論是頭和尾效率都極高,但假如是對中間元素進行操作,效率就很慘淡了, |
3.Set集合
Redis的Set是string型別的無序集合,它是通過HashTable實作的,

|
#sadd|smembers|sismember 127.0.0.1:6379> sadd set1 1 1 2 2 3 3 (integer) 3 127.0.0.1:6379> SMEMBERS set1 1) "1" 2) "2" 3) "3" 127.0.0.1:6379> SISMEMBER set1 1 (integer) 1 127.0.0.1:6379> SISMEMBER set1 a (integer) 0
#SCARD:獲取集合里面的元素個數 127.0.0.1:6379> SCARD set1 (integer) 3
# SREM key value:洗掉集合中元素 127.0.0.1:6379> SMEMBERS set1 1) "1" 2) "2" 3) "3" 127.0.0.1:6379> SREM set1 1 (integer) 1 127.0.0.1:6379> SMEMBERS set1 1) "2" 2) "3"
# SRANDMEMBER key num:隨機出幾個值 #num:超過最大數量就全部取出.如果寫的值是負數,比如-3 ,表示需要取出3個,但是可能會有重復值 127.0.0.1:6379> FLUSHALL OK 127.0.0.1:6379> SADD set1 1 2 3 4 5 (integer) 5 127.0.0.1:6379> SMEMBERS set1 1) "1" 2) "2" 3) "3" 4) "4" 5) "5" 127.0.0.1:6379> SRANDMEMBER set1 2 1) "5" 2) "2" 127.0.0.1:6379> SRANDMEMBER set1 2 1) "3" 2) "4" 127.0.0.1:6379> SRANDMEMBER set1 2 1) "3" 2) "1" 127.0.0.1:6379> SRANDMEMBER set1 2 1) "3" 2) "1"
#SPOP key:隨機出堆疊 127.0.0.1:6379> SMEMBERS set1 1) "1" 2) "2" 3) "3" 4) "4" 5) "5" 127.0.0.1:6379> SPOP set1 "4" 127.0.0.1:6379> SPOP set1 "1" 127.0.0.1:6379> SPOP set1 "2" 127.0.0.1:6379> SMEMBERS set1 1) "3" 2) "5"
#SMOVE key1 key2:將key1里的某個值賦給key2 127.0.0.1:6379> FLUSHALL OK 127.0.0.1:6379> SADD set1 1 2 3 4 5 (integer) 5 127.0.0.1:6379> SMEMBERS set1 1) "1" 2) "2" 3) "3" 4) "4" 5) "5" 127.0.0.1:6379> smove set1 set2 1 (integer) 1 127.0.0.1:6379> SMEMBERS set1 1) "2" 2) "3" 3) "4" 4) "5" 127.0.0.1:6379> SMEMBERS set2 1) "1"
#SDIFF key1 key2:在ey1里面而不在后面任何一個key2里面的項 #SINTER key1 key2:在key1中且在key2中含有 #SUNION key1 key2:在key1中且在key2中的并集 127.0.0.1:6379> FLUSHALL OK 127.0.0.1:6379> SADD set1 1 2 3 4 5 (integer) 5 127.0.0.1:6379> SADD set2 4 5 6 7 8 (integer) 5 127.0.0.1:6379> SDIFF set1 set2 1) "1" 2) "2" 3) "3" 127.0.0.1:6379> SDIFF set2 set1 1) "6" 2) "7" 3) "8" 127.0.0.1:6379> SINTER set1 set2 1) "4" 2) "5" 127.0.0.1:6379> SUNION set1 set2 1) "1" 2) "2" 3) "3" 4) "4" 5) "5" 6) "6" 7) "7" 8) "8"
|
4.Hash哈希
Redis hash 是一個鍵值對集合,
Redis hash是一個string型別的field和value的映射表,hash特別適合用于存盤物件,類似于Java的Map的<String,Object>,

|
#hset|hget|hmset|hmget|hgetall|hdel 127.0.0.1:6379> HSET hash1 k1 v1 (integer) 1 127.0.0.1:6379> HGET hash1 k1 "v1" 127.0.0.1:6379> HMSET hash2 id 1 name pluto age 24 OK 127.0.0.1:6379> HGETALL hash1 1) "k1" 2) "v1" 127.0.0.1:6379> HGETALL hash2 1) "id" 2) "1" 3) "name" 4) "pluto" 5) "age" 6) "24" 127.0.0.1:6379> HDEL hash1 k1 (integer) 1 127.0.0.1:6379>
#HLEN:計算hash的長度 127.0.0.1:6379> HLEN hash1 (integer) 0 127.0.0.1:6379> HLEN hash2 (integer) 3
#HEXISTS hashname key:在key里面的某個值的key 127.0.0.1:6379> HGETALL hash2 1) "id" 2) "1" 3) "name" 4) "pluto" 5) "age" 6) "24" 127.0.0.1:6379> HEXISTS hash2 id (integer) 1 127.0.0.1:6379> HEXISTS hash2 email (integer) 0
#HKEYS|HVALS 127.0.0.1:6379> HKEYS hash2 1) "id" 2) "name" 3) "age" 127.0.0.1:6379> HVALS hash2 1) "1" 2) "pluto" 3) "24"
#HINCRBY|HINCRBYFLOAT:增加整數|增加小數 127.0.0.1:6379> HINCRBY hash2 age 2 (integer) 26 127.0.0.1:6379> HINCRBY hash2 age 2 (integer) 28 127.0.0.1:6379> HINCRBY hash2 age 2 (integer) 30 127.0.0.1:6379> hset hash2 score 91.5 (integer) 1 127.0.0.1:6379> HGETALL hash2 1) "id" 2) "1" 3) "name" 4) "pluto" 5) "age" 6) "30" 7) "score" 8) "91.5" 127.0.0.1:6379> HINCRBYFLOAT hash2 score 0.5 "92"
#HSETNX hash key value:不存在賦值,存在了不賦值 127.0.0.1:6379> HGETALL hash2 1) "id" 2) "1" 3) "name" 4) "pluto" 5) "age" 6) "30" 7) "score" 8) "92" 127.0.0.1:6379> HSETNX hash2 name plutoo (integer) 0 127.0.0.1:6379> HSETNX hash2 email [email protected] (integer) 1 127.0.0.1:6379> HGETALL hash2 1) "id" 2) "1" 3) "name" 4) "pluto" 5) "age" 6) "30" 7) "score" 8) "92" 9) "email" 10) "[email protected]" |
5.Zset
Redis zset 和 set 一樣也是string型別元素的集合,且不允許重復的成員,
不同的是每個元素都會關聯一個double型別的分數,
redis正是通過分數來為集合中的成員進行從小到大的排序,zset的成員是唯一的,但分數(score)卻可以重復,
在set基礎上,加一個score值,之前set是k1 v1 v2 v3,現在zset是k1 score1 v1 score2 v2,

|
#ZADD |ZRANGE 127.0.0.1:6379> ZADD zset1 60 v1 70 v2 80 v3 90 v4 (integer) 4 127.0.0.1:6379> ZADD zset1 60 v1 70 v2 80 v3 90 v4 (integer) 0 127.0.0.1:6379> ZRANGE zset1 0 -1 1) "v1" 2) "v2" 3) "v3" 4) "v4" 127.0.0.1:6379> ZRANGE zset1 0 -1 withscores 1) "v1" 2) "60" 3) "v2" 4) "70" 5) "v3" 6) "80" 7) "v4" 8) "90"
#ZRANGEBYSCORE key start end #ZRANGEBYSCORE key start (end:不包含end #ZRANGEBYSCORE key (start (end:不包含start end #ZRANGEBYSCORE key start end limit index num:回傳限制,開始位置index 截取num個類似于分頁
127.0.0.1:6379> ZRANGEBYSCORE zset1 60 90 1) "v1" 2) "v2" 3) "v3" 4) "v4" 127.0.0.1:6379> ZRANGEBYSCORE zset1 60 (90 1) "v1" 2) "v2" 3) "v3" 127.0.0.1:6379> ZRANGEBYSCORE zset1 (60 (90 1) "v2" 2) "v3" 127.0.0.1:6379> ZRANGEBYSCORE zset1 60 90 1) "v1" 2) "v2" 3) "v3" 4) "v4" 127.0.0.1:6379> ZRANGEBYSCORE zset1 60 90 limit 2 2 1) "v3" 2) "v4" 127.0.0.1:6379> ZRANGEBYSCORE zset1 60 90 withscores 1) "v1" 2) "60" 3) "v2" 4) "70" 5) "v3" 6) "80" 7) "v4" 8) "90"
#ZRANGE:洗掉元素,項的值可以是多個 127.0.0.1:6379> ZRANGE zset1 0 -1 1) "v1" 2) "v2" 3) "v3" 4) "v4" 127.0.0.1:6379> ZREM zset1 v1 (integer) 1 127.0.0.1:6379> ZRANGE zset1 0 -1 1) "v2" 2) "v3" 3) "v4" 127.0.0.1:6379> ZREM zset1 v2 v3 (integer) 2 127.0.0.1:6379> ZRANGE zset1 0 -1 1) "v4"
#ZCARD key:獲取集合中元素個數 #ZCOUNT key start end:獲取分數區間內元素個數 #ZRANK zset value:獲取value在zset中的下標位置 #ZSCORE zset value:按照值獲得對應的分數 127.0.0.1:6379> ZADD zset1 60 v1 70 v2 80 v3 90 v4 100 v5 (integer) 5 127.0.0.1:6379> ZCARD zset1 (integer) 5 127.0.0.1:6379> ZCOUNT zset1 60 80 (integer) 3 127.0.0.1:6379> ZRANK zset1 v2 (integer) 1 127.0.0.1:6379> zscore zset1 v1 "60"
#|ZRANK|ZREVRANK key values:正序|逆序獲得下標索引值 127.0.0.1:6379> ZRANGE zset1 0 -1 1) "v1" 2) "v2" 3) "v3" 4) "v4" 5) "v5" 127.0.0.1:6379> ZREVRANK zset1 v1 (integer) 4 127.0.0.1:6379> ZREVRANK zset1 v5 (integer) 0 127.0.0.1:6379> ZRANK zset1 v1 (integer) 0 127.0.0.1:6379> ZRANK zset1 v5 (integer) 4
#ZRANGE|ZREVRANGE :正序|逆序輸出[key,value] 127.0.0.1:6379> ZRANGE zset1 0 -1 withscores 1) "v1" 2) "60" 3) "v2" 4) "70" 5) "v3" 6) "80" 7) "v4" 8) "90" 9) "v5" 10) "100" 127.0.0.1:6379> ZREVRANGE zset1 0 -1 withscores 1) "v5" 2) "100" 3) "v4" 4) "90" 5) "v3" 6) "80" 7) "v2" 8) "70" 9) "v1" 10) "60"
#ZRANGEBYSCORE|ZREVRANGEBYSCORE zset1 90 60 withscores:分數范圍的正|反輸出 127.0.0.1:6379> ZRANGEBYSCORE zset1 60 90 withscores 1) "v1" 2) "60" 3) "v2" 4) "70" 5) "v3" 6) "80" 7) "v4" 8) "90" 127.0.0.1:6379> ZREVRANGEBYSCORE zset1 60 90 withscores (empty list or set) 127.0.0.1:6379> ZREVRANGEBYSCORE zset1 90 60 withscores 1) "v4" 2) "90" 3) "v3" 4) "80" 5) "v2" 6) "70" 7) "v1" 8) "60"
|
參考檔案:Http://redisdoc.com/
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/196587.html
標籤:其他
下一篇:Redis.conf配置
