數據庫Redis(一)

Redis數據庫的特色:python

  Redis數據庫屬於nosql數據庫的一種,其存儲於內存中(非硬盤),修改較爲方便。redis

  而Redis數據庫的存儲方式是使用{key:value}方式存儲,相似python基礎中的字典類型,和python中字典格式相比,其基礎格式定義基本雷同:python中字典key值爲不重複的不可變內容,value爲任意對象(字符串、列表、集合、字典);Redis中key爲固定的不重複字符串格式,value爲任意對象(字符串、hash值、列表、集合、有序集合)。sql

  烏班圖中如何使用Redis呢?數據庫

  進入虛擬機後:app

  redis-cli                         進入Redis數據庫nosql

  exit                退出Redis數據庫spa

  sudo service redis start/stop/restart   啓動/關閉/重啓 烏班圖 中的Redis數據庫功能rest

  select n              Redis中默認有16個數據庫,n爲數據庫編號0~15,沒法新建數據庫,默認選擇 n=0code

如何在Redis數據庫中進行增刪改查:對象

  一、value爲字符串類型時:

  建立一個key爲str_a,value爲hello的數據對象:set key value :中文理解,設置key值,value值  

   set str_a hello 

  在上述例子中hello後面加一個_world:append key value :中文理解,在key對應的value後面追加當前value值

   append str_a _world 

  查詢str_a這個key對應的值:get key :中文理解,獲取key對應數據(想到了python字典方法,根據key獲取value) 

   get str_a 輸出結果:"hello_world" 

  刪除srt_a這個key的相關數據:del key:中文理解,刪除key對應數據 

    del str_a 輸出結果:(integer) 1  

  二、value爲hash類型時:

  什麼是hash類型:即key:value對應類型,稱hash類型,在此處能夠簡單用一個例子來理解 {key:{field:value}}

  由於key太多了,防止理解誤差,因此hash類型中的key咱們稱做   field ----> 域

  建立:hset key field value :中文理解下:採用 hash格式 設置  key值  field值 value值

   hset hash_a a 1 

  咱們都知道,字典內的鍵值對能夠有不少,那麼咱們這個hash值內能夠有多個值麼,能夠一次添加多個值麼?答案是確定能夠啊,,,咱們這種豬腦子都能想到的,寫代碼底層的人員確定也會啊。

   hmset hash_a b c 3 d 4 

  增長:也用set,方法和上面一毛同樣

  改:同上+1

  查看:查看的角度有點多,首先咱們要知道去查什麼!

  查看指定的域的值:hget key field

   hget hash_a a 輸出結果:"1" 

  查看全部的域和值:hgetall key

   hgetall hash_a 輸出結果:太長了,本身敲去 

  查看全部的域:hkeys key:field本質上也是鍵值對的key,到這個指定的key裏面,把裏面一層的key都找出來

   hkeys hash_a 

  查看全部的值:hvals key

   hvals hash_a 

  三、當value值爲列表時:

  建立/增長數據:lpush/rpush key value : 中文理解:左邊/右邊增長 key中value的值,關鍵詞lpush/rpush後面第一個單詞爲key,後面全部打包爲列表做爲value的值

   rpush list_a 1 2 3 4 5 6  

  查看:lrange key start stop : l 表明 list 查看key對應值的索引,從start開始,到stop結束(包含頭尾)

   lrange list_a 0 3 輸出結果是:1,2,3,4 

  如何查看對應索引取值呢?

   lindex list 2 輸出結果:3 

  修改:lset key index value: 中文理解: 列表格式設置key對應值的索引號值改成value值

   lset list_a 3 333 

  而後去查看,會發現4變成了333

  刪除:rpop/lpop key :中文理解:左/右邊開始刪除一個數據(????python裏面列表的pop刪除方法????)

   rpop list_a 

  這樣,最後的6就沒了

  四、當value值爲集合時:

  建立/添加數據:sadd key member : 由於集合自己縮寫是set,因此這裏設置不能再用set了,乾脆改爲了add ---> + ,value由於無序性且不重複的特色,用member表示

   sadd s_a 1 1 2 3 4 5 6 

  這裏只存在了6個值,由於1,1,2,3,4,5,6 在這裏面會以{1,2,3,4,5,6,}形式存在,而集合內元素不能夠重複,兩個1,只保留一個

  查看: smembers key 

   smembers key 

  刪除:spop key : 刪除一個值,由於無序,因此....我也不知道他會刪哪一個,隨緣吧

   spop s_a 

   若是我不要隨機刪除呢,我就要把上述數據中的5刪掉!

  使用指定刪除方法:srem key member   (能夠輸入多個值,一塊兒刪除)

    srem s_a 5 

  五、當value值爲有序集合時:

  什麼是有序集合?就是有順序的集合!有順序是什麼概念,有 索 引 【一個元素不能重複的列表!???】這其中有一個增長概念,分組,即某些元素被編成一組,編組與其餘特性概念不衝突,無影響(即不影響順序,無關索引)

  建立/增長:zadd key score member [score2 member2...]    : z表明有序集合zset zset格式建立/增長key值中 分組爲score的value值(能夠寫好幾個),有點繞,看代碼

   zadd zs_a 1 a 2 11 2 9 1 b

  其中的1 2 爲分組,a 11 9 b纔是值,在這其中,a b 爲1組,11 9 爲2組,之因此爲了這樣,多是爲了方便刪除?

  查看:zrange key start stop : 有點眼熟?上面列表那塊的查看方式?沒毛病,畢竟我這裏也是有順序的【zset:其實我就是個有部分集合特徵的列表 [/滑稽] 】 

    zrange zs_a 0 1 

  若是我要看1組內容呢?

  分組查看:zrangebyscore key min max

   zrangeby score zs_a 0 1 

  注意,後面要跟兩個數字,恰恰這倆數字還包含頭尾,,,,,單獨查中間一組怎麼辦?這倆數字能夠同樣啊,,,,1,1這樣就行了[/無語ing]

  刪除:zrem key member/

   zrem zs_a b  

  一次刪一個太慢,我要刪一片兒:

  1)上面那個方法,你後面多寫幾個值,能夠一塊兒刪除;

  2)根據索引刪,切片形式刪除:zremrangebyrank key min max 

   zremrangebyrank zs_a 0 1 

  3)除了索引,咱們還有個分組:zremrangebyscore key min max

   zremrangebyscore zs_a 0 1

  至此,五種value表現形式下的增刪改查基本全了,但除此以外,咱們還有一套操做,針對你建立的數據總體,若是咱們將上述內容比做表格,咱們以前的操做就是在表格中對數據進行增刪改查,那麼,咱們如何對錶格自己進行增刪改查呢?(如何對總體的key進行操做?)

  補充點,全局方法

  查看全部數據的key值:

   keys * 

  刪除鍵值對:del key

   del zs_a 

  查看key是否存在:exists key 

   exists list_a 

  修改key 的值:rename key new_key

   rename str_a stra 

  設置有效時間,時間到了會自動刪除,單位秒:expire key seconds

   expire s_a 100 

  查看有效時間剩餘:ttl key

   ttl s_a 

  取消有效時間限制:prisist key

   pristst s_a  

相關文章
相關標籤/搜索