1. 程式人生 > >3. Redis-資料型別和指令

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