3. Redis-資料型別和指令
3.1 redis 系統管理相關指令
DBSIZE | 返回當前資料庫 key 的數量 |
INFO | 返回當前 redis 伺服器狀態和一些統計資訊 |
MONITOR | 實時監聽並返回redis伺服器接收到的所有請求資訊 |
SHUTDOWN | 把資料同步儲存到磁碟上,並關閉redis服務 |
CONFIG GET | parameter 獲取一個 redis 配置引數資訊。(個別引數可能無法獲取) |
CONFIG SET | parameter value 設定一個 redis 配置引數資訊。(個別引數可能無法獲取) |
CONFIG RESETSTAT | 重置 INFO 命令的統計資訊。(重置包括:Keyspace 命中數、Keyspace 錯誤數、 處理命令數,接收連線數、過期 key 數) |
DEBUG OBJECT | key 獲取一個 key 的除錯資訊 |
DEBUG SEGFAULT | 製造一次伺服器當機 |
FLUSHDB | 刪除當前資料庫中所有 key,此方法不會失敗。小心慎用 |
FLUSHALL | 刪除全部資料庫中所有 key,此方法不會失敗。小心慎用 |
3.2 redis 資料型別
3.2.1 String型別
set name aaa | 設定值 key name ,value aaa |
get name | 獲取值 |
del name | 刪除值 |
setnx name bbb | 設定值 key name ,value bbb,如果name這個鍵已經存在值,就不設定 |
setex color 10 red | 設定值 key color,value red,有效期十秒,10秒之後返回nil |
setrange name 2 bbb | 替換name的值,從下標為2開始替換成bbb |
mset k1 v1 k2 v2 k3 v3 | 設定多個值 k1=v1,k2=v2,k3=v3 |
mget name k1 k2 k3 | 同時獲取多個值 |
getset name ccc | 獲取就值,同時設定新值 |
incr age | 自增age + 1 |
incrby age 3 | 自增age + 3 |
decr age | 自減age - 1 |
decrby age 10 | 自減age - 10 |
strlen name | 獲取字串長度 |
append name aaa | 在name的值後面追加內容aaa |
演示:set name aaa,get name,del name,setnx name bbb,setex color 10 red
演示:setrange name 2 bbb
演示:mset k1 v1 k2 v2 k3 v3 , mget name k1 k2 k3
演示:getset name ccc
演示:incr age,incrby age 3
演示:decr age ,decrby age 10
演示:
3.2.2 Hash型別
Hash型別是String型別的 field 和value 的對映表,或者說一個String集合。他特別適合儲存物件,相比較而言,將一個物件型別儲存在Hash型別裡要比儲存在String型別裡佔用更少的記憶體空間,並方便存取整一個物件。
hash 有點像 json 物件。下面用json格式展示
hset user id 1 | 設定hash user={id:1} |
hget user id |
獲取 user.id 的值 |
hmset user id 2 name sen age 26 | 設定hash user={id:2, name:'sen', age:'26'} |
hmget user id name age | 獲取值 user.id, user.name, user.age |
hsetnx user id 3 | 設定hash user={id:3},但是如果 user.id 有值就不賦值 |
hexists user id | 檢視 key 是否存在,存在返回1 ,否則返回0 |
hlen user | 返回 key 的數量 |
hkeys user | 獲取所有的key |
hvals user | 獲取所有的value |
hgetall user | 獲取所有的 key和value |
演示:hset user id 1,hget user id,hmset user id 2 name sen age 26,hmget user id name age
演示:hexists user id,hlen user,hkeys user,hvals user
演示:hgetall user
3.2.3 List 型別
List 型別是一個連結串列結構的集合,其主要功能有 push,pop,獲取元素等。更詳細的說,List型別是一個雙端連結串列的結構。可以通過相關的操作進行集合頭部或者尾部新增刪除元素,list 的設計非常簡單精巧,即可以作為棧,又可以作為佇列。滿足絕大的需求。
lpush list1 left1 | 在list1中頭部插入元素“left1” |
rpush list1 right2 | 在list1中尾部插入元素“right1” |
lrange list1 0 -1 | 返回列表中指定區間內的元素,區間以偏移量 START 和 END 指定。 其中 0 表示列表的第一個元素, 1 表示列表的第二個元素,以此類推。 你也可以使用負數下標,以 -1 表示列表的最後一個元素, -2 表示列表的倒數第二個元素,以此類推。 |
linsert list1 before right1 right0 | 在 list1中,在right1前插入right0 |
lset list1 2 center | 把下標為2的元素改成 center |
lrem list1 2 left2 | 刪除第2在left2元素 |
ltrim list1 1 4 | 保留下標1到4的元素 |
lpop list1 | 從頭部刪除並返回元素 |
rpop list1 | 從尾部刪除並返回元素 |
rpoplpush list1 list2 | 把list1尾部的元素加到list2的頭部 |
lindex list1 1 | 獲取 index 為1 的元素 |
llen list1 | 獲取 list1 的長度 |
演示:lpush list1 left1,rpush list1 right2,lrange list1 0 -1
演示:linsert list1 before right1 right0,lset list1 2 center
演示:lrem list1 2 left2
演示:ltrim list1 1 4,lpop list1,rpop list1
演示:rpoplpush list1 list2,lindex list1 1,llen list1
3.2.4 Set 型別
sadd set1 aaa | 新增一個元素 |
srem set1 aaa | 刪除元素 |
smembers set1 | 檢視 set1 所有元素 |
spop | 隨機刪除一個元素smembers set1 |
sdiff set1 set2 | 返回兩個集合不同的元素 |
sdiffstore set3 set1 set2 | 返回set1,set2集合不同的元素,放到set3中 |
sinter set1 set2 |
取set1,set2集合的交集 |
sinterstore set4 set1 set2 | 取set1,set2集合的交集,放入set4中 |
sunion set1 set2 | 取set1,set2集合的並集 |
sunionstore set5 set1 set2 | 取set1,set2集合的並集,放入set5中 |
smove set1 set2 bbb | 從set1把bbb移到set2中 |
scard set1 | 返回set1的元素個數 |
sismember set1 bbb | 判斷bbb是不是set1中的元素 |
srandmember set1 | 隨機返回一個元素,但是不會刪除 |
演示:sadd set1 aaa,srem set1 aaa,smembers set1
演示:spop set1
演示:sdiff set1 set2
演示:sdiffstore set3 set1 set2
演示:sinter set1 set2,sinterstore set4 set1 set2
演示:sunion set1 set2,sunionstore set5 set1 set2
演示:smove set1 set2 bbb,scard set1,sismember set1 bbb,srandmember set1
3.2.5 ZSet 型別
zadd zset1 1 aaa | zset集合中,新增元素aaa,序號為1 |
zrange zset1 0 -1 | 檢視元素,用法參考lrange |
zrange zset1 0 -1 withscores | 檢視元素,帶序號 |
zrem zset1 aaa | 在zset1刪除aaa |
zincrby zset1 10 ddd | zset1集合,ddd元素序號+10 |
zrangebyscore zset1 1 15 | 取出zset1集合中序號為1-15的元素 |
zcard zset1 | 元素個數 |
zount zset1 1 5 | 序號為1-5之間的元素個數 |
zremrangebyscore zset1 5 10 | 刪除序號5-10之間的元素 |
zremrangebyrank zset1 0 5 | 刪除索引0-5之間的元素 |
演示:zadd zset1 1 aaa,zrange zset1 0 -1,zrange zset1 0 -1 withscores,zrem zset1 aaa
演示:zincrby zset1 10 ddd,zrangebyscore zset1 1 15
演示:zremrangebyscore zset1 5 10
3.3 redis 其他常用命令
keys *:返回所有滿足的 keys * (可以模糊匹配)
exists:判斷某個key是否存在
expire:設定某個key的過期時間,使用ttl檢視剩餘時間。
persist:取消過期時間
select:選擇資料庫 資料庫為0-15,預設進入的是0。
move:將當前資料庫的key轉移到指定的資料庫中。
randomkey:隨機返回資料庫裡的一個key
rename:重新命名key