KEY常用命令
????exists key 測試指定key是否存在
????del key1 key2? 刪除指定key
????type key 返回給定key的value類型
????keys pattern 返回匹配指定模式的所有key(例:keys class*;返回classa,classb,classc)
????rename okey nkey 改名
????dbsize? 返回當(dāng)前數(shù)據(jù)庫的key數(shù)量
????expire key seconds 為key指定過期時間
????ttl key 返回key剩余過期秒數(shù)(Time To Live)不存在返回-2,永不過期返回-1
????select db-index 選擇數(shù)據(jù)庫(共16個)
????move key db-index? 移動到指定數(shù)據(jù)庫
????flushdb 刪除當(dāng)前數(shù)據(jù)庫中所有key
????flushall 刪除所有數(shù)據(jù)庫的所有key
????get keyname? 獲取指定key的值
STRING
????1 string是redis最基本的類型
????2 redis的string可以包含任何數(shù)據(jù),包括jpg圖片或者序列化的對象。
????3 單個value值最大1G字節(jié)。
????4 如果只用string,redis就可以看做被加上持久化特性的memcache。
????set? ? key value? ? ? ? ? 設(shè)置key對應(yīng)的值為string類型的value
????mset? key1 value1 key2 value2 ...? 批量設(shè)置
????mget? key1 key2 ...? ? ? 批量獲取
????incr? key? ? ? ? ? ? ? ? 加加操作,并返回新的值
????decr? key? ? ? ? ? ? ? ? 減減操作,并返回新的值
????incrby key [integer]? ? ? 同incr,加指定值
????decrby key [integer]? ? ? 同decr,減指定值
? ? append key value? ? ? ? ? 給指定的key追加value
????substr key [start] [end]? 返回截取過得key的字符串值
? ? *當(dāng)加減創(chuàng)建的值不存在,會自動創(chuàng)建,做0
LIST
????list 類型其實就是一個雙向鏈表。通過push,pop操作從鏈表的頭部或者尾部添加刪除元素。既可以作棧(先進后出),也可以用作隊列(先進先出)。
????lpush? key string? ? 在key對應(yīng)的list的頭部添加字符串元素
????rpush? key string? ? 在尾部添加
????lpop? key? ? ? ? ? 在list的頭部刪除元素,并返回刪除元素
????rpop? key? ? ? ? ? 從list的尾部刪除元素,并返回刪除元素
????llen? key? ? ? ? ? 返回key對應(yīng)list的長度,key不存在返回0,如果key對應(yīng)類型不是list返回錯誤
????lrange key start end 返回指定區(qū)間內(nèi)的元素
????ltrim? key start end 截取list,保留指定區(qū)間元素
SET
????redis的set是string類型的無序結(jié)合
????set元素最大可以包含(2的32次方-1)個元素
????set集合類型除了基本的添加刪除操作,其他有用的操作還包括集合的取并集(union),交集(intersection),差集(difference)。通過這些可以很容易實現(xiàn)sns(社交網(wǎng)絡(luò)平臺)中的好友推薦功能,不允許有重復(fù)元素。
????sadd key member? ? ? ? 添加一個string元素到key對應(yīng)的set集合中,成功則返回1,如果元素已經(jīng)在集合中返回0,key對應(yīng)的set集合不存在返回錯誤
????srem key member [member]? 從key對應(yīng)的set集合中移除給定元素,成功返回1
????smove p1 p2 member ? 將p1所屬set中的member移動到p2所屬的set中
????scard key? ? 返回set的元素個數(shù)
????sismember key member ? 判斷member是否在set中
????sinter key1 key2 ... ? 取所有給定key的交集(intersection)
????sunion key1 key2 ... ? 取所有給定key的并集
????sdiff? key1 key2 ... ? 取所有給定key的差集
????smembers key ? 返回對應(yīng)set的所有元素,結(jié)果是無序的
ZSET
????和set不同的是每個元素都會關(guān)聯(lián)一個權(quán),通過權(quán)值可以有序的獲取集合中的元素
????zadd key [score] [member] 添加元素到集合,元素在集合中存在則更新對應(yīng)score(即權(quán)值),權(quán)值相等,先入為大
????zrem key member 刪除指定元素,成功返回1,不存在返回0
????zincrby key incr member 按照incr幅度增加對應(yīng)member的score值,返回score值
????zrank key member 返回指定元素在集合中的排名,集合中元素是按照score從小到大排序
????zrevrank key member ? ? ? ? 同上,按照從大到小排序
????zrange key start end 從集合中取指定區(qū)間的元素,返回有序結(jié)果
????zrevrange key start end 返回結(jié)果按照score逆序
????zcard key 返回集合中元素個數(shù)
????zscore key element 返回給定元素對應(yīng)的score
????zremrangerank key min max 刪除集合中排名在給定區(qū)間的元素,通過score從小到大(remove range rank)
????例子:
????zadd test 1 zhangsan
????zadd test 2 lisi
????zrange test 0 1
????zhangsan
????lisi
????因為不允許重復(fù)的成員,可以用來做排行榜。
HASH
????主要用來解決對象存儲需要序列化和反序列化的開銷,或者存為多條數(shù)據(jù)的內(nèi)存開銷。哈??梢灾苯佑胟ey加field進行存儲如姓名,年齡一些信息,而且可以只針對其中一條進行更改。
????hset key field value? ? 設(shè)置hash->field的值為value,如果key不存在,則先創(chuàng)建
????hget key field? 獲取指定的hashfield
????hmget key field1...? ? 批量獲取
????hmset key field1 value1 field2 value2 批量設(shè)置
????hincrby key field integer 將指定key->field 加上給定值
????hexists key field? 測試指定field是否存在
????hdel? key field 刪除指定hash? field
????hkeys key 返回hash 的所有field
????hvals key 返回hash的所有value
????hgetall key 返回hash的所有field和value