標籤:
今天來學習redis的基礎資料類型,redis中一共有五種資料類型,分別是:string,hash,list,set,zset。下面分別進行介紹。
一、string(字串)
字串類型是redis最基礎的資料類型,它能儲存任何形式的字串,包括位元據。一個字串類型允許儲存的資料最大容量是512M。字串是其他4種資料類型的基礎。
1 字串相關命令
1)GET/SET命令
SET key value #給key賦值GET key #擷取key的值
127.0.0.1:6379> SET str ‘hello,world‘OK127.0.0.1:6379> GET str"hello,world"
當鍵不存在時返回空值。
2)INCR遞增命令
字串類型可以儲存任何形式的字串,當儲存的字串是整數形式時,可以用incr命令讓它自動遞增。
INCR key127.0.0.1:6379> INCR bar(integer) 2127.0.0.1:6379> INCR bar(integer) 3
當鍵不存在時,會自動建立該鍵並從0開始遞增。
2 字串實踐
1)文章訪問量統計
部落格常見的一個功能就是統計文章的訪問量,這裡我們可以為每篇文章使用名為post:id:page.view的鍵來記錄文章的訪問量,每次有人訪問的時候用incr命令為該鍵遞增。
鍵的命名規則:物件類型:對象id:對象屬性
如:user:1:friends 表示id為1的使用者的好友名單,增加易讀性和可維護性。
2)產生自增ID
怎麼為每篇文章標示一個唯一ID呢?在關係型資料庫中可以用auto_increment,但是在redis中可以通過另一種模式實現:對每一類對象使用名為物件類型(複數形式):count的鍵來儲存當前物件類型的數量,沒增加一個新對象就對該值進行遞增。
3)儲存文章資料
文章資料包括標題、內容、發布時間等欄位,而我們知道一個字串類型只能儲存一個字串,那麼如何儲存文章資料呢?因為字串類型可以儲存位元據,可以採用MessagePack進行序列化,速度更快,佔用空間更小。下面是虛擬碼:
#獲得新文章ID$postid = INCR posts:count #將部落格文章諸多欄位序列化成字串$serialpost = serialize($posttitle,$content,$author,$time)#將序列化後的文章儲存到字串中SET post:$postid:data = $serialpost#從redis中讀取id=42的文章資料$serialpost = GET post:42:data#將文章還原序列化成各個欄位$posttitle,$content,$author,$time=unserialize($serialpost)#擷取文章的訪問數量$count = INCR post:42:page.view
3 字串相關擴充命令
1)增加指定整數
INCRBY key increment127.0.0.1:6379> GET goo"2"127.0.0.1:6379> INCRBY goo 3(integer) 5
2)減少指定整數
DECR keyDECRBY key value127.0.0.1:6379> GET goo"5"127.0.0.1:6379> DECR goo(integer) 4127.0.0.1:6379> DECRBY goo 2(integer) 2
3)向尾部追加值
APPEND key value,如果該鍵不存在則將該value設為鍵的值,傳回值是追加後的長度。
127.0.0.1:6379> GET str"hello,world"127.0.0.1:6379> APPEND str ‘,zhao‘(integer) 16127.0.0.1:6379> GET str"hello,world,zhao"
4)擷取字串長度
STRLEN key
127.0.0.1:6379> STRLEN str(integer) 16
5)同時設定/擷取多個索引值
MGET/MSET key1 key2 ....
127.0.0.1:6379> MGET str goo bar1) "hello,world,zhao"2) "2"3) "3"
一、hash(散列類型)
Redis資料類型