Redis學習筆記1

    已經有一段時間麼有寫博客了,換了家公司,最近因爲項目須要,開始瞭解之前沒有接觸過的NoSql(確切的說是做爲緩存使用)之一的Redis數據庫,淺顯的瞭解了一下,以爲蠻有意思,遂寫下筆記開始學習這個之前認爲「高大上」的工具。
redis


一.Redis簡介數據庫

    Redis是一個開源的,使用C語言編寫的,基於內存的Key-Value型數據庫,因爲是基於內存操做,所以其性能很是出色,每秒鐘能夠處理10W次以上的讀寫操做。
編程

    根據官方網站,Redis有許多優勢,包括豐富的數據類型(我的認爲這裏應該用數據結構更合適)、數據持久化(與memcache不一樣)、支持主從複製。
緩存

    Redis的安裝和配置在本次記錄中就不寫了,對於Redis的初步學習,主要是經過熟悉基本操做命令來知道Redis能夠幹什麼,這裏推薦Redis官方網站上的互動學習窗口,用它來學習Redis的基本命令真的很方便,不須要本身再安裝Redis了,讓初學者把注意力集中在使用上,而不至於由於安裝過程的繁瑣致使挫敗感。
安全


二.Redis對於key的操做數據結構

    既然是一個K-V型的數據庫,那麼少不了key和value的概念,key能夠看作是須要存儲數據的一個標識,是一個字符串(惟一),它用來指向/映射所存儲的值(value),而Redis的值(value),也是字符串,可是Redis自己提供了多種數據結構來存儲值(有的書上說是數據類型),這就使得Redis相比memcache而言,有着更爲強大的存儲能力,字符串的key多對應的值不只僅能夠是單一的string類型了,還能夠是集合(set),隊列(list),哈希表(hash)等結構。
工具

    Redis的key使用字符串存儲,可是key中不能出現空格或者換行符。
post

    關於key的基本操做命令,以下所示,只給出基本的幾個,其餘的能夠參考手冊
性能

    

命令 描述
exists   key
測試製定的key是否存在
del    key1  key2........keyn 刪除給定的key
type  key 返回指定的key的數據結構類型(list,set....)
expire key seconds 設定指定的key的過時時間(seconds)
rename oldkey   newkey 重命名oldkey爲newkey


三.Redis支持的value數據結構學習

    Redis支持多種數據存儲結構,每種結構都有其各自的特色和針對性的操做。


    1.String類型

    String類型是二進制安全的。也就是一個key對應一個String類型的字符串,其所支持的命令如表所示:

命令 描述
set  key value 設置某個key所對應的string值
get  key 獲取key對應的string值
mset   key1  value1    key2  value2 ...... 設置多個key及其對應的string值
mget  key1  key2  ......... 獲取多個key的string值


     2.List類型

    List類型表示key對應的value是一個雙向鏈表結構,因此若是學過數據結構的鏈表,就容易理解List的相關操做。

    如下命令中,key表示其對應的數據結構

命令 描述
lpush    key   string  向key對應的列表的頭部添加一個元素
rpush   key   string 向key對應的列表的尾部添加一個元素
llen      key   返回key對應的列表的長度
lrange  key  start end  返回指定區域(start~end,0開始)的元素
lset      key  index   value 設置key對應的列表中指定下標(index)的值
lpop     key 從key對應的列表的頭部刪除並返回刪除的元素
rpop    key 從key對應的列表的尾部刪除並返回刪除的元素

    

    3.Set類型

    這裏的Set其實和數學概念上的Set(集合)是相似的,都有集合的特性,即無序性、互異性(即一個集合中不能有重複的元素)。

    Set類型的優勢是快速查找元素是否存在,能夠用來記錄一些不能重複的數據。

    

命令 描述
sadd   key    member 向給定集合key中添加元素member
srem     key      member 將元素member從給定集合key中刪除
scard    key 返回集合key中元素的個數
sismember  key member 判斷元素member是否在給定集合key中
sinter  key1   key2 ...... 返回給定集合的交集
sunion key1   key2 ...... 返回給定集合的並集
sdiff    key1  key2 ....... 返回全部給定集合的差集
smembers  key 返回給定集合key中全部的元素


    4.Sorted Set類型

   SortedSet類型顧名思義,就是有序集合類型,和集合類型所不一樣的是,SortedSet中每一個元素有一個score做爲權值,使得Sorted Set以此爲依據進行排序。下表中只列出SortedSet特點命令   

命令 描述
zadd  key score   member 將給定元素member加入到集合key中,權值爲score
zincrby key incr member 將給定集合key中的元素member的score增長incr,並從新排序。
zrangebyscore key min  max 返回集合key中給定score區間(min  max)的元素
zscore   key element 返回給定元素對應的score



5.Hash類型

    Hash類型比較特別,每個key對應一個HashTable,增刪改查的時間複雜度都是O(1),這個結構適合存儲對象。用圖表示也許更直觀一些:

    


    從圖裏能夠看出,Hash的存儲是一個key對應一個HashTable,而在HashTable中,又包括字段和值得映射,很像面向對象編程中對象的引用指向對象,而對象自己包括字段和值同樣。因此說HashTable適合存儲對象。

    基本命令如表所示:

    

命令 描述
hset   key  field  value 設置Hash表key中field字段的值
hget  key  field 獲取Hash表key中field字段的值
hmget  key  field1   field2 ....... 獲取多個字段
hmset   key  field1  value1    field2   value2  .... 設置多個字段
hgetall   key
返回Hash表key中全部字段及其值

關於Redis的基本命令操做暫時就記錄這些,前述表中的命令不全,須要的時候能夠查看文檔獲取更詳細的信息,因爲是初學,整個學習過程當中確定有遺漏,誤差並不斷修正,往後會對文章進行修改。

相關文章
相關標籤/搜索